diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index 3bd2d57fb4..67e4fdd8f5 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -48,6 +48,10 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage): patch('cr16.patch', when='@:2.29.1') patch('update_symbol-2.26.patch', when='@2.26') + # 2.36 is missing some dependencies, this patch allows a parallel build. + # https://sourceware.org/bugzilla/show_bug.cgi?id=27482 + patch('parallel-build-2.36.patch', when='@2.36') + depends_on('zlib') depends_on('diffutils', type='build') depends_on('gettext', when='+nls') @@ -123,13 +127,6 @@ def configure_args(self): return args - # 2.36 is missing some dependencies and requires serial make install. - # https://sourceware.org/bugzilla/show_bug.cgi?id=27482 - @when('@2.36:') - def install(self, spec, prefix): - with working_dir(self.build_directory): - make('-j', '1', *self.install_targets) - @run_after('install') def install_headers(self): # some packages (like TAU) need the ELF headers, so install them diff --git a/var/spack/repos/builtin/packages/binutils/parallel-build-2.36.patch b/var/spack/repos/builtin/packages/binutils/parallel-build-2.36.patch new file mode 100644 index 0000000000..b229cbbbbe --- /dev/null +++ b/var/spack/repos/builtin/packages/binutils/parallel-build-2.36.patch @@ -0,0 +1,53 @@ +This patch fixes parallel make for versions 2.36.*. This is taken +from commit 755ba58ebef0 without the diff for ChangeLog. The changes +to ChangeLog are prepend only, so that diff only applies cleanly to +the previous commit (git parent). + + +diff --git a/Makefile.def b/Makefile.def +index 0cdf044c5c3..364f7f3e011 100644 +--- a/Makefile.def ++++ b/Makefile.def +@@ -448,7 +448,6 @@ dependencies = { module=all-binutils; on=all-intl; }; + dependencies = { module=all-binutils; on=all-gas; }; + dependencies = { module=all-binutils; on=all-libctf; }; + dependencies = { module=all-ld; on=all-libctf; }; +-dependencies = { module=install-ld; on=install-libctf; }; + + // We put install-opcodes before install-binutils because the installed + // binutils might be on PATH, and they might need the shared opcodes +@@ -456,6 +455,14 @@ dependencies = { module=install-ld; on=install-libctf; }; + dependencies = { module=install-binutils; on=install-opcodes; }; + dependencies = { module=install-strip-binutils; on=install-strip-opcodes; }; + ++// Likewise for ld, libctf, and bfd. ++dependencies = { module=install-libctf; on=install-bfd; }; ++dependencies = { module=install-ld; on=install-bfd; }; ++dependencies = { module=install-ld; on=install-libctf; }; ++dependencies = { module=install-strip-libctf; on=install-strip-bfd; }; ++dependencies = { module=install-strip-ld; on=install-strip-bfd; }; ++dependencies = { module=install-strip-ld; on=install-strip-libctf; }; ++ + // libopcodes depends on libbfd + dependencies = { module=install-opcodes; on=install-bfd; }; + dependencies = { module=install-strip-opcodes; on=install-strip-bfd; }; +diff --git a/Makefile.in b/Makefile.in +index 4f82fd0a47f..57da7ec0790 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -52170,9 +52170,14 @@ all-stage3-ld: maybe-all-stage3-libctf + all-stage4-ld: maybe-all-stage4-libctf + all-stageprofile-ld: maybe-all-stageprofile-libctf + all-stagefeedback-ld: maybe-all-stagefeedback-libctf +-install-ld: maybe-install-libctf + install-binutils: maybe-install-opcodes + install-strip-binutils: maybe-install-strip-opcodes ++install-libctf: maybe-install-bfd ++install-ld: maybe-install-bfd ++install-ld: maybe-install-libctf ++install-strip-libctf: maybe-install-strip-bfd ++install-strip-ld: maybe-install-strip-bfd ++install-strip-ld: maybe-install-strip-libctf + install-opcodes: maybe-install-bfd + install-strip-opcodes: maybe-install-strip-bfd + configure-gas: maybe-configure-intl