[darwinbuild] -logdeps option
When I try -logdeps: # /usr/local/bin/darwinbuild -build=8A428 -logdeps -nochroot file_cmds ... /usr/share/man/man8/mtree.8 /usr/share/man/man8/rmt.8 file_cmds - 79 files registered. loaded 213 unresolved dependencies. usage: darwinxref [-f db] [-b build] resolveDeps [<project>] # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds usage: darwinxref [-f db] [-b build] resolveDeps [<project>] # Maybe the following is in order? Index: plugins/resolveDeps.c =================================================================== RCS file: /Volumes/src/cvs/od/proj/darwinbuild/darwinxref/plugins/ resolveDeps.c,v retrieving revision 1.2 diff -u -p -u -r1.2 resolveDeps.c --- plugins/resolveDeps.c 17 Jun 2005 23:49:44 -0000 1.2 +++ plugins/resolveDeps.c 10 Jul 2005 06:37:58 -0000 @@ -39,7 +39,7 @@ int resolve_dependencies(const char* bui static int run(CFArrayRef argv) { int res = 0; CFIndex count = CFArrayGetCount(argv); - if (count >= 1) return -1; + if (count > 1) return -1; char* project = (count == 1) ? strdup_cfstr (CFArrayGetValueAtIndex(argv, 0)) : NULL; char* build = strdup_cfstr(DBGetCurrentBuild()); resolve_dependencies(build, project); However, once I do this: # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds file_cmds (8A428) Error: no such table: dependencies (1) SQL: SELECT 1 FROM dependencies WHERE build='8A428' AND project='file_cmds' AND type='build' AND dependency='file_cmds' Error: no such table: dependencies (1) SQL: INSERT INTO dependencies (build,project,type,dependency) VALUES ('8A428','file_cmds','build','file_cmds') file_cmds (build) Error: no such table: dependencies (1) ... My database looks like this: # sqlite3 .xref.db .schema CREATE TABLE files (build text, project text, path text); CREATE TABLE properties (build TEXT, project TEXT, property TEXT, key TEXT, value TEXT); CREATE TABLE unresolved_dependencies (build text, project text, type text, dependency); CREATE INDEX files_index ON files (build, project, path); CREATE INDEX properties_index ON properties (build, project, property, key, value); CREATE INDEX unresolved_dependencies_index ON unresolved_dependencies (build, project, type, dependency); Is "dependencies" just the obvious parallel to "unresolved_dependencies"? Should this be created by loadIndex, or maybe just resolveDeps? Shantonu
Yes, your patch to resolveDeps.c looks correct. I admit I haven't really tested loadDeps and resolveDeps since the Darwin 8.0.1 release. "dependencies" was a parallel to "unresolved_dependencies", however, now all project properties, including dependencies, are stored in the "properties" table. "dependencies" is now a dictionary, with the keys "lib", "header", "build", each of which is an array of project names. Apparently I still have some work to do to make the dependencies modules use the new layout. - Kevin On Jul 9, 2005, at 11:40 PM, Shantonu Sen wrote:
When I try -logdeps:
# /usr/local/bin/darwinbuild -build=8A428 -logdeps -nochroot file_cmds ... /usr/share/man/man8/mtree.8 /usr/share/man/man8/rmt.8 file_cmds - 79 files registered. loaded 213 unresolved dependencies. usage: darwinxref [-f db] [-b build] resolveDeps [<project>] # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds usage: darwinxref [-f db] [-b build] resolveDeps [<project>] #
Maybe the following is in order? Index: plugins/resolveDeps.c =================================================================== RCS file: /Volumes/src/cvs/od/proj/darwinbuild/darwinxref/plugins/ resolveDeps.c,v retrieving revision 1.2 diff -u -p -u -r1.2 resolveDeps.c --- plugins/resolveDeps.c 17 Jun 2005 23:49:44 -0000 1.2 +++ plugins/resolveDeps.c 10 Jul 2005 06:37:58 -0000 @@ -39,7 +39,7 @@ int resolve_dependencies(const char* bui static int run(CFArrayRef argv) { int res = 0; CFIndex count = CFArrayGetCount(argv); - if (count >= 1) return -1; + if (count > 1) return -1; char* project = (count == 1) ? strdup_cfstr(CFArrayGetValueAtIndex(argv, 0)) : NULL; char* build = strdup_cfstr(DBGetCurrentBuild()); resolve_dependencies(build, project);
However, once I do this: # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds file_cmds (8A428) Error: no such table: dependencies (1) SQL: SELECT 1 FROM dependencies WHERE build='8A428' AND project='file_cmds' AND type='build' AND dependency='file_cmds' Error: no such table: dependencies (1) SQL: INSERT INTO dependencies (build,project,type,dependency) VALUES ('8A428','file_cmds','build','file_cmds') file_cmds (build) Error: no such table: dependencies (1) ...
My database looks like this: # sqlite3 .xref.db .schema CREATE TABLE files (build text, project text, path text); CREATE TABLE properties (build TEXT, project TEXT, property TEXT, key TEXT, value TEXT); CREATE TABLE unresolved_dependencies (build text, project text, type text, dependency); CREATE INDEX files_index ON files (build, project, path); CREATE INDEX properties_index ON properties (build, project, property, key, value); CREATE INDEX unresolved_dependencies_index ON unresolved_dependencies (build, project, type, dependency);
Is "dependencies" just the obvious parallel to "unresolved_dependencies"? Should this be created by loadIndex, or maybe just resolveDeps?
Shantonu
Cool, no rush. I was mostly curious about creating build aliases myself for system_cmds so that I wouldn't need to drag in the world (i.e. DirectoryServices.framework) into a chroot to do builds. It's possible I'd need the entire populated database of "unresolved_dependencies", delete system_cmds, rebuild my versions of system_cmds_arch and system_cmds_other, and then call "resolveDeps". Is it even desirable to break apart deps like that (and diverge from the Apple makefiles?). Is that a conversation appropriate to this list, or should it be taken to hackers@? Shantonu On Jul 10, 2005, at 1:18 PM, Kevin Van Vechten wrote:
Yes, your patch to resolveDeps.c looks correct. I admit I haven't really tested loadDeps and resolveDeps since the Darwin 8.0.1 release.
"dependencies" was a parallel to "unresolved_dependencies", however, now all project properties, including dependencies, are stored in the "properties" table.
"dependencies" is now a dictionary, with the keys "lib", "header", "build", each of which is an array of project names.
Apparently I still have some work to do to make the dependencies modules use the new layout.
- Kevin
On Jul 9, 2005, at 11:40 PM, Shantonu Sen wrote:
When I try -logdeps:
# /usr/local/bin/darwinbuild -build=8A428 -logdeps -nochroot file_cmds ... /usr/share/man/man8/mtree.8 /usr/share/man/man8/rmt.8 file_cmds - 79 files registered. loaded 213 unresolved dependencies. usage: darwinxref [-f db] [-b build] resolveDeps [<project>] # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds usage: darwinxref [-f db] [-b build] resolveDeps [<project>] #
Maybe the following is in order? Index: plugins/resolveDeps.c =================================================================== RCS file: /Volumes/src/cvs/od/proj/darwinbuild/darwinxref/plugins/ resolveDeps.c,v retrieving revision 1.2 diff -u -p -u -r1.2 resolveDeps.c --- plugins/resolveDeps.c 17 Jun 2005 23:49:44 -0000 1.2 +++ plugins/resolveDeps.c 10 Jul 2005 06:37:58 -0000 @@ -39,7 +39,7 @@ int resolve_dependencies(const char* bui static int run(CFArrayRef argv) { int res = 0; CFIndex count = CFArrayGetCount(argv); - if (count >= 1) return -1; + if (count > 1) return -1; char* project = (count == 1) ? strdup_cfstr (CFArrayGetValueAtIndex(argv, 0)) : NULL; char* build = strdup_cfstr(DBGetCurrentBuild()); resolve_dependencies(build, project);
However, once I do this: # /usr/local/bin/darwinxref -b 8A428 resolveDeps file_cmds file_cmds (8A428) Error: no such table: dependencies (1) SQL: SELECT 1 FROM dependencies WHERE build='8A428' AND project='file_cmds' AND type='build' AND dependency='file_cmds' Error: no such table: dependencies (1) SQL: INSERT INTO dependencies (build,project,type,dependency) VALUES ('8A428','file_cmds','build','file_cmds') file_cmds (build) Error: no such table: dependencies (1) ...
My database looks like this: # sqlite3 .xref.db .schema CREATE TABLE files (build text, project text, path text); CREATE TABLE properties (build TEXT, project TEXT, property TEXT, key TEXT, value TEXT); CREATE TABLE unresolved_dependencies (build text, project text, type text, dependency); CREATE INDEX files_index ON files (build, project, path); CREATE INDEX properties_index ON properties (build, project, property, key, value); CREATE INDEX unresolved_dependencies_index ON unresolved_dependencies (build, project, type, dependency);
Is "dependencies" just the obvious parallel to "unresolved_dependencies"? Should this be created by loadIndex, or maybe just resolveDeps?
Shantonu
participants (2)
-
Kevin Van Vechten
-
Shantonu Sen