Significant bugs: - fix problems with file resolution - fix wandering problems - use -v properly - problem when you specify no filters. - segfault when you specify no project - using sscanf() for doing parsing is a bad idea - separation of packages only works now for WR LDAT - calculate full paths, rather than guessing that paths with no directory can be ignored. This requires replacing strace with a custom LD_PRELOAD library Missing features: 1. Removing false positives when building local binaries. Many packages first compile a local binary, then use this local binary to compile some other source for the target. This situation can be detected when local include and libraries are accessed, but then a binary in the target is executed. This should be treated as a warning. 2. Process trees Track the processes that accessed the files, and create a file tree. 3. Correlate to console output Use timestamped console output to correlate to the file accesses, which helps figure out where in a package build a file is being accessed. Create an interactive tool to guide the user through this. 4. Detect when a local binary is accessed when a build system-provided tool could be used Many build systems provide versions of tools that are sometimes found on the hos distribution. This situation can be detected by correlating binaries accessed to a list of build system-provided binaries. 5. Mult-distribution predictive requirements generation Sometimes, it is useful to generate a required package list without having to do the profile on the host. This could be done by having access to that distribution's package database and comparing to a list of files accessed. Note that this can never be accurate, since files are found in different places, and library versions may be different. 6. Know how to read Wind River Linux required.txt files. The following script could be used (thanks to Derek Buitenhuis): #!/usr/bin/perl use strict; use warnings; while() { # Skip comments and blank lines next if (/^#/ or /^\s*\n/); # Only keep the first word s/(^.+)\s.+/$1/; print; }