[Scons-users] Problem with Repository build

Martin Ritter martin.ritter at lmu.de
Wed Aug 3 07:31:30 EDT 2016


Hi all,

we have a problem building our software with SCons versions newer than 
2.2.0 [1] when using env.Repository()

 > $ scons --debug=stacktrace
> scons: done reading SConscript files.
> scons: Building targets ...
> scons: *** [build/Linux_x86_64/opt/alignment/dataobjects/src/MilleData.os] AttributeError : 'NoneType' object has no attribute 'get_contents'
> scons: internal stack trace:
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Job.py", line 199, in start
>     task.prepare()
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Script/Main.py", line 164, in prepare
>     return SCons.Taskmaster.OutOfDateTask.prepare(self)
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Taskmaster.py", line 172, in prepare
>     self.exception_raise()
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Taskmaster.py", line 806, in _find_next_ready_node
>     children = executor.get_all_children()
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Executor.py", line 322, in get_all_children
>     result.extend(target.children())
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/__init__.py", line 1373, in children
>     self.scan()
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/__init__.py", line 1049, in scan
>     executor.scan_sources(self.builder.source_scanner)
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Executor.py", line 479, in scan_sources
>     self.scan(scanner, self.get_all_sources())
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Executor.py", line 496, in scan
>     deps.extend(node.get_implicit_deps(env, scanner, path, kw))
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/__init__.py", line 943, in get_implicit_deps
>     included_deps = [x for x in node.get_found_includes(env, scanner, path) if x not in seen]
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/FS.py", line 2893, in get_found_includes
>     result = [n.disambiguate() for n in scanner(self, env, path)]
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Scanner/__init__.py", line 203, in __call__
>     if self.scan_check and not self.scan_check(node, env):
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Scanner/__init__.py", line 309, in current_check
>     return not node.has_builder() or node.is_up_to_date()
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/FS.py", line 3286, in is_up_to_date
>     if not self.changed(r):
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/FS.py", line 3241, in changed
>     has_changed = SCons.Node.Node.changed(self, node)
>   File "/home/ritter/belle2/scons-2.5/lib/SCons/Node/__init__.py", line 1462, in changed
>     contents = self.get_executor().get_contents()
> scons: building terminated because of errors.


Compilation without the Repository() setup works fine.

I think it is caused by the fact that Node.FS.File.release_target_info() 
sets self.executor to None. If I remove that line it seems to compile 
fine. This error also does not seem to happen for all targets, just for 
a subset of them.

Best Regards,

Martin

[1] it works with 2.2.0, I checked 2.3.6 and 2.5.0, both show the same error


More information about the Scons-users mailing list