gnu: binutils: Work around Bash 4.2 bug.

Fixes a 'binutils-cross-boot0' build failure on mips64el.

Reported at
<https://lists.gnu.org/archive/html/guix-devel/2016-09/msg01083.html>.

* gnu/packages/patches/binutils-mips-bash-bug.patch: New file.
* gnu/packages/base.scm (binutils)[source]: Use it.
* gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
Ludovic Courtès 2016-09-28 22:32:44 +02:00
parent 9e01589469
commit 789f09a073
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 25 additions and 1 deletions

View file

@ -455,6 +455,7 @@ dist_patch_DATA = \
%D%/packages/patches/bigloo-gc-shebangs.patch \
%D%/packages/patches/binutils-ld-new-dtags.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/binutils-mips-bash-bug.patch \
%D%/packages/patches/byobu-writable-status.patch \
%D%/packages/patches/calibre-drop-unrar.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \

View file

@ -386,7 +386,8 @@ (define-public binutils
(base32
"125clslv17xh1sab74343fg6v31msavpmaa1c1394zsqa773g5rn"))
(patches (search-patches "binutils-ld-new-dtags.patch"
"binutils-loongson-workaround.patch"))))
"binutils-loongson-workaround.patch"
"binutils-mips-bash-bug.patch"))))
(build-system gnu-build-system)
;; TODO: Add dependency on zlib + those for Gold.

View file

@ -0,0 +1,22 @@
Bash 4.2.0(1)-release, which we use during bootstrap, does not yield the
"x" case in:
case x"$EMULATION_NAME" in x) ;; *) ;; esac
when 'EMULATION_NAME' is undefined. Bash 4.3.30(1)-release doesn't have this
problem. Work around it.
This Bash bug was fixed
in <http://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-007>.
--- a/ld/emulparams/elf32bmipn32-defs.sh
+++ b/ld/emulparams/elf32bmipn32-defs.sh
@@ -13,7 +13,7 @@ LITTLE_OUTPUT_FORMAT="elf32-littlemips"
TEMPLATE_NAME=elf32
EXTRA_EM_FILE=mipself
-case x"$EMULATION_NAME" in
+case "x$EMULATION_NAME" in
xelf32*n32*) ELFSIZE=32 ;;
xelf64*) ELFSIZE=64 ;;
x) ;;