Reproducer for the --debug=explain
case where
a node is reported as removed then immediately
as added - when in fact neither of those is the case.
The three subdirectories contain identical code except for variant dir stuff invocation:
test-novar:
SConscript('src/SConscript')
test-var-dup:
SConscript('src/SConscript', variant_dir='build', duplicate=1)
test-var-nodup:
SConscript('src/SConscript', variant_dir='build', duplicate=0)
Only the third reproduces the issue.
Run once to build the sconsign file.
Editing src/hello.c
so the sig will be changed, should result in:
scons: rebuilding `build/hello.o' because:
`src/hello.c' is no longer a dependency
`src/hello.c' is a new dependency
Edit src/hello.h
so the sig will be changed, should result in:
scons: rebuilding `build/hello.o' because:
`src/hello.c' is no longer a dependency
`src/hello.c' is a new dependency
`src/hello.h' changed
That is, the fact that the source file needs rebuilding seems to be enough to trigger, whether or not the deps changed.