Skip to content
Snippets Groups Projects
Commit e0082e05 authored by Geoffrey Oxberry's avatar Geoffrey Oxberry Committed by Peter Scheibel
Browse files

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.
parent b5daa51c
No related branches found
No related tags found
No related merge requests found
......@@ -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'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment