From 38349605e79ded22a261d3a4410c5f327cba8062 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Fri, 18 Mar 2005 22:40:53 +0000 Subject: [PATCH] Refactor Main.py's Alias lookup to allow customized Alias (sub-)classes. (Stanislav Baranov) git-svn-id: http://scons.tigris.org/svn/scons/trunk@1259 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/CHANGES.txt | 4 ++++ src/engine/SCons/Node/Alias.py | 2 +- src/engine/SCons/Script/Main.py | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/CHANGES.txt b/src/CHANGES.txt index a934bf47..d6edd56d 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -25,6 +25,10 @@ RELEASE 0.97 - XXX - Allow Tools found on a toolpath to import Python modules from their local directory. + From Stanislav Baranov: + + - Make it possible to support with custom Alias (sub-)classes. + From Timothee Besset: - Add support for Objective C/C++ .m and .mm file suffixes (for diff --git a/src/engine/SCons/Node/Alias.py b/src/engine/SCons/Node/Alias.py index c3618382..2730abfe 100644 --- a/src/engine/SCons/Node/Alias.py +++ b/src/engine/SCons/Node/Alias.py @@ -49,7 +49,7 @@ class AliasNameSpace(UserDict.UserDict): self[name] = a return a - def lookup(self, name): + def lookup(self, name, **kw): try: return self[name] except KeyError: diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py index f66f214f..494fbc92 100644 --- a/src/engine/SCons/Script/Main.py +++ b/src/engine/SCons/Script/Main.py @@ -1014,7 +1014,17 @@ def _main(args, parser): if isinstance(x, SCons.Node.Node): node = x else: - node = SCons.Node.Alias.default_ans.lookup(x) + node = None + # Why would ltop be None? Unfortunately this happens. + if ltop == None: ltop = '' + # Curdir becomes important when SCons is called with -u, -C, + # or similar option that changes directory, and so the paths + # of targets given on the command line need to be adjusted. + curdir = os.path.join(os.getcwd(), str(ltop)) + for lookup in SCons.Node.arg2nodes_lookups: + node = lookup(x, curdir=curdir) + if node != None: + break if node is None: node = fs.Entry(x, directory=ltop, create=1) if ttop and not node.is_under(ttop): @@ -1024,7 +1034,7 @@ def _main(args, parser): node = None return node - nodes = filter(lambda x: x is not None, map(Entry, targets)) + nodes = filter(None, map(Entry, targets)) task_class = BuildTask # default action is to build targets opening_message = "Building targets ..." -- 2.26.2