[Scons-users] Need help debugging my build

Ganssauge, Gottfried Gottfried.Ganssauge at haufe-lexware.com
Thu Jun 4 10:31:35 EDT 2015


My build - which is somewhat large - normally runs fine using scons-local-2.3.4 with python2.7.6 on Ubuntu Linux-14.04

But when I'm starting the same build twice in a row I'd expect it to rebuild nothing at all the second time through.
The actual targets which I request aren't rebuilt in fact but some intermediate targets.

For example:

     gotti at manta ~/source/sourcecode-cd $ scons packages
     scons: Reading SConscript files ...
     ... Lots of configuration checks removed ...
     scons: done reading SConscript files.
     scons: Building targets ...
     Linking OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768
     Linking OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768
     Linking OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/libosrtcl.so.6.0.2768
     OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/osdb.os: In function `mkworkdir':
     /home/gotti/source/sourcecode-cd/OptiSearch/src/cp-iface/osdb.cpp:438: warning: the use of `tempnam' is dangerous, better use `mkstemp'
     OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/osdb.os: In function `mkdtemp':
     /home/gotti/source/sourcecode-cd/OptiSearch/src/cp-iface/osdb.cpp:199: warning: the use of `mktemp' is dangerous, better use `mkstemp'
     or `mkdtemp'
     Linking HitSort/linux-x86_64-gcc/Release/libhitsort.so.5.0.2768
     Linking OSI/osidll/linux-x86_64-gcc/Release/libosi.so.9.0.2768
     Linking OSI/adust/linux-x86_64-gcc/Release/libadjustdll.so.9.0.2768
     Linking OSI/gen_updatedb/linux-x86_64-gcc/Release/libgenupdatedb.so.1.0.2768
     Linking OSI/ositcl/linux-x86_64-gcc/Release/libositcl.so.6.0.2768
     scons: `packages' is up to date.
     scons: done building targets.
     gotti at manta ~/source/sourcecode-cd $ scons/scons.py --debug=explain packages
     scons: Reading SConscript files ...
     ... Lots of configuration checks removed ...
     scons: done reading SConscript files.
     scons: Building targets ...
     scons: rebuilding `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' because the contents of the build action changed
                    action: SharedFlagChecker(target, source, env)
                            VersionedSharedLibrary(target, source, env)
     Linking OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768
     scons: rebuilding `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' because:
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is no longer a dependency
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is a new dependency
     Linking OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768
     scons: rebuilding `OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/libosrtcl.so.6.0.2768' because:
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is no longer a dependency
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is no longer a dependency
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is a new dependency
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is a new dependency
     Linking OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/libosrtcl.so.6.0.2768
     OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/osdb.os: In function `mkworkdir':
     /home/gotti/source/sourcecode-cd/OptiSearch/src/cp-iface/osdb.cpp:438: warning: the use of `tempnam' is dangerous, better use `mkstemp'
     OptiSearch/src/osrtcl/linux-x86_64-gcc/Release/osdb.os: In function `mkdtemp':
     /home/gotti/source/sourcecode-cd/OptiSearch/src/cp-iface/osdb.cpp:199: warning: the use of `mktemp' is dangerous, better use `mkstemp'
     or `mkdtemp'
     scons: rebuilding `HitSort/linux-x86_64-gcc/Release/libhitsort.so.5.0.2768' because the contents of the build action changed
                    action: SharedFlagChecker(target, source, env)
                            VersionedSharedLibrary(target, source, env)
     Linking HitSort/linux-x86_64-gcc/Release/libhitsort.so.5.0.2768
     scons: rebuilding `OSI/osidll/linux-x86_64-gcc/Release/libosi.so.9.0.2768' because:
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is no longer a dependency
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is a new dependency
     Linking OSI/osidll/linux-x86_64-gcc/Release/libosi.so.9.0.2768
     scons: rebuilding `OSI/adust/linux-x86_64-gcc/Release/libadjustdll.so.9.0.2768' because:
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is no longer a dependency
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is a new dependency
     Linking OSI/adust/linux-x86_64-gcc/Release/libadjustdll.so.9.0.2768
     scons: rebuilding `OSI/gen_updatedb/linux-x86_64-gcc/Release/libgenupdatedb.so.1.0.2768' because:
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is no longer a dependency
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is no longer a dependency
                `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768' is a new dependency
                `OptiSearch/src/tools/linux-x86_64-gcc/Release/libosrtools.so.5.0.2768' is a new dependency
     Linking OSI/gen_updatedb/linux-x86_64-gcc/Release/libgenupdatedb.so.1.0.2768
     scons: rebuilding `OSI/ositcl/linux-x86_64-gcc/Release/libositcl.so.6.0.2768' because:
                `OSI/osidll/linux-x86_64-gcc/Release/libosi.so.9.0.2768' is no longer a dependency
                `OSI/osidll/linux-x86_64-gcc/Release/libosi.so.9.0.2768' is a new dependency
     Linking OSI/ositcl/linux-x86_64-gcc/Release/libositcl.so.6.0.2768
     scons: `packages' is up to date.
     scons: done building targets.
     gotti at manta ~/source/sourcecode-cd $

The same happens when I'm doing the same build several times in a row.
When I'm instead running "scons OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768" nothing is rebuilt:

     (gotti at manta 1059) scons OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768 | fgrep -v Checking
     scons: Reading SConscript files ...
     scons: done reading SConscript files.
     scons: Building targets ...
     scons: Nothing to be done for `OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768'.
     scons: done building targets.
     (gotti at manta 1060)

So far so bad.
>From the explanation above I take it, that somehow the signature changes with each linker run, but sconsigns says otherwise:

     $ scons/sconsign.py .sconf_temp/linux-x86_64-gcc/signatures.dblite | fgrep OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768  | sort | uniq -c
           1         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433421673 6658337
          29         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433425407 6658337
          22         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433427119 6658337

After rebuild only 22 of the occurences are updated - and it's only the timestamp

     $ scons/sconsign.py .sconf_temp/linux-x86_64-gcc/signatures.dblite | fgrep OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768  | sort | uniq -c
           1         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433421673 6658337
          29         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433425407 6658337
          22         OptiSearch/src/shlib/linux-x86_64-gcc/Release/libosr.so.10.0.2768: abc0198cce2ea39815990d15a269b25d 1433427485 6658337

That's the point where I need some help.
Why is it that the same derived library is contained in signatures.dblite multiple time with differing timestamps?
Why is it that only some of the occurences are updated?
Why is it that the packages target (which is an alias for debian packages of all stuff built) is not rebuilt although intermediate files are?
I already tried hard to reduce the size of the built to produce a simpler example, but to no avail - the problem doesn't happen with smaller builds :(
I'm quite capable in debugging python code, but I could really use some help with tips or hints where to look ...

Cheers,
Gottfried Ganßauge

Entwickler
Content Engineering & Development


------------------------------------------------------------------
Haufe-Lexware GmbH & Co. KG
Ein Unternehmen der Haufe Gruppe
Munzinger Str. 9, 79111 Freiburg
Tel. +49 761 898-0
E-Mail: Gottfried.Ganssauge at haufe-lexware.com
Internet: http://www.haufe-lexware.com
------------------------------------------------------------------
Kommanditgesellschaft, Sitz und Registergericht Freiburg, HRA 4408
Komplementäre: Haufe-Lexware Verwaltungs GmbH,
Sitz und Registergericht Freiburg, HRB 5557; Martin Laqua
Beiratsvorsitzende: Andrea Haufe
Geschäftsführung: Isabel Blank, Markus Dränert, Jörg Frey,
Birte Hackenjos, Randolf Jessl, Markus Reithwiesner,
Joachim Rotzinger, Dr. Carsten Thies
------------------------------------------------------------------



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150604/02c89026/attachment-0001.html>


More information about the Scons-users mailing list