[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