summary refs log tree commit diff
path: root/gnu/packages/base.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2017-04-26 13:03:48 +0200
committerRicardo Wurmus <rekado@elephly.net>2017-04-29 23:31:35 +0200
commitb2fd8f63679aa4f244c36fdca62f23c00b8eded9 (patch)
tree399d35304a4a9d9624e06897ecee53ae9ec6e653 /gnu/packages/base.scm
parente18e17ea4ea9172402e782d69477bf15c1c25776 (diff)
downloadguix-b2fd8f63679aa4f244c36fdca62f23c00b8eded9.tar.gz
gnu: glibc/linux: Fix runtime crashes on i686 systems.
* gnu/packages/patches/glibc-memchr-overflow-i686.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/commencement.scm (glibc-final-with-bootstrap-bash)[native-inputs]:
Add the patch conditionally for i686 systems.
* gnu/packages/base.scm (glibc/linux)[native-inputs]: Add the patch
conditionally for i686 systems.
[arguments]: Apply the patch conditionally on i686 systems.
Diffstat (limited to 'gnu/packages/base.scm')
-rw-r--r--gnu/packages/base.scm20
1 files changed, 19 insertions, 1 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 9fcca45a54..6dc9e97c34 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -666,6 +666,16 @@ store.")
                         ;; 4.7.1.
                         ((" -lgcc_s") ""))
 
+                      ;; Apply patch only on i686.
+                      ;; TODO: Move the patch to 'patches' in the next update cycle.
+                      ,@(if (string-prefix? "i686" (or (%current-target-system)
+                                                       (%current-system)))
+                            `(zero? (system* "patch" "-p1" "--force"
+                                             "--input"
+                                             (assoc-ref native-inputs
+                                                        "glibc-memchr-overflow-i686.patch")))
+                            '())
+
                       ;; Have `system' use that Bash.
                       (substitute* "sysdeps/posix/system.c"
                         (("#define[[:blank:]]+SHELL_PATH.*$")
@@ -709,7 +719,15 @@ store.")
    ;; install the message catalogs, with 'msgfmt'.
    (native-inputs `(("texinfo" ,texinfo)
                     ("perl" ,perl)
-                    ("gettext" ,gettext-minimal)))
+                    ("gettext" ,gettext-minimal)
+
+                    ;; Apply this patch only on i686 to avoid a full rebuild.
+                    ;; TODO: Move to 'patches' in the next update cycle.
+                    ,@(if (string-prefix? "i686" (or (%current-target-system)
+                                                     (%current-system)))
+                          `(("glibc-memchr-overflow-i686.patch"
+                             ,(search-patch "glibc-memchr-overflow-i686.patch")))
+                          '())))
 
    (native-search-paths
     ;; Search path for packages that provide locale data.  This is useful