[Scons-users] missing platforms (aix, hpux, etc.) in shlib_emitter_names

Malek,Christophe [CMC] Christophe.Malek at ec.gc.ca
Wed Aug 5 14:55:13 EDT 2015


Hi Scons devs,

Hopefully, providing you with a small fix... :)

I am trying to compile Subversoin on AIX from source and noticed that
you are missing platform checks for several platforms in
shlib_emitter_names in SCons/Tool/link.py. I am using the latest version
2.3.6 of SCons but an old version of Python (sorry).

The result is the following exception:
scons: Reading SConscript files ...
IndexError: list index out of range:
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/serf-
1.3.8/SConstruct", line 275:
    lib_shared = env.SharedLibrary(LIBNAME, SOURCES + SHARED_SOURCES)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Environment.py", line 260:
    return MethodWrapper.__call__(self, target, source, *args, **kw)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Environment.py", line 224:
    return self.method(*nargs, **kwargs)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Builder.py", line 631:
    return self._execute(env, target, source, OverrideWarner(kw), ekw)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Builder.py", line 552:
    tlist, slist = self._create_nodes(env, target, source)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Builder.py", line 516:
    target, source = self.emitter(target=tlist, source=slist, env=env)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Builder.py", line 342:
    target, source = e(target, source, env)
  File
"/ssm/net/cmda/thirdparty/15.2-rc1/subversion_1819_aix-7.1-ppc7-64/lib/p
ython2.6/site-packages/SCons/Tool/link.py", line 87:
    target[0].attributes.shlibname = version_names[0]
Traceback (most recent call last):
  File
"/ssm/net/env/master/ssm_10.9_all/lib/ssm.d/python/ssm/package.py", line
233, in install
    self.execute_script("post-install")
  File
"/ssm/net/env/master/ssm_10.9_all/lib/ssm.d/python/ssm/package.py", line
191, in execute_script
    raise Exception("error: execute script failed")
Exception: error: execute script failed

because the version_names variable remains empty after the call to
shlib_emitter_names.

The fix appears to be very simple, as I believe you only need to add the
additional platform to line 113 in link.py:
if platform == 'posix' or platform == 'sunos' or platform == 'aix':
etc.
At least this change appears to work for me.

It might also be nice if you included an "else" condition to the
platform check and throw a better exception when the platform isn't
found.

Hope this helps!
- Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20150805/d146fc00/attachment-0001.html>


More information about the Scons-users mailing list