-import SCons.Node, SCons.Node.FS, SCons.Util, SCons.Errors
+import SCons.Node, SCons.Node.FS, SCons.Util, SCons.Errors, os
#####################################################################
# This IS a hack .. but a very useful one: The hack will remove the
# This needs to be called after all build targets have been set
# up. This is important since the list of object targets needs to be
# complete.
-def build(env):
+def build(env, accept_unknown_tests=False, verbose=False):
env = env.Clone(LIBS = [ '$EXTRA_LIBS' ])
if env.has_key("only_tests"):
only_tests = {}
env.RealBoostUnitTest(target, objects, **kw)
- only_tests = [ k for k,v in only_tests.iteritems() if not v ]
- if only_tests:
- raise SCons.Errors.StopError("Unknown unit tests (only_tests): %s."
- % ", ".join("`%s'" % x for x in only_tests))
+ if verbose and only_tests and not env.GetOption('no_progress'):
+ SCons.Util.display("scons: building tests: " + ", ".join("`%s'" % str(k)
+ for k,v in only_tests.iteritems()
+ if v))
+ if not accept_unknown_tests:
+ only_tests = [ k for k,v in only_tests.iteritems() if not v ]
+ if only_tests:
+ raise SCons.Errors.StopError("Unknown unit tests (only_tests): %s."
+ % ", ".join("`%s'" % x for x in only_tests))
+
+def findSCMChanges(env):
+
+ def scmchanges(dir):
+ if os.popen("cd %s; svnversion" % dir.abspath).read().strip() in ("","exported"):
+ return [ dir.Entry(x)
+ for x in os.popen("cd %s; git ls-files --modified"
+ % dir.abspath).read().strip().split("\n") ]
+ else:
+ return [ dir.Entry(l[7:])
+ for l in os.popen("cd %s; svn status"
+ % dir.abspath).read().rstrip().split("\n")
+ if l[0] == 'M' ]
+
+ changes=scmchanges(env.Dir('#'))
+ for dir in env.Dir('senf/Ext').glob("*"):
+ if isinstance(dir,SCons.Node.FS.Dir):
+ changes.extend(scmchanges(dir))
+ return [ x for x in changes if not isinstance(x,SCons.Node.FS.Dir) ]