binutils: fix parallel make for version 2.36 (#26611)

There was a bug in 2.36.* of missing Makefile dependencies.  The
previous workaround was to require 2.36 to be built serially.  This is
now fixed upstream in 2.37 and this PR adds the patch to restore
parallel make to 2.36.
This commit is contained in:
Mark W. Krentel 2021-10-12 12:01:46 -05:00 committed by GitHub
parent e2a64bb483
commit 2edfccf61d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 7 deletions

View file

@ -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

View file

@ -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