[Scons-users] VariantDir scons crash?
Jean Duthon
duthon.jean at gmail.com
Thu Nov 20 05:37:43 EST 2014
Hello,
You should use sources.extend(["device/Device.cc"]) otherwise your strings
will be considered as arrays.
It might fix your problem
Best regards,
Jean.
2014-11-20 11:08 GMT+01:00 Stijn De Ruyck <Stijn.DeRuyck at onsemi.com>:
> Hi,
>
>
>
> I have a strange problem.
>
>
>
> Short example of what I have:
>
>
>
> variantDir="build/"+env['build']+"/ "
>
> sources = []
>
> sources.extend(Glob("device/*.cc",strings=True))
>
> Export('sources')
>
> Export('env')
>
> env.SConscript(
>
> env['build']+'SConscript',
>
> variant_dir=variantDir,
>
> duplicate=0,
>
> )
>
>
>
> Inside the SConscript I have:
>
>
>
> Import('env')
>
> Import('sources')
>
> env.AppendUnique(CCFLAGS='-g')
>
> env.Program('#dist/'+env['build']+'/mstcore',sources)
>
>
>
> This works. BUT if I replace the Glob inside the sources.extend() with
> literal strings:
>
>
>
> sources.extend("device/Device.cc")
>
> sources.extend("device/Pin.cc")
>
>
>
> SCons crashes:
>
>
>
> *** running SCons 2.3.0
>
> *** SCONSFLAGS: --warn=no-python-version -j 4 -Q build=deepdebug
>
> *** Running with -j 12
>
> *** Build mode: deepdebug
>
> TypeError: Tried to lookup Dir 'build/deepdebug' as a File.:
>
> File "/tmp/scratch/projects/deruycks/mstcore/SConstruct", line 504:
>
> duplicate=0, #whether to duplicate source code to the
> variantDir or not (See ch.15)
>
> File "/usr/lib/scons-2.3.0/SCons/Script/SConscript.py", line 546:
>
> return _SConscript(self.fs, *files, **subst_kw)
>
> File "/usr/lib/scons-2.3.0/SCons/Script/SConscript.py", line 260:
>
> exec _file_ in call_stack[-1].globals
>
> File
> "/tmp/scratch/projects/deruycks/mstcore/build/deepdebug/deepdebugSConscript",
> line 8:
>
> env.Program('#dist/'+env['build']+'/mstcore',sources) #the hash means
> "relative to main SConstruct file" instead of "relative to variantDir"
>
> File "/usr/lib/scons-2.3.0/SCons/Environment.py", line 259:
>
> return MethodWrapper.__call__(self, target, source, *args, **kw)
>
> File "/usr/lib/scons-2.3.0/SCons/Environment.py", line 223:
>
> return self.method(*nargs, **kwargs)
>
> File "/usr/lib/scons-2.3.0/SCons/Builder.py", line 632:
>
> return self._execute(env, target, source, OverrideWarner(kw), ekw)
>
> File "/usr/lib/scons-2.3.0/SCons/Builder.py", line 540:
>
> source = self.src_builder_sources(env, source, overwarn)
>
> File "/usr/lib/scons-2.3.0/SCons/Builder.py", line 757:
>
> return env.arg2nodes(result, source_factory)
>
> File "/usr/lib/scons-2.3.0/SCons/Environment.py", line 485:
>
> v = node_factory(self.subst(v, **kw))
>
> File "/usr/lib/scons-2.3.0/SCons/Node/FS.py", line 1339:
>
> return self._lookup(name, directory, File, create)
>
> File "/usr/lib/scons-2.3.0/SCons/Node/FS.py", line 1318:
>
> return root._lookup_abs(p, fsclass, create)
>
> File "/usr/lib/scons-2.3.0/SCons/Node/FS.py", line 2223:
>
> result.must_be_same(klass)
>
> File "/usr/lib/scons-2.3.0/SCons/Node/FS.py", line 625:
>
> raise TypeError("Tried to lookup %s '%s' as a %s." %\
>
>
>
> The error doesn’t make any sense to me…
>
>
>
> PS: why I use strings=True in the Glob is so Glob would return strings
> instead of Nodes. In my example, if Glob would return Nodes to store in the
> sources list, build output would always be sent to the source directory
> instead of the variantDir… I got that fixed by letting Glob return strings…
>
>
>
>
>
> Stijn De Ruyck
>
> Test Methodology Software Engineer
>
> ON Semiconductor
>
> Tel: +32 55 33 29 36
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20141120/be72cec1/attachment-0001.html>
More information about the Scons-users
mailing list