libtool: symlink libtool{ize} to glibtool{ize} (#7060)
On Darwin and other BSD systems, the system 'libtool' and 'libtoolize' are BSD libtool and libtoolize, respectively. Some build systems require the GNU versions of these commands, so BSD package systems tend to name the GNU versions 'glibtool' and 'glibtoolize', respectively, to avoid namespace collisions. A problem with the current libtool package is that it installs the GNU libtool commands as 'libtool' and 'libtoolize', respectively, but build systems on BSD platforms will attempt to run 'glibtool' and 'glibtoolize'. The expedient solution to this problem is to symlink 'libtool' to 'glibtool' and 'libtoolize' to 'glibtoolize', because attempting to patch the detection logic one build system at a time seems impractical.
This commit is contained in:
parent
b5daa51c06
commit
e0082e0564
@ -46,8 +46,24 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
|
||||
join_path(self.prefix.share, 'aclocal'))
|
||||
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
# Automake is very likely to be a build dependency,
|
||||
# so we add the tools it provides to the dependent module
|
||||
executables = ['libtoolize', 'libtool']
|
||||
# Automake is very likely to be a build dependency, so we add
|
||||
# the tools it provides to the dependent module. Some build
|
||||
# systems differentiate between BSD libtool (e.g., Darwin) and
|
||||
# GNU libtool, so also add 'glibtool' and 'glibtoolize' to the
|
||||
# list of executables.
|
||||
executables = ['libtoolize', 'libtool', 'glibtoolize', 'glibtool']
|
||||
for name in executables:
|
||||
setattr(module, name, self._make_executable(name))
|
||||
|
||||
@run_after('install')
|
||||
def post_install(self):
|
||||
# Some platforms name GNU libtool and GNU libtoolize
|
||||
# 'glibtool' and 'glibtoolize', respectively, to differentiate
|
||||
# them from BSD libtool and BSD libtoolize. On these BSD
|
||||
# platforms, build systems sometimes expect to use the assumed
|
||||
# GNU commands glibtool and glibtoolize instead of the BSD
|
||||
# variant; this happens frequently, for instance, on Darwin
|
||||
symlink(join_path(self.prefix.bin, 'libtoolize'),
|
||||
join_path(self.prefix.bin, 'glibtoolize'))
|
||||
symlink(join_path(self.prefix.bin, 'libtoolize'),
|
||||
join_path(self.prefix.bin, 'glibtoolize'))
|
||||
|
Loading…
Reference in New Issue
Block a user