From d8b03d1e379c259781995b861fad8aa12c6fbde7 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 13 Jan 2018 15:50:06 +0100 Subject: glib: Fix python handling (#6910) Newer versions of glib require python. Fix up the python sbangs the same way we already fix up the perl ones. Fixes #6899 --- var/spack/repos/builtin/packages/glib/package.py | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index df73bd5eb3..c5e1ae4425 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -48,6 +48,7 @@ class Glib(AutotoolsPackage): depends_on('zlib') depends_on('gettext') depends_on('perl', type=('build', 'run')) + depends_on('python', type=('build', 'run'), when='@2.53.4:') depends_on('pcre+utf', when='@2.48:') depends_on('util-linux', when='+libmount') @@ -73,10 +74,30 @@ class Glib(AutotoolsPackage): return args - @run_before('install') + @run_before('configure') + def fix_python_path(self): + if not self.spec.satisfies('@2.53.4:'): + return + + files = ['gobject/glib-genmarshal.in', 'gobject/glib-mkenums.in'] + + filter_file('^#!/usr/bin/env @PYTHON@', + '#!/usr/bin/env python', + *files) + + @run_after('install') def filter_sbang(self): - # Filter sbang before install so Spack's sbang hook can fix it up - perl = join_path(self.spec['perl'].prefix.bin, 'perl') - files = ['gobject/glib-mkenums'] + # Revert sbang, so Spack's sbang hook can fix it up (we have to do + # this after install because otherwise the install target will try + # to rebuild files as filter_file updates the timestamps) + if self.spec.satisfies('@2.53.4:'): + pattern = '^#!/usr/bin/env python' + repl = '#!{0}'.format(self.spec['python'].command.path) + files = ['glib-genmarshal', 'glib-mkenums'] + else: + pattern = '^#! /usr/bin/perl' + repl = '#!{0}'.format(self.spec['perl'].command.path) + files = ['glib-mkenums'] - filter_file('^#! /usr/bin/perl', '#!{0}'.format(perl), *files) + files = [join_path(self.prefix.bin, file) for file in files] + filter_file(pattern, repl, *files, backup=False) -- cgit v1.2.3-60-g2f50