On Wed, Jul 31, 2013 at 2:18 PM, Jerry James <loganjerry(a)gmail.com> wrote:
Neither my python-fu nor my scons-fu is great enough for me to figure
out
how to work around this problem. Can any python masters on this list see a
way to work around the bug?
This is
https://bugzilla.redhat.com/show_bug.cgi?id=974257 for anybody
interested.
Well, I "fixed" it by applying the following patch. Close your eyes now,
lest they explode:
--- SConstruct.orig 2013-01-29 15:37:01.000000000 -0700
+++ SConstruct 2013-08-01 15:20:08.695760012 -0600
@@ -561,16 +561,14 @@
"""Creates soname."""
target = str(env.subst(target))
- import re
- soPattern = re.compile('(.*)\.[0-9]*\.[^.]*$', re.I|re.S)
- soname = soPattern.findall(path.basename(target))
-
+ from subprocess import check_output
+ basename = path.basename(target)
+ if len(basename) == 0:
+ return ''
+ soname = check_output('sed \'s/\.[0-9]*\.[0-9]*$//\' <<< ' +
basename,
shell=True).rstrip()
if len(soname) > 0:
- return prefix + soname[0] + suffix
+ return prefix + soname + suffix
else:
- if env['PLATFORM']=="darwin":
- return prefix + path.basename(target) + suffix
-
return ''
@@ -1103,16 +1101,14 @@
def SymlinkReadableLibname(files):
""" Generate symbolik link with more readable library
name."""
+ from subprocess import check_output
suffix = env.subst('$SHLIBVERSIONSUFFIX')
simplesuffix = env.subst('$SHLIBSUFFIX')
result = []
- import re
- soPattern = re.compile('(.*)\.[0-9]*\.[0-9]*$', re.I|re.S)
- sonameversion =
soPattern.findall(path.basename(env.subst('$LIBRARY_VERSION')))[0]
for fname in files:
fname = str(fname)
- soname = soPattern.sub(r'\1', fname)
+ soname = check_output('sed \'s/\.[0-9]*\.[0-9]*$//\' <<<
' +
fname, shell=True).rstrip()
versionname = fname.replace('.' + env.subst('$LIBRARY_VERSION'),
'')
simple = fname.replace(suffix, simplesuffix)
But it would be much, much better if the python regular expression engine
were fixed. Are any of the python maintainers seriously looking at the
upstream patch? If not, could you please?
--
Jerry James
http://www.jamezone.org/