diff options
author | George Hartzell <hartzell@alerce.com> | 2018-01-09 07:40:09 -0800 |
---|---|---|
committer | Adam J. Stewart <ajstewart426@gmail.com> | 2018-01-09 09:40:09 -0600 |
commit | ffa20d217194a0424bbe2f9383bd878238bbffcb (patch) | |
tree | b46565b50d57a1b938741c804399564a76235b8d | |
parent | 43f98dc0d505e7829e5b37a983017a4a7f844d04 (diff) | |
download | spack-ffa20d217194a0424bbe2f9383bd878238bbffcb.tar.gz spack-ffa20d217194a0424bbe2f9383bd878238bbffcb.tar.bz2 spack-ffa20d217194a0424bbe2f9383bd878238bbffcb.tar.xz spack-ffa20d217194a0424bbe2f9383bd878238bbffcb.zip |
[WIP] Fix git gettext/libintl handling (builds on ubuntu) (#6859)
* Fix git on ubuntu, first cut
Spack needs to pass information about where the linker
can find `libintl`. We're currently using `LDFLAGS` to do so.
The `LDFLAGS` info is pasted into the command line upstream
of the a file (`libgit.a`) that includes unresolved symbols that
need that library. This fails on Ubuntu, although it seems to
work on CentOS (see #6841).
This change allows git to build on a Ubuntu 16.04.3 droplet.
TODO: test on other platforms...
* Add a bit of useful commentary
-rw-r--r-- | var/spack/repos/builtin/packages/git/package.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 550d269771..dac49b4500 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -165,13 +165,29 @@ class Git(AutotoolsPackage): depends_on('libtool', type='build') depends_on('m4', type='build') + # See the comment in setup_environment re EXTLIBS. + def patch(self): + filter_file(r'^EXTLIBS =$', + '#EXTLIBS =', + 'Makefile') + def setup_environment(self, spack_env, run_env): - # This is done to avoid failures when git is an external package. + # We use EXTLIBS rather than LDFLAGS so that git's Makefile + # inserts the information into the proper place in the link commands + # (alongside the # other libraries/paths that configure discovers). + # LDFLAGS is inserted *before* libgit.a, which requires libintl. + # EXTFLAGS is inserted *after* libgit.a. + # This depends on the patch method above, which keeps the Makefile + # from stepping on the value that we pass in via the environment. + # + # The test avoids failures when git is an external package. # In that case the node in the DAG gets truncated and git DOES NOT # have a gettext dependency. if 'gettext' in self.spec: - spack_env.append_flags('LDFLAGS', '-L{0} -lintl'.format( + spack_env.append_flags('EXTLIBS', '-L{0} -lintl'.format( self.spec['gettext'].prefix.lib)) + spack_env.append_flags('CFLAGS', '-I{0}'.format( + self.spec['gettext'].prefix.include)) def configure_args(self): spec = self.spec |