Yes, you are right and that is intentional. Some of us discussed this (perhaps off-list), and Brad's earlier version had another test similar to what you're proposing. However, you could have multiple build directories under your EXTRAS dir (e.g., extras/x86-64/build, extras/x86-32/build, and extras/arm/build) and you wouldn't want to recurse down any of those since they would all have undesirable SConscript symlinks, even though only one of them is the one you're using. So it seems there's no simple way to know if a directory called 'build' should be traversed or not, but overall it seemed like the odds of another random directory called 'build' being a build directory was much much higher than the odds of it being filled with source you really needed to compile, and as a bonus it made the code simpler, so we went with the current version.
Plus there's always a workaround of "don't name any of your source directories 'build'", which doesn't seem terribly onerous. Steve On Wed, Apr 20, 2011 at 7:22 PM, Gabe Black <gbl...@eecs.umich.edu> wrote: > It's probably a bit late to bring this up, but won't this remove -all- > directories called build, not just -the- build directory? There's an os > function that checks if two directories are the same. We can use that to > compare the actual build directory with whatever we're recursing down. That > would even catch hard links, I think, although hard linking your build > directory would be a little weird. > > Gabe > > On 4/20/2011 11:20 AM, Brad Danofsky wrote: >> >> changeset f52ece27e20d in /z/repo/m5 >> details: http://repo.m5sim.org/m5?cmd=changeset;node=f52ece27e20d >> description: >> scons: Allow the build directory live under an EXTRAS directory >> >> diffstat: >> >> src/SConscript | 4 ++++ >> 1 files changed, 4 insertions(+), 0 deletions(-) >> >> diffs (14 lines): >> >> diff -r ee4e795343bf -r f52ece27e20d src/SConscript >> --- a/src/SConscript Tue Apr 19 18:45:23 2011 -0700 >> +++ b/src/SConscript Wed Apr 20 11:14:51 2011 -0700 >> @@ -320,6 +320,10 @@ >> for extra_dir in extras_dir_list: >> prefix_len = len(dirname(extra_dir)) + 1 >> for root, dirs, files in os.walk(extra_dir, topdown=True): >> + # if build lives in the extras directory, don't walk down it >> + if 'build' in dirs: >> + dirs.remove('build') >> + >> if 'SConscript' in files: >> build_dir = joinpath(env['BUILDDIR'], root[prefix_len:]) >> SConscript(joinpath(root, 'SConscript'), >> variant_dir=build_dir) >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev >> > > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev