Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-5756

Update Scons to v2.5.0

    XMLWordPrintable

    Details

      Description

      Scons 2.5.0 came out over the weekend. There were many fixes to the dependency determination code. The next version of Scons is intended to be 3.0 which will be the first version to support Python 3. Since we fully intend to switch to Python 3.0 in the summer it is prudent for us to ensuer that 2.5.0 works fine before switching to 3.0.0 so that we do not get confused as to why there is breakage in jumping straight to 3.0.0.

        Attachments

          Issue Links

            Activity

            Hide
            tjenness Tim Jenness added a comment - - edited

            scons 2.4.1 tickled an inconsistency in the partition package relating to #src/ vs */. This has been fixed with approval from Serge Monkewitz. Unfortunately it does not work on older scons so the fix in partition has to wait until scons is upgraded.

            Show
            tjenness Tim Jenness added a comment - - edited scons 2.4.1 tickled an inconsistency in the partition package relating to #src/ vs */ . This has been fixed with approval from Serge Monkewitz . Unfortunately it does not work on older scons so the fix in partition has to wait until scons is upgraded.
            Hide
            tjenness Tim Jenness added a comment -

            With scons 2.5.0 base fails to pass tests on Linux because of an error during import of SWIG wrappers:

            Fatal Python error: PyThreadState_Get: no current thread
            

            This seems to be caused by a change in the way the LoadableModule target is implemented since it adds two new options to the link command:

            -Wl,-Bsymbolic -Wl,-soname=
            

            It is the -Bsymbolic option that is causing the trouble. SharedLibraryModule did not pick up this new behavior.

            Show
            tjenness Tim Jenness added a comment - With scons 2.5.0 base fails to pass tests on Linux because of an error during import of SWIG wrappers: Fatal Python error: PyThreadState_Get: no current thread This seems to be caused by a change in the way the LoadableModule target is implemented since it adds two new options to the link command: -Wl,-Bsymbolic -Wl,-soname= It is the -Bsymbolic option that is causing the trouble. SharedLibraryModule did not pick up this new behavior.
            Hide
            tjenness Tim Jenness added a comment -

            This patch to sconsUtils fixes the problem:

            diff --git a/python/lsst/sconsUtils/builders.py b/python/lsst/sconsUtils/builders.py
            index d631dde..95f5879 100644
            --- a/python/lsst/sconsUtils/builders.py
            +++ b/python/lsst/sconsUtils/builders.py
            @@ -42,6 +42,7 @@ def SwigLoadableModule(self, target, source, **keywords):
                 try:
                     if myenv.whichCc == "gcc":
                         myenv.Append(CCFLAGS=["-fno-strict-aliasing"])
            +            myenv['SHLIBVERSIONFLAGS']=""
                 except AttributeError:
                     pass
                 return myenv.LoadableModule(target, source, **keywords)
            

            The documentation implies that this variable should only be accessed if SHLIBVERSION is set and it seems that SharedLibraryModule does not have the problem and we don't set the shared library version number.

            Show
            tjenness Tim Jenness added a comment - This patch to sconsUtils fixes the problem: diff --git a/python/lsst/sconsUtils/builders.py b/python/lsst/sconsUtils/builders.py index d631dde..95f5879 100644 --- a/python/lsst/sconsUtils/builders.py +++ b/python/lsst/sconsUtils/builders.py @@ -42,6 +42,7 @@ def SwigLoadableModule(self, target, source, **keywords): try: if myenv.whichCc == "gcc": myenv.Append(CCFLAGS=["-fno-strict-aliasing"]) + myenv['SHLIBVERSIONFLAGS']="" except AttributeError: pass return myenv.LoadableModule(target, source, **keywords) The documentation implies that this variable should only be accessed if SHLIBVERSION is set and it seems that SharedLibraryModule does not have the problem and we don't set the shared library version number.
            Hide
            tjenness Tim Jenness added a comment -

            The scons team have acknowledged there is a bug (probably introduced in v2.4.1). They have an example patch at https://bitbucket.org/scons/scons/pull-requests/319/fixed-issue-with-_xxxxxxversionflags

            Show
            tjenness Tim Jenness added a comment - The scons team have acknowledged there is a bug (probably introduced in v2.4.1). They have an example patch at https://bitbucket.org/scons/scons/pull-requests/319/fixed-issue-with-_xxxxxxversionflags
            Hide
            tjenness Tim Jenness added a comment -

            The experimental patch provided by the Scons developers fixes the problem and allows everything to be built on Jenkins without the sconsUtils patch. We can do this upgrade any time but should probably wait until v12.0 is shipped (DM-6057).

            Show
            tjenness Tim Jenness added a comment - The experimental patch provided by the Scons developers fixes the problem and allows everything to be built on Jenkins without the sconsUtils patch. We can do this upgrade any time but should probably wait until v12.0 is shipped ( DM-6057 ).
            Hide
            tjenness Tim Jenness added a comment -

            Scons has been updated to 2.5.0 and the previously approved patch to partition has been re-applied.

            Show
            tjenness Tim Jenness added a comment - Scons has been updated to 2.5.0 and the previously approved patch to partition has been re-applied.

              People

              Assignee:
              tjenness Tim Jenness
              Reporter:
              tjenness Tim Jenness
              Watchers:
              Tim Jenness
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Jenkins

                  No builds found.