X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdatatransform.cpp;h=7b221b3c0bc7e16c4cf4088873d12770bfced578;hb=92ea7eac95040f2f4fce0bbcd799800e7701118e;hp=31aaa378b2be35529a5a8d8336e59142f41c12f3;hpb=f0b65135c4a9d1b2a90ae446c27837b50ba6ba35;p=builder.git diff --git a/source/datatransform.cpp b/source/datatransform.cpp index 31aaa37..7b221b3 100644 --- a/source/datatransform.cpp +++ b/source/datatransform.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -16,14 +17,17 @@ DataTransform::DataTransform(Builder &b, const Component &c, const FS::Path &p): FileTarget(b, c.get_package(), p) { component = &c; + + if(FS::Stat st = FS::lstat(FS::dirname(path))) + dir_mtime = st.get_modify_time(); } void DataTransform::find_dependencies() { list files; Cache &cache = component->get_package().get_cache(); - // XXX Should check directory mtime as well - if(mtime dir_files; + vector dir_files; while(!in.eof()) { DataFile::Statement st = parser.parse(); @@ -48,7 +52,7 @@ void DataTransform::find_dependencies() for(DataFile::Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) { Regex re(i->get()); - for(list::const_iterator j=dir_files.begin(); j!=dir_files.end(); ++j) + for(vector::const_iterator j=dir_files.begin(); j!=dir_files.end(); ++j) if(re.match(*j)) files.push_back(*j); } @@ -64,8 +68,8 @@ void DataTransform::find_dependencies() { FS::Path file_path = FS::dirname(path)/ *i; if(Target *tgt = builder.get_vfs().get_target(file_path)) - add_dependency(*tgt); + add_transitive_dependency(*tgt); else - add_dependency(*new File(builder, *package, file_path)); + add_transitive_dependency(*new File(builder, *package, file_path)); } }