# Update Scons to v2.5.0

XMLWordPrintable

#### Details

• Type: Improvement
• Status: Done
• Resolution: Done
• Fix Version/s: None
• Component/s:
• Labels:
None
• Story Points:
2
• Team:
Architecture

#### 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.

#### Activity

Hide
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
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
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
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
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
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
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
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
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
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
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
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:
Tim Jenness
Reporter:
Tim Jenness
Watchers:
Tim Jenness
0 Vote for this issue
Watchers:
1 Start watching this issue

#### Dates

Created:
Updated:
Resolved:

#### Jenkins

No builds found.