From 00e79195a53717435933173dee055f5c430850d2 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Fri, 18 Jul 2014 10:16:54 +0200 Subject: [PATCH 01/28] gnu: Enable tests for patch. * gnu/packages/base.scm (patch): Enable test and add "ed" as input. --- gnu/packages/base.scm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index c280cff198..005e1c000b 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -28,6 +28,7 @@ #:use-module (gnu packages bootstrap) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) + #:use-module (gnu packages ed) #:use-module (gnu packages gawk) #:use-module (gnu packages guile) #:use-module (gnu packages multiprecision) @@ -164,12 +165,9 @@ standard utility.") (base32 "1sqckf560pzwgniy00vcpdv2c9c11s4cmhlm14yqgg8avd3bl94i")))) (build-system gnu-build-system) - (native-inputs '()) ; FIXME: needs `ed' for the tests - (arguments - '(#:tests? #f) + (native-inputs `(("ed", ed))) ;; TODO: When cross-compiling, add this: ;; '(#:configure-flags '("ac_cv_func_strnlen_working=yes")) - ) (synopsis "Apply differences to originals, with optional backups") (description "Patch is a program that applies changes to files based on differences From 5c47b06b4370e7d6590b0c75404d694a52897293 Mon Sep 17 00:00:00 2001 From: Jason Self Date: Sun, 20 Jul 2014 06:55:33 -0700 Subject: [PATCH 02/28] gnu: acl: Update to 2.2.52. * gnu/packages/acl.scm (acl): Update to version 2.2.52. --- gnu/packages/acl.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm index 37c0b71dc9..ef15022566 100644 --- a/gnu/packages/acl.scm +++ b/gnu/packages/acl.scm @@ -28,7 +28,7 @@ (define-public acl (package (name "acl") - (version "2.2.51") + (version "2.2.52") (source (origin (method url-fetch) @@ -36,7 +36,7 @@ version ".src.tar.gz")) (sha256 (base32 - "09aj30m49ivycl3irram8c3givc0crivjm3ymw0nhfaxrwhlb186")))) + "08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p")))) (build-system gnu-build-system) (arguments `(#:phases From a092cd820b7e942d74d2745b358acd472af38b59 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 Aug 2014 20:04:37 -0400 Subject: [PATCH 03/28] gnu: coreutils: Update to 8.23. * gnu/packages/patches/coreutils-skip-nohup.patch: Remove. * gnu-system.am (dist_patch_DATA): Remove coreutils-skip-nohup.patch. * gnu/packages/patches/coreutils-dummy-man.patch: Adapt for 8.23. * gnu/packages/base.scm (coreutils): Update to 8.23. --- gnu-system.am | 1 - gnu/packages/base.scm | 8 ++---- .../patches/coreutils-dummy-man.patch | 10 +++---- .../patches/coreutils-skip-nohup.patch | 28 ------------------- 4 files changed, 8 insertions(+), 39 deletions(-) delete mode 100644 gnu/packages/patches/coreutils-skip-nohup.patch diff --git a/gnu-system.am b/gnu-system.am index 6e1e8afec0..3f1c3c6ee5 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -288,7 +288,6 @@ dist_patch_DATA = \ gnu/packages/patches/clucene-pkgconfig.patch \ gnu/packages/patches/cmake-fix-tests.patch \ gnu/packages/patches/coreutils-dummy-man.patch \ - gnu/packages/patches/coreutils-skip-nohup.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \ gnu/packages/patches/cssc-gets-undeclared.patch \ gnu/packages/patches/cssc-missing-include.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 005e1c000b..c61d8ce33d 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -233,17 +233,15 @@ used to apply commands with arbitrarily long arguments.") (define-public coreutils (package (name "coreutils") - (version "8.22") + (version "8.23") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/coreutils/coreutils-" version ".tar.xz")) (sha256 (base32 - "04hjzzv434fb8ak3hh3dyhdvg3hqjjwvjmjxqzk1gh2jh6cr8gjv")) - (patches (list (search-patch "coreutils-dummy-man.patch") - ;; TODO: remove this patch for >= 8.23 - (search-patch "coreutils-skip-nohup.patch"))))) + "0bdq6yggyl7nkc2pbl6pxhhyx15nyqhz3ds6rfn448n6rxdwlhzc")) + (patches (list (search-patch "coreutils-dummy-man.patch"))))) (build-system gnu-build-system) (inputs `(("acl" ,acl) ; TODO: add SELinux ("gmp" ,gmp))) diff --git a/gnu/packages/patches/coreutils-dummy-man.patch b/gnu/packages/patches/coreutils-dummy-man.patch index f6a6a31002..a43cfc47c3 100644 --- a/gnu/packages/patches/coreutils-dummy-man.patch +++ b/gnu/packages/patches/coreutils-dummy-man.patch @@ -7,15 +7,15 @@ would appear when compiling: dummy-man: too many non-option arguments ---- coreutils-8.22/Makefile.in 2013-12-13 16:20:00.000000000 +0100 -+++ coreutils-8.22/Makefile.in 2014-02-28 10:53:27.000000000 +0100 -@@ -9977,8 +9977,8 @@ man/yes.1: src/yes +--- coreutils-8.23/Makefile.in 2014-07-18 18:22:24.000000000 -0400 ++++ coreutils-8.23/Makefile.in 2014-08-03 20:21:10.849158313 -0400 +@@ -14076,8 +14076,8 @@ && $(run_help2man) \ --source='$(PACKAGE_STRING)' \ --include=$(srcdir)/man/$$name.x \ -- --output=$$t/$$name.1 $$t/$$name \ +- --output=$$t/$$name.1 $$t/$$argv \ --info-page='coreutils \(aq'$$name' invocation\(aq' \ -+ --output=$$t/$$name.1 $$t/$$name \ ++ --output=$$t/$$name.1 $$t/$$argv \ && sed \ -e 's|$*\.td/||g' \ -e '/For complete documentation/d' \ diff --git a/gnu/packages/patches/coreutils-skip-nohup.patch b/gnu/packages/patches/coreutils-skip-nohup.patch deleted file mode 100644 index f5283a6b21..0000000000 --- a/gnu/packages/patches/coreutils-skip-nohup.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 5dce6bdfafc930dfd17d5d16aea7d1add3472066 -Author: Pádraig Brady -Date: Wed Mar 5 15:14:07 2014 +0000 - - tests: fix false failure in nohup.sh in non tty builds - - * tests/misc/nohup.sh: When running tests without a controlling tty, - an exec failure is triggered in a subshell, which causes POSIX - shells to immediately exit the subshell. This was brought - to notice by the newly conforming bash 4.3. - Fixes http:/bugs.gnu.org/16940 - -diff --git a/tests/misc/nohup.sh b/tests/misc/nohup.sh -index 6d2b515..2328b43 100755 ---- a/tests/misc/nohup.sh -+++ b/tests/misc/nohup.sh -@@ -63,6 +63,11 @@ rm -f nohup.out err - # to stderr must be fatal. Requires stdout to be terminal. - if test -w /dev/full && test -c /dev/full; then - ( -+ # POSIX shells immediately exit the subshell on exec error. -+ # So check we can write to /dev/tty before the exec, which -+ # isn't possible if we've no controlling tty for example. -+ test -c /dev/tty && >/dev/tty || exit 0 -+ - exec >/dev/tty - test -t 1 || exit 0 - nohup echo hi 2> /dev/full From d6535cf1db3e07b52744e9341c17f6ccea62c75f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 3 Aug 2014 20:05:55 -0400 Subject: [PATCH 04/28] gnu: tar: Update to 1.28. * gnu/packages/base.scm (tar): Update to 1.28. --- gnu/packages/base.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index c61d8ce33d..8060ab693a 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -133,14 +133,14 @@ implementation offers several extensions over the standard utility.") (define-public tar (package (name "tar") - (version "1.27.1") + (version "1.28") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/tar/tar-" - version ".tar.bz2")) + version ".tar.xz")) (sha256 (base32 - "1iip0fk0wqhxb0jcwphz43r4fxkx1y7mznnhmlvr618jhp7b63wv")))) + "1wi2zwm4c9r3h3b8y4w0nm0qq897kn8kyj9k22ba0iqvxj48vvk4")))) (build-system gnu-build-system) (synopsis "Managing tar archives") (description From 8174e9b7ae945eaf4856d455209341688934fa1b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 01:29:42 -0400 Subject: [PATCH 05/28] gnu: libatomic-ops: Update to 7.4.2. * gnu/packages/bdw-gc.scm (libatomic-ops): Update to 7.4.2. --- gnu/packages/bdw-gc.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index fb3c43da89..3134f18551 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2014 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -64,15 +65,15 @@ C or C++ programs, though that is not its primary goal.") (define-public libatomic-ops (package (name "libatomic-ops") - (version "7.4.0") + (version "7.4.2") (source (origin (method url-fetch) (uri (string-append - "http://www.hboehm.info/gc/gc_source/libatomic_ops-" + "http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-" version ".tar.gz")) (sha256 (base32 - "0njv3n63zw6v45k68z6dz14g2hpk5p230ncwmdfkglsljb1cqx98")))) + "1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4")))) (build-system gnu-build-system) (outputs '("out" "debug")) (synopsis "Accessing hardware atomic memory update operations") From a23276cd8b7cabb8cba12b9bc260eb7925ce4ee2 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 01:30:51 -0400 Subject: [PATCH 06/28] gnu: libgc: Update to 7.4.2. * gnu/packages/bdw-gc.scm (libgc): Update to 7.4.2. --- gnu/packages/bdw-gc.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index 3134f18551..df7cd1b489 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -89,14 +89,14 @@ lock-free code, experiment with thread programming paradigms, etc.") (define-public libgc (package (inherit libgc-7.2) - (version "7.4.0") + (version "7.4.2") (source (origin (method url-fetch) (uri (string-append "http://www.hboehm.info/gc/gc_source/gc-" version ".tar.gz")) (sha256 (base32 - "10z2nph62ilab063wygg2lv0jxlsbcf2az9w1lx01jzqj5lzry31")))) + "18mg28rr6kwr5clc65k4l4hkyy4kd16amx831sjf8q2lqkbhlck3")))) ;; New dependencies. (native-inputs `(("pkg-config" ,pkg-config))) From 785c33e3af9107118e57ba9efb39152f1b467a6f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 01:43:05 -0400 Subject: [PATCH 07/28] gnu: libffi: Update to 3.1. * gnu/packages/patches/libffi-mips-n32-fix.patch: Remove. * gnu-system.am (dist_patch_DATA): Remove it. * gnu/packages/libffi.scm (libffi): Update to 3.1. Remove patch. --- gnu-system.am | 1 - gnu/packages/libffi.scm | 7 +++---- .../patches/libffi-mips-n32-fix.patch | 21 ------------------- 3 files changed, 3 insertions(+), 26 deletions(-) delete mode 100644 gnu/packages/patches/libffi-mips-n32-fix.patch diff --git a/gnu-system.am b/gnu-system.am index 3f1c3c6ee5..3da1c75b97 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -328,7 +328,6 @@ dist_patch_DATA = \ gnu/packages/patches/kmod-module-directory.patch \ gnu/packages/patches/libbonobo-activation-test-race.patch \ gnu/packages/patches/libevent-dns-tests.patch \ - gnu/packages/patches/libffi-mips-n32-fix.patch \ gnu/packages/patches/liboop-mips64-deplibs-fix.patch \ gnu/packages/patches/libmad-mips-newgcc.patch \ gnu/packages/patches/libtheora-config-guess.patch \ diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index c5e265087e..33e10d6fc2 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -29,11 +29,11 @@ ;; available in $includedir where some users expect them. '(lambda* (#:key outputs #:allow-other-keys) (define out (assoc-ref outputs "out")) - (symlink (string-append out "/lib/libffi-3.0.13/include") + (symlink (string-append out "/lib/libffi-3.1/include") (string-append out "/include"))))) (package (name "libffi") - (version "3.0.13") + (version "3.1") (source (origin (method url-fetch) (uri @@ -41,8 +41,7 @@ name "-" version ".tar.gz")) (sha256 (base32 - "077ibkf84bvcd6rw1m6jb107br63i2pp301rkmsbgg6300adxp8x")) - (patches (list (search-patch "libffi-mips-n32-fix.patch"))))) + "1sznmrhcswwbyqla9y2ximlkzbxks59wjfs3lh7qf8ayranyxzlp")))) (build-system gnu-build-system) (arguments `(#:phases (alist-cons-after 'install 'post-install ,post-install-phase diff --git a/gnu/packages/patches/libffi-mips-n32-fix.patch b/gnu/packages/patches/libffi-mips-n32-fix.patch deleted file mode 100644 index 87ec48f883..0000000000 --- a/gnu/packages/patches/libffi-mips-n32-fix.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fix handling of uint32_t arguments on the MIPS N32 ABI. - -Patch by Mark H Weaver . - ---- libffi/src/mips/ffi.c.orig 2013-03-16 07:19:39.000000000 -0400 -+++ libffi/src/mips/ffi.c 2013-10-22 01:11:03.111985247 -0400 -@@ -170,7 +170,14 @@ - break; - - case FFI_TYPE_UINT32: -+#ifdef FFI_MIPS_N32 -+ /* The N32 ABI requires that 32-bit integers -+ be sign-extended to 64-bits, regardless of -+ whether they are signed or unsigned. */ -+ *(ffi_arg *)argp = *(SINT32 *)(* p_argv); -+#else - *(ffi_arg *)argp = *(UINT32 *)(* p_argv); -+#endif - break; - - /* This can only happen with 64bit slots. */ From cba95006a6129ffe2a29ff9f4ad10549214114a0 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 01:44:50 -0400 Subject: [PATCH 08/28] gnu: guile-2.0: Make 'bash' an input unconditionally. * gnu/packages/guile.scm (guile-2.0): Make 'bash' an input unconditionally. --- gnu/packages/guile.scm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 16e96848d6..8433b51263 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -121,11 +121,7 @@ without requiring the source code to be rewritten.") (native-inputs `(("pkgconfig" ,pkg-config))) (inputs `(("libffi" ,libffi) ("readline" ,readline) - - ;; TODO: On next core-updates, make Bash input unconditional. - ,@(if (%current-target-system) - `(("bash" ,bash)) - '()))) + ("bash" ,bash))) (propagated-inputs `( ;; These ones aren't normally needed here, but since `libguile-2.0.la' From 06a70dbec116efaf70ee29341921197496b06139 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 04:04:11 -0400 Subject: [PATCH 09/28] gnu: gnutls: Update to 3.2.16. * gnu/packages/gnutls.scm (gnutls): Update to 3.2.16. Remove -DENABLE_RSA_EXPORT workaround. --- gnu/packages/gnutls.scm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 03b21c169b..9b91a311a3 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -63,7 +63,7 @@ specifications.") (define-public gnutls (package (name "gnutls") - (version "3.2.15") + (version "3.2.16") (source (origin (method url-fetch) (uri @@ -75,12 +75,8 @@ specifications.") "/gnutls-" version ".tar.xz")) (sha256 (base32 - "1fbpr9r1r2y803s3avwjpy1higqsz85dyb302kvmh0i29frwgg9h")))) + "1bmwhg8y3mz5w2klclf5dz9502477kaj8r8db7k45fwb9ah3c63q")))) (build-system gnu-build-system) - (arguments - ;; Work around build issue reported at - ;; . - '(#:make-flags '("CPPFLAGS=-DENABLE_RSA_EXPORT"))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs From c3114b756760ddb73054a4bc3d5eff0bfe47c4de Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 20 Aug 2014 12:13:44 -0400 Subject: [PATCH 10/28] gnu: Add 'file' as a native-input on MIPS for some packages. * gnu/packages/admin.scm (sudo): gnu/packages/gawk.scm (gawk): Add 'file' as a native input on MIPS. Remove earlier workaround on MIPS. * gnu/packages/libffi.scm (libffi): gnu/packages/bdw-gc.scm (libatomic-ops, libgc): Add 'file' as a native input on MIPS. --- gnu/packages/admin.scm | 20 ++++++++------------ gnu/packages/bdw-gc.scm | 15 ++++++++++++++- gnu/packages/gawk.scm | 19 +++++++------------ gnu/packages/libffi.scm | 8 ++++++++ 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index c2599746d8..83b01808cd 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -29,6 +29,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages base) + #:use-module (gnu packages file) #:use-module (gnu packages ncurses) #:use-module (gnu packages readline) #:use-module (gnu packages linux) @@ -648,18 +649,7 @@ system administrator.") "") (("^install: (.*)install-sudoers(.*)" _ before after) ;; Don't try to create /etc/sudoers. - (string-append "install: " before after "\n"))) - - ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a - ;; prerelease libtool, which fails on MIPS in the absence - ;; of /usr/bin/file. As a temporary workaround, we patch - ;; the configure script to hardcode use of the little - ;; endian N32 ABI on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - '((substitute* "configure" - (("\\$emul") "elf32ltsmipn32"))) - '())) + (string-append "install: " before after "\n")))) %standard-phases) ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but @@ -669,6 +659,12 @@ system administrator.") `(("groff" ,groff) ("linux-pam" ,linux-pam) ("coreutils" ,coreutils))) + (native-inputs + `(;; 'file' is needed by the pre-release libtool on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + `(("file" ,file)) + '()))) (home-page "http://www.sudo.ws/") (synopsis "Run commands as root") (description diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index df7cd1b489..e68ca50b5e 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -22,6 +22,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (gnu packages file) #:use-module (gnu packages pkg-config)) (define-public libgc-7.2 @@ -75,6 +76,12 @@ C or C++ programs, though that is not its primary goal.") (base32 "1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4")))) (build-system gnu-build-system) + (native-inputs + `(;; 'file' is needed by the pre-release libtool on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + `(("file" ,file)) + '()))) (outputs '("out" "debug")) (synopsis "Accessing hardware atomic memory update operations") (description @@ -99,7 +106,13 @@ lock-free code, experiment with thread programming paradigms, etc.") "18mg28rr6kwr5clc65k4l4hkyy4kd16amx831sjf8q2lqkbhlck3")))) ;; New dependencies. - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config) + ;; 'file' is needed by the pre-release libtool on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + `(("file" ,file)) + '()))) (inputs `(("libatomic-ops" ,libatomic-ops))) ;; 'USE_LIBC_PRIVATES' is now the default. diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm index 6185409fb7..737e610ae5 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -20,6 +20,7 @@ (define-module (gnu packages gawk) #:use-module (guix licenses) #:use-module (gnu packages bash) + #:use-module (gnu packages file) #:use-module (gnu packages libsigsegv) #:use-module (guix packages) #:use-module (guix download) @@ -55,17 +56,6 @@ '((substitute* "extension/Makefile.in" (("^.*: check-for-shared-lib-support" match) (string-append "### " match)))) - '()) - - ;; XXX FIXME gawk 4.1.1 was bootstrapped with a prerelease - ;; libtool, which fails on MIPS in the absence of - ;; /usr/bin/file. As a temporary workaround, we patch - ;; the configure script to hardcode use of the little - ;; endian N32 ABI on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - '((substitute* "extension/configure" - (("\\$emul") "elf32ltsmipn32"))) '()))) %standard-phases))) (inputs `(("libsigsegv" ,libsigsegv) @@ -73,7 +63,12 @@ ,@(if (%current-target-system) `(("bash" ,bash)) '()))) - + (native-inputs + `(;; 'file' is needed by the pre-release libtool on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + `(("file" ,file)) + '()))) (home-page "http://www.gnu.org/software/gawk/") (synopsis "A text scanning and processing language") (description diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index 33e10d6fc2..067838f8e2 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2014 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,6 +19,7 @@ (define-module (gnu packages libffi) #:use-module (gnu packages) + #:use-module (gnu packages file) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -43,6 +45,12 @@ (base32 "1sznmrhcswwbyqla9y2ximlkzbxks59wjfs3lh7qf8ayranyxzlp")))) (build-system gnu-build-system) + (native-inputs + `(;; 'file' is needed by the pre-release libtool on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + `(("file" ,file)) + '()))) (arguments `(#:phases (alist-cons-after 'install 'post-install ,post-install-phase %standard-phases))) From fa5731baabdb4a9240aad2154847f352aed02d6e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 21 Aug 2014 21:49:36 -0400 Subject: [PATCH 11/28] Revert "gnu: Add 'file' as a native-input on MIPS for some packages." This reverts commit c3114b756760ddb73054a4bc3d5eff0bfe47c4de. --- gnu/packages/admin.scm | 20 ++++++++++++-------- gnu/packages/bdw-gc.scm | 15 +-------------- gnu/packages/gawk.scm | 19 ++++++++++++------- gnu/packages/libffi.scm | 8 -------- 4 files changed, 25 insertions(+), 37 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 83b01808cd..c2599746d8 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -29,7 +29,6 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages base) - #:use-module (gnu packages file) #:use-module (gnu packages ncurses) #:use-module (gnu packages readline) #:use-module (gnu packages linux) @@ -649,7 +648,18 @@ system administrator.") "") (("^install: (.*)install-sudoers(.*)" _ before after) ;; Don't try to create /etc/sudoers. - (string-append "install: " before after "\n")))) + (string-append "install: " before after "\n"))) + + ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a + ;; prerelease libtool, which fails on MIPS in the absence + ;; of /usr/bin/file. As a temporary workaround, we patch + ;; the configure script to hardcode use of the little + ;; endian N32 ABI on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + '((substitute* "configure" + (("\\$emul") "elf32ltsmipn32"))) + '())) %standard-phases) ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but @@ -659,12 +669,6 @@ system administrator.") `(("groff" ,groff) ("linux-pam" ,linux-pam) ("coreutils" ,coreutils))) - (native-inputs - `(;; 'file' is needed by the pre-release libtool on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - `(("file" ,file)) - '()))) (home-page "http://www.sudo.ws/") (synopsis "Run commands as root") (description diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index e68ca50b5e..df7cd1b489 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -22,7 +22,6 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (gnu packages file) #:use-module (gnu packages pkg-config)) (define-public libgc-7.2 @@ -76,12 +75,6 @@ C or C++ programs, though that is not its primary goal.") (base32 "1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4")))) (build-system gnu-build-system) - (native-inputs - `(;; 'file' is needed by the pre-release libtool on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - `(("file" ,file)) - '()))) (outputs '("out" "debug")) (synopsis "Accessing hardware atomic memory update operations") (description @@ -106,13 +99,7 @@ lock-free code, experiment with thread programming paradigms, etc.") "18mg28rr6kwr5clc65k4l4hkyy4kd16amx831sjf8q2lqkbhlck3")))) ;; New dependencies. - (native-inputs - `(("pkg-config" ,pkg-config) - ;; 'file' is needed by the pre-release libtool on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - `(("file" ,file)) - '()))) + (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libatomic-ops" ,libatomic-ops))) ;; 'USE_LIBC_PRIVATES' is now the default. diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm index 737e610ae5..6185409fb7 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -20,7 +20,6 @@ (define-module (gnu packages gawk) #:use-module (guix licenses) #:use-module (gnu packages bash) - #:use-module (gnu packages file) #:use-module (gnu packages libsigsegv) #:use-module (guix packages) #:use-module (guix download) @@ -56,6 +55,17 @@ '((substitute* "extension/Makefile.in" (("^.*: check-for-shared-lib-support" match) (string-append "### " match)))) + '()) + + ;; XXX FIXME gawk 4.1.1 was bootstrapped with a prerelease + ;; libtool, which fails on MIPS in the absence of + ;; /usr/bin/file. As a temporary workaround, we patch + ;; the configure script to hardcode use of the little + ;; endian N32 ABI on MIPS. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + '((substitute* "extension/configure" + (("\\$emul") "elf32ltsmipn32"))) '()))) %standard-phases))) (inputs `(("libsigsegv" ,libsigsegv) @@ -63,12 +73,7 @@ ,@(if (%current-target-system) `(("bash" ,bash)) '()))) - (native-inputs - `(;; 'file' is needed by the pre-release libtool on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - `(("file" ,file)) - '()))) + (home-page "http://www.gnu.org/software/gawk/") (synopsis "A text scanning and processing language") (description diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index 067838f8e2..33e10d6fc2 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -1,6 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès -;;; Copyright © 2014 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +18,6 @@ (define-module (gnu packages libffi) #:use-module (gnu packages) - #:use-module (gnu packages file) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -45,12 +43,6 @@ (base32 "1sznmrhcswwbyqla9y2ximlkzbxks59wjfs3lh7qf8ayranyxzlp")))) (build-system gnu-build-system) - (native-inputs - `(;; 'file' is needed by the pre-release libtool on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - `(("file" ,file)) - '()))) (arguments `(#:phases (alist-cons-after 'install 'post-install ,post-install-phase %standard-phases))) From 8f5708c1d8fbdc9065b8968d0112f7ee40d8dc97 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 21 Aug 2014 11:26:40 -0400 Subject: [PATCH 12/28] gnu: bootstrap: Add 'file' to %boot0-inputs and %final-inputs. * gnu/packages/base.scm (file-boot0): New variable. (%boot0-inputs): Add 'file-boot0'. (%final-inputs): Add 'file' to list of packages to 'finalize'. --- gnu/packages/base.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 8060ab693a..30176cfddb 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages gcc) #:use-module (gnu packages ed) + #:use-module (gnu packages file) #:use-module (gnu packages gawk) #:use-module (gnu packages guile) #:use-module (gnu packages multiprecision) @@ -630,11 +631,20 @@ and daylight-saving rules.") (current-source-location) #:guile %bootstrap-guile))) +(define file-boot0 + (package-with-bootstrap-guile + (package-with-explicit-inputs file + `(("make" ,gnu-make-boot0) + ,@%bootstrap-inputs) + (current-source-location) + #:guile %bootstrap-guile))) + (define %boot0-inputs `(("make" ,gnu-make-boot0) ("diffutils" ,diffutils-boot0) ("findutils" ,findutils-boot0) + ("file" ,file-boot0) ,@%bootstrap-inputs)) (define* (nix-system->gnu-triplet @@ -1187,6 +1197,7 @@ store.") ("gzip" ,gzip) ("bzip2" ,bzip2) ("xz" ,xz) + ("file" ,file) ("diffutils" ,diffutils) ("patch" ,patch) ("sed" ,sed) From 8a0576f175a656a332c5a4ca65168e76c56af5c3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 21 Aug 2014 11:30:08 -0400 Subject: [PATCH 13/28] gnu-build-system: Add 'patch-usr-bin-file' to %standard-phases. * guix/build/gnu-build-system.scm (patch-usr-bin-file): New procedure. (%standard-phases): Add it. --- guix/build/gnu-build-system.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 8636931ed9..17fa7afd8d 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -106,6 +106,35 @@ working directory." (and (zero? (system* "tar" "xvf" source)) (chdir (first-subdirectory "."))))) +;; See . +(define* (patch-usr-bin-file #:key native-inputs inputs + (patch-/usr/bin/file? #t) + #:allow-other-keys) + "Patch occurrences of /usr/bin/file in configure, if present." + (when patch-/usr/bin/file? + (let ((file "configure") + (file-command (or (and=> (assoc-ref (or native-inputs inputs) "file") + (cut string-append <> "/bin/file")) + (which "file")))) + (cond ((not (file-exists? file)) + (format (current-error-port) + "patch-usr-bin-file: warning: `~a' not found~%" + file)) + ((not file-command) + (format (current-error-port) + "patch-usr-bin-file: warning: `file' not found in PATH~%")) + (else + (let ((st (stat file))) + (substitute* file + (("/usr/bin/file") + (begin + (format (current-error-port) + "patch-usr-bin-file: ~a: changing `~a' to `~a'~%" + file "/usr/bin/file" file-command) + file-command))) + (set-file-time file st)))))) + #t) + (define* (patch-source-shebangs #:key source #:allow-other-keys) "Patch shebangs in all source files; this includes non-executable files such as `.in' templates. Most scripts honor $SHELL and @@ -353,6 +382,7 @@ makefiles." (let-syntax ((phases (syntax-rules () ((_ p ...) `((p . ,p) ...))))) (phases set-paths unpack + patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip))) From c198872b99cdb1e483ecb91cce4026bc9e35ac8a Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 21 Aug 2014 22:39:18 -0400 Subject: [PATCH 14/28] gnu: Rely on 'file' implicit input and 'patch-usr-bin-file'. * gnu/packages/admin.scm (sudo): * gnu/packages/gawk.scm (gawk): Remove workaround on MIPS. * gnu/packages/mcrypt.scm (mcrypt, libmhash): * gnu/packages/file.scm (file): Remove 'file' from native-inputs. * gnu/packages/mc.scm (mc): * gnu/packages/pretty-print.scm (a2ps, trueprint, source-highlight): * gnu/packages/image.scm (libtiff): Remove 'file' from native-inputs. Remove 'patch-configure' phase. --- gnu/packages/admin.scm | 13 +--- gnu/packages/file.scm | 3 - gnu/packages/gawk.scm | 11 ---- gnu/packages/image.scm | 12 +--- gnu/packages/mc.scm | 11 +--- gnu/packages/mcrypt.scm | 7 +-- gnu/packages/pretty-print.scm | 112 ++++++++++++++-------------------- 7 files changed, 51 insertions(+), 118 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index c2599746d8..4d60c17989 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -648,18 +648,7 @@ system administrator.") "") (("^install: (.*)install-sudoers(.*)" _ before after) ;; Don't try to create /etc/sudoers. - (string-append "install: " before after "\n"))) - - ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a - ;; prerelease libtool, which fails on MIPS in the absence - ;; of /usr/bin/file. As a temporary workaround, we patch - ;; the configure script to hardcode use of the little - ;; endian N32 ABI on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - '((substitute* "configure" - (("\\$emul") "elf32ltsmipn32"))) - '())) + (string-append "install: " before after "\n")))) %standard-phases) ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index f53c22f4cd..067f20e67c 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -35,9 +35,6 @@ (sha256 (base32 "01xz106biz6x4h5ilymg5v3367djvgnfp4lm87132cjqdmqgn6b5")))) (build-system gnu-build-system) - (native-inputs - ;; This package depends upon a native install of itself. - (if (%current-target-system) `(("file" ,file)) '() )) (synopsis "file, a file type guesser") (description "The file command is a file type guesser, a command-line tool that tells diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm index 6185409fb7..fd14b4c83e 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -55,17 +55,6 @@ '((substitute* "extension/Makefile.in" (("^.*: check-for-shared-lib-support" match) (string-append "### " match)))) - '()) - - ;; XXX FIXME gawk 4.1.1 was bootstrapped with a prerelease - ;; libtool, which fails on MIPS in the absence of - ;; /usr/bin/file. As a temporary workaround, we patch - ;; the configure script to hardcode use of the little - ;; endian N32 ABI on MIPS. - ,@(if (equal? "mips64el-linux" (or (%current-target-system) - (%current-system))) - '((substitute* "extension/configure" - (("\\$emul") "elf32ltsmipn32"))) '()))) %standard-phases))) (inputs `(("libsigsegv" ,libsigsegv) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 014266cbb0..06f62715c4 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -19,7 +19,6 @@ (define-module (gnu packages image) #:use-module (gnu packages) #:use-module (gnu packages compression) - #:use-module (gnu packages file) #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)) #:use-module (guix packages) #:use-module (guix download) @@ -97,20 +96,11 @@ image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.") (inputs `(("zlib" ,zlib) ("libjpeg-8" ,libjpeg-8))) ;; currently does not compile with libjpeg version 9 - (native-inputs `(("file" ,file))) (arguments `(#:configure-flags (list (string-append "--with-jpeg-include-dir=" (assoc-ref %build-inputs "libjpeg-8") - "/include")) - #:phases - (alist-cons-before - 'configure 'patch-configure - (lambda _ - (substitute* "configure" - (("`/usr/bin/file") - (string-append "`" (which "file"))))) - %standard-phases))) + "/include")))) (synopsis "Libtiff, a library for handling TIFF files") (description "Libtiff provides support for the Tag Image File Format (TIFF), a format diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm index aba14d59ac..6e3747c943 100644 --- a/gnu/packages/mc.scm +++ b/gnu/packages/mc.scm @@ -28,7 +28,6 @@ #:use-module (gnu packages ssh) #:use-module (gnu packages pkg-config) #:use-module (gnu packages check) - #:use-module (gnu packages file) #:use-module (gnu packages perl)) (define-public mc @@ -46,7 +45,6 @@ (patches (list (search-patch "mc-fix-ncurses-build.patch"))))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) - ("file" ,file) ("perl" ,perl))) (inputs `(("aspell" ,aspell) ("ncurses" ,ncurses) @@ -55,14 +53,7 @@ ("check" ,check))) (arguments `(#:configure-flags - '("--with-screen=ncurses" "--enable-aspell") - #:phases - (alist-cons-before - 'configure 'patch-configure - (lambda _ - (substitute* "configure" - (("/usr/bin/file") (which "file")))) - %standard-phases))) + '("--with-screen=ncurses" "--enable-aspell"))) (home-page "http://www.midnight-commander.org") (synopsis "Graphical file manager") (description diff --git a/gnu/packages/mcrypt.scm b/gnu/packages/mcrypt.scm index eac8c72c5e..12a4827224 100644 --- a/gnu/packages/mcrypt.scm +++ b/gnu/packages/mcrypt.scm @@ -23,8 +23,7 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages compression) - #:use-module (gnu packages perl) - #:use-module (gnu packages file)) + #:use-module (gnu packages perl)) (define-public mcrypt (package @@ -68,7 +67,6 @@ them.") (base32 "0gipgb939vy9m66d3k8il98rvvwczyaw2ixr8yn6icds9c3nrsz4")))) (build-system gnu-build-system) - (native-inputs `(("file" ,file))) (home-page "http://mcrypt.sourceforge.net/") (synopsis "Encryption algorithm library") (description @@ -95,8 +93,7 @@ XTEA, 3WAY, TWOFISH, BLOWFISH, ARCFOUR, WAKE and more.") (patches (list (search-patch "mhash-keygen-test-segfault.patch"))))) (build-system gnu-build-system) (native-inputs - `(("file" ,file) - ("perl" ,perl))) ;for tests + `(("perl" ,perl))) ;for tests (home-page "http://mhash.sourceforge.net/") (synopsis "Thread-safe hash library") (description diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 8c51b54f18..07837eb1ac 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -30,8 +30,7 @@ #:use-module (gnu packages bison) #:use-module (gnu packages flex) #:use-module (gnu packages gperf) - #:use-module (gnu packages perl) - #:use-module (gnu packages file)) + #:use-module (gnu packages perl)) (define-public a2ps (package @@ -53,45 +52,39 @@ ("imagemagick" ,imagemagick))) (native-inputs `(("gperf" ,gperf) - ("perl" ,perl) - ("file" ,file))) + ("perl" ,perl))) (arguments '(#:phases (alist-cons-before - 'configure 'patch-configure + 'build 'patch-scripts (lambda _ - (substitute* "configure" - (("/usr/bin/file") (which "file")))) + (substitute* + '("afm/make_fonts_map.sh" + "tests/defs" + "tests/backup.tst" + "tests/styles.tst") + (("/bin/rm") (which "rm")))) (alist-cons-before - 'build 'patch-scripts - (lambda _ - (substitute* - '("afm/make_fonts_map.sh" - "tests/defs" - "tests/backup.tst" - "tests/styles.tst") - (("/bin/rm") (which "rm")))) - (alist-cons-before - 'check 'patch-test-files - ;; Alternatively, we could unpatch the shebangs in tstfiles - (lambda* (#:key inputs #:allow-other-keys) - (let ((perl (assoc-ref inputs "perl"))) - (substitute* '("tests/ps-ref/includeres.ps" - "tests/gps-ref/includeres.ps") - (("/usr/local/bin/perl") - (string-append perl "/bin/perl")))) - ;; Some of the reference postscript contain a 'version 3' - ;; string that in inconsistent with the source text in the - ;; tstfiles directory. Erroneous search-and-replace? - (substitute* '("tests/ps-ref/InsertBlock.ps" - "tests/gps-ref/InsertBlock.ps" - "tests/ps-ref/bookie.ps" - "tests/gps-ref/bookie.ps") - (("version 3") "version 2")) - (substitute* '("tests/ps-ref/psmandup.ps" - "tests/gps-ref/psmandup.ps") - (("#! */bin/sh") (string-append - "#!" (which "sh"))))) - %standard-phases))))) + 'check 'patch-test-files + ;; Alternatively, we could unpatch the shebangs in tstfiles + (lambda* (#:key inputs #:allow-other-keys) + (let ((perl (assoc-ref inputs "perl"))) + (substitute* '("tests/ps-ref/includeres.ps" + "tests/gps-ref/includeres.ps") + (("/usr/local/bin/perl") + (string-append perl "/bin/perl")))) + ;; Some of the reference postscript contain a 'version 3' + ;; string that in inconsistent with the source text in the + ;; tstfiles directory. Erroneous search-and-replace? + (substitute* '("tests/ps-ref/InsertBlock.ps" + "tests/gps-ref/InsertBlock.ps" + "tests/ps-ref/bookie.ps" + "tests/gps-ref/bookie.ps") + (("version 3") "version 2")) + (substitute* '("tests/ps-ref/psmandup.ps" + "tests/gps-ref/psmandup.ps") + (("#! */bin/sh") (string-append + "#!" (which "sh"))))) + %standard-phases)))) (home-page "http://www.gnu.org/software/a2ps") (synopsis "Any file to PostScript, including pretty-printing") (description @@ -115,16 +108,9 @@ special cases, such as pretty-printing \"--help\" output.") (base32 "13rkc0fga10xyf56yy9dnq95zndnfadkhxflnp24skszj21y8jqh")))) (build-system gnu-build-system) - (native-inputs `(("file" ,file))) (arguments ;; Must define DIFF_CMD for tests to pass - '(#:configure-flags '("CPPFLAGS=-DDIFF_CMD=\\\"diff\\\"") - #:phases (alist-cons-before - 'configure 'patch-configure - (lambda _ - (substitute* "configure" - (("/usr/bin/file") (which "file")))) - %standard-phases))) + '(#:configure-flags '("CPPFLAGS=-DDIFF_CMD=\\\"diff\\\""))) (home-page "http://www.gnu.org/software/trueprint") (synopsis "Pretty-print C sources and other plain text to PostScript") (description @@ -178,34 +164,28 @@ different programming languages.") `(("boost" ,boost))) (native-inputs `(("bison" ,bison) - ("flex" ,flex) - ("file" ,file))) + ("flex" ,flex))) (arguments `(#:configure-flags (list (string-append "--with-boost=" (assoc-ref %build-inputs "boost"))) #:parallel-tests? #f ;There appear to be race conditions #:phases (alist-cons-before - 'configure 'patch-configure + 'check 'patch-test-files (lambda _ - (substitute* "configure" - (("/usr/bin/file") (which "file")))) - (alist-cons-before - 'check 'patch-test-files - (lambda _ - ;; Unpatch shebangs in test input so that source-highlight - ;; is still able to infer input language - (substitute* '("tests/test.sh" - "tests/test2.sh" - "tests/test.tcl") - (((string-append "#! *" (which "sh"))) "#!/bin/sh")) - ;; Initial patching unrecoverably removes whitespace, so - ;; remove it also in the comparison output. - (substitute* '("tests/test.sh.html" - "tests/test2.sh.html" - "tests/test.tcl.html") - (("#! */bin/sh") "#!/bin/sh"))) - %standard-phases)))) + ;; Unpatch shebangs in test input so that source-highlight + ;; is still able to infer input language + (substitute* '("tests/test.sh" + "tests/test2.sh" + "tests/test.tcl") + (((string-append "#! *" (which "sh"))) "#!/bin/sh")) + ;; Initial patching unrecoverably removes whitespace, so + ;; remove it also in the comparison output. + (substitute* '("tests/test.sh.html" + "tests/test2.sh.html" + "tests/test.tcl.html") + (("#! */bin/sh") "#!/bin/sh"))) + %standard-phases))) (home-page "http://www.gnu.org/software/src-highlite") (synopsis "Produce a document with syntax highlighting from a source file") (description From bc0506f5b75812431e8530e213ca642028743f9e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 23 Aug 2014 20:48:28 -0400 Subject: [PATCH 15/28] gnu: libgcrypt: Update to 1.6.2. * gnu/packages/gnupg.scm (libgcrypt): Update to 1.6.2. --- gnu/packages/gnupg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 3207c74b0b..326a321ca5 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -63,14 +63,14 @@ Daemon and possibly more in the future.") (define-public libgcrypt (package (name "libgcrypt") - (version "1.6.1") + (version "1.6.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "0w10vhpj1r5nq7qm6jp21p1v1vhf37701cw8yilygzzqd7mfzhx1")))) + "0k2wi34qhp5hq71w1ab3kw1gfsx7xff79bvynqkxp35kls94826y")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error" ,libgpg-error))) From 48abd130217bd1645fefc4ca1817862672c6d782 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 26 Aug 2014 12:00:26 -0400 Subject: [PATCH 16/28] gnu: file: Update to 5.19; add fix for CVE-2014-3587. * gnu/packages/patches/file-CVE-2014-3587.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/file.scm (file): Update to 5.19. Add patch. --- gnu-system.am | 1 + gnu/packages/file.scm | 5 +++-- gnu/packages/patches/file-CVE-2014-3587.patch | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/file-CVE-2014-3587.patch diff --git a/gnu-system.am b/gnu-system.am index 86937749c7..f24da850c2 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -299,6 +299,7 @@ dist_patch_DATA = \ gnu/packages/patches/doxygen-test.patch \ gnu/packages/patches/doxygen-tmake.patch \ gnu/packages/patches/emacs-configure-sh.patch \ + gnu/packages/patches/file-CVE-2014-3587.patch \ gnu/packages/patches/findutils-absolute-paths.patch \ gnu/packages/patches/flashrom-use-libftdi1.patch \ gnu/packages/patches/flex-bison-tests.patch \ diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 067f20e67c..601b158128 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -27,13 +27,14 @@ (define-public file (package (name "file") - (version "5.18") + (version "5.19") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.astron.com/pub/file/file-" version ".tar.gz")) (sha256 (base32 - "01xz106biz6x4h5ilymg5v3367djvgnfp4lm87132cjqdmqgn6b5")))) + "0z1sgrcfy6d285kj5izy1yypf371bjl3247plh9ppk0svaxv714l")) + (patches (list (search-patch "file-CVE-2014-3587.patch"))))) (build-system gnu-build-system) (synopsis "file, a file type guesser") (description diff --git a/gnu/packages/patches/file-CVE-2014-3587.patch b/gnu/packages/patches/file-CVE-2014-3587.patch new file mode 100644 index 0000000000..cf88bf5f3e --- /dev/null +++ b/gnu/packages/patches/file-CVE-2014-3587.patch @@ -0,0 +1,16 @@ +Fixes CVE-2014-3587. Copied from upstream commit +0641e56be1af003aa02c7c6b0184466540637233. + +--- file-5.19/src/cdf.c.orig 2014-06-09 09:04:37.000000000 -0400 ++++ file-5.19/src/cdf.c 2014-08-26 11:55:23.887118898 -0400 +@@ -824,6 +824,10 @@ + q = (const uint8_t *)(const void *) + ((const char *)(const void *)p + ofs + - 2 * sizeof(uint32_t)); ++ if (q < p) { ++ DPRINTF(("Wrapped around %p < %p\n", q, p)); ++ goto out; ++ } + if (q > e) { + DPRINTF(("Ran of the end %p > %p\n", q, e)); + goto out; From f5beb0caf31f227dbe3dd909ec318e84247a504a Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 26 Aug 2014 14:44:14 -0400 Subject: [PATCH 17/28] gnu: glibc: Fix CVE-2014-5119. * gnu/packages/patches/glibc-CVE-2014-5119.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/base.scm (glibc): Add the patch. --- gnu-system.am | 1 + gnu/packages/base.scm | 3 +- .../patches/glibc-CVE-2014-5119.patch | 212 ++++++++++++++++++ 3 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/glibc-CVE-2014-5119.patch diff --git a/gnu-system.am b/gnu-system.am index f24da850c2..006fcab801 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -311,6 +311,7 @@ dist_patch_DATA = \ gnu/packages/patches/glib-tests-prlimit.patch \ gnu/packages/patches/glib-tests-timer.patch \ gnu/packages/patches/glibc-bootstrap-system.patch \ + gnu/packages/patches/glibc-CVE-2014-5119.patch \ gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/gnunet-fix-scheduler.patch \ gnu/packages/patches/gnunet-fix-tests.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 30176cfddb..6f340172e0 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -384,7 +384,8 @@ library for working with executable and object formats is also included.") (("use_ldconfig=yes") "use_ldconfig=no"))) (modules '((guix build utils))) - (patches (list (search-patch "glibc-ldd-x86_64.patch"))))) + (patches (list (search-patch "glibc-CVE-2014-5119.patch") + (search-patch "glibc-ldd-x86_64.patch"))))) (build-system gnu-build-system) ;; Glibc's refers to , for instance, so glibc diff --git a/gnu/packages/patches/glibc-CVE-2014-5119.patch b/gnu/packages/patches/glibc-CVE-2014-5119.patch new file mode 100644 index 0000000000..de063a2da5 --- /dev/null +++ b/gnu/packages/patches/glibc-CVE-2014-5119.patch @@ -0,0 +1,212 @@ +Remove support for loadable gconv transliteration modules. +The support for transliteration modules has been non-functional for +over a decade, and the removal is prompted by security defects. The +normal gconv conversion modules are still supported. Transliteration +with //TRANSLIT is still possible, and the //IGNORE specifier +continues to be supported. (CVE-2014-5119) + +Based on upstream commits a1a6a401ab0a3c9f15fb7eaebbdcee24192254e8 +and f9df71e895d3552d557e783fdb9d133328195645 +by Florian Weimer . + +--- glibc-2.19/ChangeLog.orig 2014-02-07 04:04:38.000000000 -0500 ++++ glibc-2.19/ChangeLog 2014-08-26 14:35:12.368861387 -0400 +@@ -1,3 +1,10 @@ ++2014-08-26 Florian Weimer ++ ++ [BZ #17187] ++ * iconv/gconv_trans.c (struct known_trans, search_tree, lock, ++ trans_compare, open_translit, __gconv_translit_find): ++ Remove module loading code. ++ + 2014-02-06 Carlos O'Donell + + [BZ #16529] +--- glibc-2.19/iconv/gconv_trans.c.orig 2014-02-07 04:04:38.000000000 -0500 ++++ glibc-2.19/iconv/gconv_trans.c 2014-08-26 14:37:26.269525364 -0400 +@@ -238,181 +238,12 @@ + return __GCONV_ILLEGAL_INPUT; + } + +- +-/* Structure to represent results of found (or not) transliteration +- modules. */ +-struct known_trans +-{ +- /* This structure must remain the first member. */ +- struct trans_struct info; +- +- char *fname; +- void *handle; +- int open_count; +-}; +- +- +-/* Tree with results of previous calls to __gconv_translit_find. */ +-static void *search_tree; +- +-/* We modify global data. */ +-__libc_lock_define_initialized (static, lock); +- +- +-/* Compare two transliteration entries. */ +-static int +-trans_compare (const void *p1, const void *p2) +-{ +- const struct known_trans *s1 = (const struct known_trans *) p1; +- const struct known_trans *s2 = (const struct known_trans *) p2; +- +- return strcmp (s1->info.name, s2->info.name); +-} +- +- +-/* Open (maybe reopen) the module named in the struct. Get the function +- and data structure pointers we need. */ +-static int +-open_translit (struct known_trans *trans) +-{ +- __gconv_trans_query_fct queryfct; +- +- trans->handle = __libc_dlopen (trans->fname); +- if (trans->handle == NULL) +- /* Not available. */ +- return 1; +- +- /* Find the required symbol. */ +- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context"); +- if (queryfct == NULL) +- { +- /* We cannot live with that. */ +- close_and_out: +- __libc_dlclose (trans->handle); +- trans->handle = NULL; +- return 1; +- } +- +- /* Get the context. */ +- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames) +- != 0) +- goto close_and_out; +- +- /* Of course we also have to have the actual function. */ +- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans"); +- if (trans->info.trans_fct == NULL) +- goto close_and_out; +- +- /* Now the optional functions. */ +- trans->info.trans_init_fct = +- __libc_dlsym (trans->handle, "gconv_trans_init"); +- trans->info.trans_context_fct = +- __libc_dlsym (trans->handle, "gconv_trans_context"); +- trans->info.trans_end_fct = +- __libc_dlsym (trans->handle, "gconv_trans_end"); +- +- trans->open_count = 1; +- +- return 0; +-} +- +- + int + internal_function + __gconv_translit_find (struct trans_struct *trans) + { +- struct known_trans **found; +- const struct path_elem *runp; +- int res = 1; +- +- /* We have to have a name. */ +- assert (trans->name != NULL); +- +- /* Acquire the lock. */ +- __libc_lock_lock (lock); +- +- /* See whether we know this module already. */ +- found = __tfind (trans, &search_tree, trans_compare); +- if (found != NULL) +- { +- /* Is this module available? */ +- if ((*found)->handle != NULL) +- { +- /* Maybe we have to reopen the file. */ +- if ((*found)->handle != (void *) -1) +- /* The object is not unloaded. */ +- res = 0; +- else if (open_translit (*found) == 0) +- { +- /* Copy the data. */ +- *trans = (*found)->info; +- (*found)->open_count++; +- res = 0; +- } +- } +- } +- else +- { +- size_t name_len = strlen (trans->name) + 1; +- int need_so = 0; +- struct known_trans *newp; +- +- /* We have to continue looking for the module. */ +- if (__gconv_path_elem == NULL) +- __gconv_get_path (); +- +- /* See whether we have to append .so. */ +- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0) +- need_so = 1; +- +- /* Create a new entry. */ +- newp = (struct known_trans *) malloc (sizeof (struct known_trans) +- + (__gconv_max_path_elem_len +- + name_len + 3) +- + name_len); +- if (newp != NULL) +- { +- char *cp; +- +- /* Clear the struct. */ +- memset (newp, '\0', sizeof (struct known_trans)); +- +- /* Store a copy of the module name. */ +- newp->info.name = cp = (char *) (newp + 1); +- cp = __mempcpy (cp, trans->name, name_len); +- +- newp->fname = cp; +- +- /* Search in all the directories. */ +- for (runp = __gconv_path_elem; runp->name != NULL; ++runp) +- { +- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name), +- trans->name, name_len); +- if (need_so) +- memcpy (cp, ".so", sizeof (".so")); +- +- if (open_translit (newp) == 0) +- { +- /* We found a module. */ +- res = 0; +- break; +- } +- } +- +- if (res) +- newp->fname = NULL; +- +- /* In any case we'll add the entry to our search tree. */ +- if (__tsearch (newp, &search_tree, trans_compare) == NULL) +- { +- /* Yickes, this should not happen. Unload the object. */ +- res = 1; +- /* XXX unload here. */ +- } +- } +- } +- +- __libc_lock_unlock (lock); +- +- return res; ++ /* Transliteration module loading has been removed because it never ++ worked as intended and suffered from a security vulnerability. ++ Consequently, this function always fails. */ ++ return 1; + } From 83291101c39c1cd1bf472280c24ad68d94248c2e Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 27 Aug 2014 10:26:54 -0500 Subject: [PATCH 18/28] utils: Preserve makefile shell arguments during patch. * guix/build/utils.scm (patch-makefile-SHELL): Preserve shell arguments. --- guix/build/utils.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 2f3dc9cad0..f38b2cabfc 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -582,14 +582,15 @@ When KEEP-MTIME? is true, the atime/mtime of FILE are kept unchanged." (let ((st (stat file))) (substitute* file - (("^ *SHELL[[:blank:]]*=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)[[:blank:]]*" _ dir shell) + (("^ *SHELL[[:blank:]]*=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)[[:blank:]]*(.*)$" + _ dir shell args) (let* ((old (string-append dir shell)) (new (or (find-shell shell) old))) (unless (string=? new old) (format (current-error-port) "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%" file old new)) - (string-append "SHELL = " new "\n")))) + (string-append "SHELL = " new " " args)))) (when keep-mtime? (set-file-time file st)))) From b5ef82e064daeb8452fe269892778eaf98e986d5 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 28 Aug 2014 15:34:17 -0400 Subject: [PATCH 19/28] gnu: Add missing import to (gnu packages base). * gnu/packages/base.scm: Import (gnu packages base). --- gnu/packages/base.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 38c6d4894e..cbe115f8a8 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -25,6 +25,7 @@ #:use-module (gnu packages) #:use-module (gnu packages acl) #:use-module (gnu packages bash) + #:use-module (gnu packages ed) #:use-module (gnu packages guile) #:use-module (gnu packages multiprecision) #:use-module (gnu packages perl) From 6646747c020402fd077a719af99627d9cf3fe54d Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 29 Aug 2014 18:28:50 -0400 Subject: [PATCH 20/28] gnu: gawk: Patch /usr/bin/file in extension/configure on MIPS. * gnu/packages/gawk.scm (gawk): When building for MIPS, patch /usr/bin/file in extension/configure. --- gnu/packages/gawk.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm index fd14b4c83e..84b5bd17a7 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -55,6 +55,14 @@ '((substitute* "extension/Makefile.in" (("^.*: check-for-shared-lib-support" match) (string-append "### " match)))) + '()) + + ;; XXX FIXME prerelease libtool fails on MIPS in the + ;; absence of /usr/bin/file. + ,@(if (equal? "mips64el-linux" (or (%current-target-system) + (%current-system))) + '((substitute* "extension/configure" + (("/usr/bin/file") (which "file")))) '()))) %standard-phases))) (inputs `(("libsigsegv" ,libsigsegv) From 11459384968f654c42ad7dba4443dada35191f5b Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Thu, 4 Sep 2014 09:19:24 -0500 Subject: [PATCH 21/28] utils: Clean trailing whitespace at end of SHELL * guix/build/utils.scm (patch-makefile-SHELL): Remove trailing whitespace. --- guix/build/utils.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index f38b2cabfc..d169053c7b 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -582,7 +582,7 @@ When KEEP-MTIME? is true, the atime/mtime of FILE are kept unchanged." (let ((st (stat file))) (substitute* file - (("^ *SHELL[[:blank:]]*=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)[[:blank:]]*(.*)$" + (("^ *SHELL[[:blank:]]*=[[:blank:]]*([[:graph:]]*/)([[:graph:]]+)(.*)$" _ dir shell args) (let* ((old (string-append dir shell)) (new (or (find-shell shell) old))) @@ -590,7 +590,7 @@ When KEEP-MTIME? is true, the atime/mtime of FILE are kept unchanged." (format (current-error-port) "patch-makefile-SHELL: ~a: changing `SHELL' from `~a' to `~a'~%" file old new)) - (string-append "SHELL = " new " " args)))) + (string-append "SHELL = " new args)))) (when keep-mtime? (set-file-time file st)))) From 39ccbfad1c1b56c4866563a60676cb35b6a17871 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 8 Sep 2014 11:05:45 -0400 Subject: [PATCH 22/28] gnu: glibc: Update to 2.20. * gnu/packages/patches/glibc-CVE-2014-5119.patch: Remove. * gnu-system.am (dist_patch_DATA): Remove it. * gnu/packages/base.scm (glibc): Update to 2.20. Remove patch. Raise minimum linux version to 2.6.32. --- gnu-system.am | 1 - gnu/packages/base.scm | 15 +- .../patches/glibc-CVE-2014-5119.patch | 212 ------------------ 3 files changed, 7 insertions(+), 221 deletions(-) delete mode 100644 gnu/packages/patches/glibc-CVE-2014-5119.patch diff --git a/gnu-system.am b/gnu-system.am index 510a217b98..a079fa2030 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -323,7 +323,6 @@ dist_patch_DATA = \ gnu/packages/patches/glib-tests-prlimit.patch \ gnu/packages/patches/glib-tests-timer.patch \ gnu/packages/patches/glibc-bootstrap-system.patch \ - gnu/packages/patches/glibc-CVE-2014-5119.patch \ gnu/packages/patches/glibc-ldd-x86_64.patch \ gnu/packages/patches/gnunet-fix-scheduler.patch \ gnu/packages/patches/gnunet-fix-tests.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index cbe115f8a8..5ecff76252 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -357,14 +357,14 @@ library for working with executable and object formats is also included.") (define-public glibc (package (name "glibc") - (version "2.19") + (version "2.20") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) (sha256 (base32 - "18m2dssd6ja5arxmdxinc90xvpqcsnqjfwmjl2as07j0i3srff9d")) + "19bbyfc2gcxr9rihrkkbd3p362i608yhlyrr7icqsa6cmr16sjzq")) (snippet ;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is ;; required on LFS distros to avoid loading the distro's libc.so @@ -373,8 +373,7 @@ library for working with executable and object formats is also included.") (("use_ldconfig=yes") "use_ldconfig=no"))) (modules '((guix build utils))) - (patches (list (search-patch "glibc-CVE-2014-5119.patch") - (search-patch "glibc-ldd-x86_64.patch"))))) + (patches (list (search-patch "glibc-ldd-x86_64.patch"))))) (build-system gnu-build-system) ;; Glibc's refers to , for instance, so glibc @@ -405,10 +404,10 @@ library for working with executable and object formats is also included.") (assoc-ref %build-inputs "linux-headers") "/include") - ;; The default is to assume a 2.4 Linux interface, but we'll - ;; always use something newer. See "kernel-features.h" in the - ;; GNU libc for details. - "--enable-kernel=2.6.30" + ;; This is the default for most architectures as of GNU libc 2.20, + ;; but we specify it explicitly for clarity and consistency. See + ;; "kernel-features.h" in the GNU libc for details. + "--enable-kernel=2.6.32" ;; Use our Bash instead of /bin/sh. (string-append "BASH_SHELL=" diff --git a/gnu/packages/patches/glibc-CVE-2014-5119.patch b/gnu/packages/patches/glibc-CVE-2014-5119.patch deleted file mode 100644 index de063a2da5..0000000000 --- a/gnu/packages/patches/glibc-CVE-2014-5119.patch +++ /dev/null @@ -1,212 +0,0 @@ -Remove support for loadable gconv transliteration modules. -The support for transliteration modules has been non-functional for -over a decade, and the removal is prompted by security defects. The -normal gconv conversion modules are still supported. Transliteration -with //TRANSLIT is still possible, and the //IGNORE specifier -continues to be supported. (CVE-2014-5119) - -Based on upstream commits a1a6a401ab0a3c9f15fb7eaebbdcee24192254e8 -and f9df71e895d3552d557e783fdb9d133328195645 -by Florian Weimer . - ---- glibc-2.19/ChangeLog.orig 2014-02-07 04:04:38.000000000 -0500 -+++ glibc-2.19/ChangeLog 2014-08-26 14:35:12.368861387 -0400 -@@ -1,3 +1,10 @@ -+2014-08-26 Florian Weimer -+ -+ [BZ #17187] -+ * iconv/gconv_trans.c (struct known_trans, search_tree, lock, -+ trans_compare, open_translit, __gconv_translit_find): -+ Remove module loading code. -+ - 2014-02-06 Carlos O'Donell - - [BZ #16529] ---- glibc-2.19/iconv/gconv_trans.c.orig 2014-02-07 04:04:38.000000000 -0500 -+++ glibc-2.19/iconv/gconv_trans.c 2014-08-26 14:37:26.269525364 -0400 -@@ -238,181 +238,12 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- --/* Structure to represent results of found (or not) transliteration -- modules. */ --struct known_trans --{ -- /* This structure must remain the first member. */ -- struct trans_struct info; -- -- char *fname; -- void *handle; -- int open_count; --}; -- -- --/* Tree with results of previous calls to __gconv_translit_find. */ --static void *search_tree; -- --/* We modify global data. */ --__libc_lock_define_initialized (static, lock); -- -- --/* Compare two transliteration entries. */ --static int --trans_compare (const void *p1, const void *p2) --{ -- const struct known_trans *s1 = (const struct known_trans *) p1; -- const struct known_trans *s2 = (const struct known_trans *) p2; -- -- return strcmp (s1->info.name, s2->info.name); --} -- -- --/* Open (maybe reopen) the module named in the struct. Get the function -- and data structure pointers we need. */ --static int --open_translit (struct known_trans *trans) --{ -- __gconv_trans_query_fct queryfct; -- -- trans->handle = __libc_dlopen (trans->fname); -- if (trans->handle == NULL) -- /* Not available. */ -- return 1; -- -- /* Find the required symbol. */ -- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context"); -- if (queryfct == NULL) -- { -- /* We cannot live with that. */ -- close_and_out: -- __libc_dlclose (trans->handle); -- trans->handle = NULL; -- return 1; -- } -- -- /* Get the context. */ -- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames) -- != 0) -- goto close_and_out; -- -- /* Of course we also have to have the actual function. */ -- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans"); -- if (trans->info.trans_fct == NULL) -- goto close_and_out; -- -- /* Now the optional functions. */ -- trans->info.trans_init_fct = -- __libc_dlsym (trans->handle, "gconv_trans_init"); -- trans->info.trans_context_fct = -- __libc_dlsym (trans->handle, "gconv_trans_context"); -- trans->info.trans_end_fct = -- __libc_dlsym (trans->handle, "gconv_trans_end"); -- -- trans->open_count = 1; -- -- return 0; --} -- -- - int - internal_function - __gconv_translit_find (struct trans_struct *trans) - { -- struct known_trans **found; -- const struct path_elem *runp; -- int res = 1; -- -- /* We have to have a name. */ -- assert (trans->name != NULL); -- -- /* Acquire the lock. */ -- __libc_lock_lock (lock); -- -- /* See whether we know this module already. */ -- found = __tfind (trans, &search_tree, trans_compare); -- if (found != NULL) -- { -- /* Is this module available? */ -- if ((*found)->handle != NULL) -- { -- /* Maybe we have to reopen the file. */ -- if ((*found)->handle != (void *) -1) -- /* The object is not unloaded. */ -- res = 0; -- else if (open_translit (*found) == 0) -- { -- /* Copy the data. */ -- *trans = (*found)->info; -- (*found)->open_count++; -- res = 0; -- } -- } -- } -- else -- { -- size_t name_len = strlen (trans->name) + 1; -- int need_so = 0; -- struct known_trans *newp; -- -- /* We have to continue looking for the module. */ -- if (__gconv_path_elem == NULL) -- __gconv_get_path (); -- -- /* See whether we have to append .so. */ -- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0) -- need_so = 1; -- -- /* Create a new entry. */ -- newp = (struct known_trans *) malloc (sizeof (struct known_trans) -- + (__gconv_max_path_elem_len -- + name_len + 3) -- + name_len); -- if (newp != NULL) -- { -- char *cp; -- -- /* Clear the struct. */ -- memset (newp, '\0', sizeof (struct known_trans)); -- -- /* Store a copy of the module name. */ -- newp->info.name = cp = (char *) (newp + 1); -- cp = __mempcpy (cp, trans->name, name_len); -- -- newp->fname = cp; -- -- /* Search in all the directories. */ -- for (runp = __gconv_path_elem; runp->name != NULL; ++runp) -- { -- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name), -- trans->name, name_len); -- if (need_so) -- memcpy (cp, ".so", sizeof (".so")); -- -- if (open_translit (newp) == 0) -- { -- /* We found a module. */ -- res = 0; -- break; -- } -- } -- -- if (res) -- newp->fname = NULL; -- -- /* In any case we'll add the entry to our search tree. */ -- if (__tsearch (newp, &search_tree, trans_compare) == NULL) -- { -- /* Yickes, this should not happen. Unload the object. */ -- res = 1; -- /* XXX unload here. */ -- } -- } -- } -- -- __libc_lock_unlock (lock); -- -- return res; -+ /* Transliteration module loading has been removed because it never -+ worked as intended and suffered from a security vulnerability. -+ Consequently, this function always fails. */ -+ return 1; - } From da5538ef44bfa74d3e435f9f557374eabba5dc1e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 8 Sep 2014 12:40:28 -0400 Subject: [PATCH 23/28] gnu: libunistring: Update to 0.9.4. * gnu/packages/libunistring.scm (libunistring): Update to 0.9.4. --- gnu/packages/libunistring.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm index a7681009ac..ddafd74202 100644 --- a/gnu/packages/libunistring.scm +++ b/gnu/packages/libunistring.scm @@ -25,7 +25,7 @@ (define-public libunistring (package (name "libunistring") - (version "0.9.3") + (version "0.9.4") (source (origin (method url-fetch) (uri (string-append @@ -33,7 +33,7 @@ version ".tar.gz")) (sha256 (base32 - "18q620269xzpw39dwvr9zpilnl2dkw5z5kz3mxaadnpv4k3kw3b1")))) + "19nqvn19hz25ig9dbmh2di5j1r7v852x9mlnq0nr0hka51ins97m")))) (propagated-inputs '()) ; FIXME: add libiconv when !glibc (build-system gnu-build-system) (arguments From 9d77da2a47ddb707edcbd1ca17f5c0ac3c068b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 12 Sep 2014 22:05:50 +0200 Subject: [PATCH 24/28] gnu: util-linux: Don't install 'logger'. * gnu/packages/linux.scm (util-linux)[source]: Add 'snippet'. --- gnu/packages/linux.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 7be0d076ec..04d0458dc9 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -378,7 +378,16 @@ providing the system administrator with some help in common tasks.") (sha256 (base32 "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir")) - (patches (list (search-patch "util-linux-perl.patch"))))) + (patches (list (search-patch "util-linux-perl.patch"))) + (modules '((guix build utils))) + (snippet + ;; We take the 'logger' program from GNU Inetutils, so remove + ;; it from here. + '(substitute* "misc-utils/Makefile.in" + (("PROGRAMS =(.*) logger(.*)" _ before after) + (string-append "PROGRAMS =" before " " after)) + (("MANS =(.*) logger\\.1(.*)" _ before after) + (string-append "MANS =" before " " after)))))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-use-tty-group" From de61113857d3ebda1f4557c5a8f6bffe63100060 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Sat, 13 Sep 2014 01:05:03 -0500 Subject: [PATCH 25/28] utils: Allow wrap-program to be called multiple times. * guix/build/utils.scm (wrap-program): Multiple invocations of wrap-program for the same file create successive wrappers. Adjust docstring. * tests/build-utils.scm: Test new wrap-program behavior. (%store): New variable. --- guix/build/utils.scm | 44 ++++++++++++++++++++++++--------- tests/build-utils.scm | 57 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 88 insertions(+), 13 deletions(-) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index d169053c7b..7257b30dfd 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -687,8 +687,7 @@ known as `nuke-refs' in Nixpkgs." result)))))) (define* (wrap-program prog #:rest vars) - "Rename PROG to .PROG-real and make PROG a wrapper. VARS should look like -this: + "Make a wrapper for PROG. VARS should look like this: '(VARIABLE DELIMITER POSITION LIST-OF-DIRECTORIES) @@ -697,23 +696,44 @@ where DELIMITER is optional. ':' will be used if DELIMITER is not given. For example, this command: (wrap-program \"foo\" - '(\"PATH\" \":\" = (\"/nix/.../bar/bin\")) - '(\"CERT_PATH\" suffix (\"/nix/.../baz/certs\" + '(\"PATH\" \":\" = (\"/gnu/.../bar/bin\")) + '(\"CERT_PATH\" suffix (\"/gnu/.../baz/certs\" \"/qux/certs\"))) will copy 'foo' to '.foo-real' and create the file 'foo' with the following contents: #!location/of/bin/bash - export PATH=\"/nix/.../bar/bin\" - export CERT_PATH=\"$CERT_PATH${CERT_PATH:+:}/nix/.../baz/certs:/qux/certs\" + export PATH=\"/gnu/.../bar/bin\" + export CERT_PATH=\"$CERT_PATH${CERT_PATH:+:}/gnu/.../baz/certs:/qux/certs\" exec location/of/.foo-real This is useful for scripts that expect particular programs to be in $PATH, for programs that expect particular shared libraries to be in $LD_LIBRARY_PATH, or -modules in $GUILE_LOAD_PATH, etc." - (let ((prog-real (string-append (dirname prog) "/." (basename prog) "-real")) - (prog-tmp (string-append (dirname prog) "/." (basename prog) "-tmp"))) +modules in $GUILE_LOAD_PATH, etc. + +If PROG has previously been wrapped by wrap-program the wrapper will point to +the previous wrapper." + (define (wrapper-file-name number) + (format #f "~a/.~a-wrap-~2'0d" (dirname prog) (basename prog) number)) + (define (next-wrapper-number) + (let ((wrappers + (find-files (dirname prog) + (string-append "\\." (basename prog) "-wrap-.*")))) + (if (null? wrappers) + 0 + (string->number (string-take-right (last wrappers) 2))))) + (define (wrapper-target number) + (if (zero? number) + (let ((prog-real (string-append (dirname prog) "/." + (basename prog) "-real"))) + (copy-file prog prog-real) + prog-real) + (wrapper-file-name number))) + (let* ((number (next-wrapper-number)) + (target (wrapper-target number)) + (wrapper (wrapper-file-name (1+ number))) + (prog-tmp (string-append target "-tmp"))) (define (export-variable lst) ;; Return a string that exports an environment variable. (match lst @@ -736,8 +756,6 @@ modules in $GUILE_LOAD_PATH, etc." (format #f "export ~a=\"$~a${~a:+:}~a\"" var var var (string-join rest ":"))))) - (copy-file prog prog-real) - (with-output-to-file prog-tmp (lambda () (format #t @@ -745,9 +763,11 @@ modules in $GUILE_LOAD_PATH, etc." (which "bash") (string-join (map export-variable vars) "\n") - (canonicalize-path prog-real)))) + (canonicalize-path target)))) (chmod prog-tmp #o755) + (rename-file prog-tmp wrapper) + (symlink wrapper prog-tmp) (rename-file prog-tmp prog))) ;;; Local Variables: diff --git a/tests/build-utils.scm b/tests/build-utils.scm index e94f04b239..a5ea640c47 100644 --- a/tests/build-utils.scm +++ b/tests/build-utils.scm @@ -18,9 +18,24 @@ (define-module (test-build-utils) + #:use-module (guix tests) + #:use-module (guix store) + #:use-module (guix derivations) #:use-module (guix build utils) - #:use-module (srfi srfi-64)) + #:use-module (guix packages) + #:use-module (guix build-system) + #:use-module (guix build-system trivial) + #:use-module (gnu packages) + #:use-module (gnu packages bootstrap) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-64) + #:use-module (rnrs io ports) + #:use-module (ice-9 popen)) +(define %store + (open-connection-for-tests)) + + (test-begin "build-utils") (test-equal "alist-cons-before" @@ -80,6 +95,46 @@ port cons))))) +(test-assert "wrap-program, one input, multiple calls" + (let* ((p (package + (name "test-wrap-program") (version "0") (source #f) + (synopsis #f) (description #f) (license #f) (home-page #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (foo (string-append out "/foo"))) + (begin + (use-modules (guix build utils)) + (mkdir out) + (call-with-output-file foo + (lambda (p) + (format p + "#!~a~%echo \"${GUIX_FOO} ${GUIX_BAR}\"~%" + bash))) + (chmod foo #o777) + ;; wrap-program uses `which' to find bash for the wrapper + ;; shebang, but it can't know about the bootstrap bash in + ;; the store, since it's not named "bash". Help it out a + ;; bit by providing a symlink it this package's output. + (symlink bash (string-append out "/bash")) + (setenv "PATH" out) + (wrap-program foo `("GUIX_FOO" prefix ("hello"))) + (wrap-program foo `("GUIX_BAR" prefix ("world"))) + #t)))) + (inputs `(("bash" ,(search-bootstrap-binary "bash" + (%current-system))))))) + (d (package-derivation %store p))) + (and (build-derivations %store (pk 'drv d (list d))) + (let* ((p (derivation->output-path d)) + (foo (string-append p "/foo")) + (pipe (open-input-pipe foo)) + (str (get-string-all pipe))) + (equal? str "hello world\n"))))) + (test-end) From c041886d920f2361702c412e0e19e55184fbf7b6 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 14 Sep 2014 11:54:25 -0400 Subject: [PATCH 26/28] utils: Import (ice-9 format). * guix/build/utils.scm: Import (ice-9 format). --- guix/build/utils.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 7257b30dfd..cda4fb12ef 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -25,6 +25,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 rdelim) + #:use-module (ice-9 format) #:use-module (rnrs bytevectors) #:use-module (rnrs io ports) #:re-export (alist-cons From 6904ecce5fdd25a9564050101f1003a4d75e7bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 17 Sep 2014 17:17:43 +0200 Subject: [PATCH 27/28] gnu: gcc-4.8.3: Add patch for PR61801. * gnu/packages/patches/gcc-fix-pr61801.patch: New file. * gnu/packages/gcc.scm (gcc-4.8): Use it. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/gcc.scm | 3 ++- gnu/packages/patches/gcc-fix-pr61801.patch | 25 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/gcc-fix-pr61801.patch diff --git a/gnu-system.am b/gnu-system.am index 93afd9fb50..7d6763c5ec 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -327,6 +327,7 @@ dist_patch_DATA = \ gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gcc-cross-environment-variables.patch \ + gnu/packages/patches/gcc-fix-pr61801.patch \ gnu/packages/patches/gd-mips64-deplibs-fix.patch \ gnu/packages/patches/glib-tests-desktop.patch \ gnu/packages/patches/glib-tests-homedir.patch \ diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 66888389d4..02601585b9 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -268,7 +268,8 @@ Go. It also includes runtime support libraries for these languages.") version "/gcc-" version ".tar.bz2")) (sha256 (base32 - "07hg10zs7gnqz58my10ch0zygizqh0z0bz6pv4pgxx45n48lz3ka")))))) + "07hg10zs7gnqz58my10ch0zygizqh0z0bz6pv4pgxx45n48lz3ka")) + (patches (list (search-patch "gcc-fix-pr61801.patch"))))))) (define-public gcc-4.9 (package (inherit gcc-4.7) diff --git a/gnu/packages/patches/gcc-fix-pr61801.patch b/gnu/packages/patches/gcc-fix-pr61801.patch new file mode 100644 index 0000000000..e9cd92aa1c --- /dev/null +++ b/gnu/packages/patches/gcc-fix-pr61801.patch @@ -0,0 +1,25 @@ +GCC bug fix for . +Initially discussed at + . +Patch from . + +2014-07-17 Richard Biener + + PR rtl-optimization/61801 + + * sched-deps.c (sched_analyze_2): For ASM_OPERANDS and + ASM_INPUT don't set reg_pending_barrier if it appears in a + debug-insn. + +--- gcc-4_8-branch/gcc/sched-deps.c 2014/07/17 07:48:49 212739 ++++ gcc-4_8-branch/gcc/sched-deps.c 2014/07/17 07:49:44 212740 +@@ -2744,7 +2744,8 @@ + Consider for instance a volatile asm that changes the fpu rounding + mode. An insn should not be moved across this even if it only uses + pseudo-regs because it might give an incorrectly rounded result. */ +- if (code != ASM_OPERANDS || MEM_VOLATILE_P (x)) ++ if ((code != ASM_OPERANDS || MEM_VOLATILE_P (x)) ++ && !DEBUG_INSN_P (insn)) + reg_pending_barrier = TRUE_BARRIER; + + /* For all ASM_OPERANDS, we must traverse the vector of input operands. From dd68dd137a4a70cde7e344bd969ef7849355d018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 20 Sep 2014 14:15:17 +0200 Subject: [PATCH 28/28] gnu: cyrus-sasl: Build sequentially. * gnu/packages/cyrus-sasl.scm (cyrus-sasl)[arguments]: Pass #:parallel-build?. --- gnu/packages/cyrus-sasl.scm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm index 1913f93f0d..0c92cc36a1 100644 --- a/gnu/packages/cyrus-sasl.scm +++ b/gnu/packages/cyrus-sasl.scm @@ -49,7 +49,13 @@ (arguments '(#:configure-flags (list (string-append "--with-plugindir=" (assoc-ref %outputs "out") - "/lib/sasl2")))) + "/lib/sasl2")) + + ;; The 'plugins' directory has shared source files, such as + ;; 'plugin_common.c'. When building the shared libraries there, libtool + ;; ends up doing "ln -s plugin_common.lo plugin_common.o", which can + ;; fail with EEXIST when building things in parallel. + #:parallel-build? #f)) (synopsis "Cyrus SASL, an implementation of the Simple Authentication Security Layer framework") (description "SASL (Simple Authentication Security Layer) is an Internet