]> git.tdb.fi Git - builder.git/blobdiff - source/datatransform.cpp
Fix DataCollection dependencies
[builder.git] / source / datatransform.cpp
index 67b892ede81de5f8ce1fda4db26dfff666870a35..e45c80a69085f4e68d51dffc8005476d7ecf206c 100644 (file)
@@ -28,15 +28,23 @@ void DataTransform::find_dependencies()
        else
        {
                builder.get_logger().log("files", format("Reading imports from %s", path.str()));
-
-               list<string> dir_files = list_files(FS::dirname(path));
                IO::File in(path.str());
                DataFile::Parser parser(in, path.str());
+
+               list<string> dir_files;
                while(!in.eof())
                {
                        DataFile::Statement st = parser.parse();
                        if(st.keyword=="for_each")
                        {
+                               // There's bound to be at least one file: the transform itself
+                               if(dir_files.empty())
+                               {
+                                       FS::Path dir = FS::dirname(path);
+                                       builder.get_logger().log("files", format("Traversing %s", dir.str()));
+                                       dir_files = list_files(dir);
+                               }
+
                                for(DataFile::Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i)
                                {
                                        Regex re(i->get<string>());
@@ -56,8 +64,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));
        }
 }