Changed: #1440 Restructure functions

--HG--
branch : build_pipeline_v3
hg/feature/build_pipeline_v3
kaetemi 12 years ago
parent fa019ede3b
commit fe18d358c1

@ -541,6 +541,26 @@ public:
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
bool isFileDependency(const std::string &path)
{
if (m_ListDependentFiles.find(path) == m_ListDependentFiles.end()) // check if it's directly in the dependent files
{
// Not found!
std::string pathParent = path.substr(0, path.find_last_of('/') + 1);
if (m_ListDependentDirectories.find(pathParent) == m_ListDependentDirectories.end()) // check if it's inside one of the dependent directories
{
// Still not found!
return false;
}
}
return true;
}
bool isDirectoryDependency(const std::string &path)
{
return m_ListDependentDirectories.find(path) != m_ListDependentDirectories.end();
}
/// Returns false if the file does not need to be built, or if an error occured. /// Returns false if the file does not need to be built, or if an error occured.
/// Must verify needsExit() afterwards. /// Must verify needsExit() afterwards.
/// Input paths may be files or directories. /// Input paths may be files or directories.
@ -557,7 +577,7 @@ public:
if (path[path.size() - 1] == '/') // isDirectory if (path[path.size() - 1] == '/') // isDirectory
{ {
// Check if this directory is in the dependencies. // Check if this directory is in the dependencies.
if (m_ListDependentDirectories.find(path) == m_ListDependentDirectories.end()) if (!isDirectoryDependency(path))
{ {
m_SubTaskResult = FINISH_ERROR; m_SubTaskResult = FINISH_ERROR;
m_SubTaskErrorMessage = std::string("Directory '") + path + "' is not part of the dependencies"; m_SubTaskErrorMessage = std::string("Directory '") + path + "' is not part of the dependencies";
@ -604,7 +624,7 @@ public:
else // isFile else // isFile
{ {
// Check if this file is in the dependencies. // Check if this file is in the dependencies.
if (m_ListDependentFiles.find(path) == m_ListDependentFiles.end()) if (!isFileDependency(path))
{ {
m_SubTaskResult = FINISH_ERROR; m_SubTaskResult = FINISH_ERROR;
m_SubTaskErrorMessage = std::string("File '") + path + "' is not part of the dependencies"; m_SubTaskErrorMessage = std::string("File '") + path + "' is not part of the dependencies";
@ -615,6 +635,7 @@ public:
|| m_ListInputChanged.find(path) != m_ListInputChanged.end() || m_ListInputChanged.find(path) != m_ListInputChanged.end()
|| m_ListInputRemoved.find(path) != m_ListInputRemoved.end()) || m_ListInputRemoved.find(path) != m_ListInputRemoved.end())
{ {
// Found!
nldebug("Found added/changed/removed input file '%s', rebuild", path.c_str()); nldebug("Found added/changed/removed input file '%s', rebuild", path.c_str());
m_SubTaskResult = FINISH_SUCCESS; m_SubTaskResult = FINISH_SUCCESS;
return true; // Rebuild. return true; // Rebuild.
@ -633,6 +654,7 @@ public:
if (m_ListOutputRemoved.find(path) != m_ListOutputRemoved.end()) if (m_ListOutputRemoved.find(path) != m_ListOutputRemoved.end())
{ {
nldebug("Found removed output file '%s', rebuild", path.c_str()); nldebug("Found removed output file '%s', rebuild", path.c_str());
m_SubTaskResult = FINISH_SUCCESS;
return true; return true;
} }
if (m_ListOutputChanged.find(path) != m_ListOutputChanged.end()) if (m_ListOutputChanged.find(path) != m_ListOutputChanged.end())
@ -640,6 +662,7 @@ public:
nlwarning("Changed output files not implemented yet. Previous build was likely incomplete. Please wipe the output directory. Rebuilding anyways"); nlwarning("Changed output files not implemented yet. Previous build was likely incomplete. Please wipe the output directory. Rebuilding anyways");
// For now always rebuild and don't check if the output file is up-to-date from a previous incomplete build. // For now always rebuild and don't check if the output file is up-to-date from a previous incomplete build.
nldebug("Found changed output file '%s', rebuild", path.c_str()); nldebug("Found changed output file '%s', rebuild", path.c_str());
m_SubTaskResult = FINISH_SUCCESS;
return true; return true;
//m_SubTaskResult = FINISH_ERROR; //m_SubTaskResult = FINISH_ERROR;
//m_SubTaskErrorMessage = std::string("Changed output files not implemented yet. Previous build was likely incomplete. Please wipe the output directory"); //m_SubTaskErrorMessage = std::string("Changed output files not implemented yet. Previous build was likely incomplete. Please wipe the output directory");

Loading…
Cancel
Save