diff options
-rw-r--r-- | distro/packages/base.scm | 7 | ||||
-rw-r--r-- | distro/packages/bootstrap.scm | 5 | ||||
-rw-r--r-- | distro/packages/multiprecision.scm | 15 | ||||
-rw-r--r-- | guix/build/gnu-build-system.scm | 16 |
4 files changed, 31 insertions, 12 deletions
diff --git a/distro/packages/base.scm b/distro/packages/base.scm index 1b08bfda8a..f0dd150e12 100644 --- a/distro/packages/base.scm +++ b/distro/packages/base.scm @@ -775,6 +775,7 @@ identifier SYSTEM." (let* ((binutils (assoc-ref %build-inputs "binutils")) (gcc (assoc-ref %build-inputs "gcc")) (libc (assoc-ref %build-inputs "libc")) + (bash (assoc-ref %build-inputs "bash")) (out (assoc-ref %outputs "out")) (bindir (string-append out "/bin")) (triplet ,(boot-triplet system))) @@ -791,8 +792,9 @@ identifier SYSTEM." ;; the dynamic linker. (call-with-output-file "gcc" (lambda (p) - (format p "#!/bin/sh + (format p "#!~a/bin/bash exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" + bash gcc triplet libc libc ,(glibc-dynamic-linker system)))) @@ -801,7 +803,8 @@ exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (native-inputs `(("binutils" ,binutils-boot0) ("gcc" ,gcc-boot0) - ("libc" ,glibc-final))) + ("libc" ,glibc-final) + ,(assoc "bash" %boot1-inputs))) (inputs '()))) (define %boot2-inputs diff --git a/distro/packages/bootstrap.scm b/distro/packages/bootstrap.scm index 2349204755..6dc9c3d965 100644 --- a/distro/packages/bootstrap.scm +++ b/distro/packages/bootstrap.scm @@ -367,6 +367,9 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ `(("libc" ,%bootstrap-glibc) ("gcc" ,%bootstrap-gcc) ("binutils" ,%bootstrap-binutils) - ("coreutils&co" ,%bootstrap-coreutils&co))) + ("coreutils&co" ,%bootstrap-coreutils&co) + + ;; In gnu-build-system.scm, we rely on the availability of Bash. + ("bash" ,%bootstrap-coreutils&co))) ;;; bootstrap.scm ends here diff --git a/distro/packages/multiprecision.scm b/distro/packages/multiprecision.scm index 69a05b78bb..cef09b8df8 100644 --- a/distro/packages/multiprecision.scm +++ b/distro/packages/multiprecision.scm @@ -96,14 +96,13 @@ double-precision floating-point arithmetic (53-bit mantissa).") (define-public mpc (package (name "mpc") - (version "1.0") + (version "1.0.1") (source (origin (method url-fetch) (uri (string-append - "http://www.multiprecision.org/mpc/download/mpc-" - version ".tar.gz")) + "mirror://gnu/mpc/mpc-" version ".tar.gz")) (sha256 (base32 - "00rxjmkpqnv6zzcyw9aa5w6rzaav32ys87km25zgfcv9i32km5cw")))) + "1zq0fidp1jii2j5k5n9hmx55a6wwid33gjzhimvxq9d5zrf82npd")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp) ("mpfr" ,mpfr))) @@ -111,7 +110,11 @@ double-precision floating-point arithmetic (53-bit mantissa).") with exact rounding") (description "GNU MPC is a C library for the arithmetic of complex numbers with -arbitrarily high precision and correct rounding of the result. It is built -upon and follows the same principles as GNU MPFR.") +arbitrarily high precision and correct rounding of the result. It extends +the principles of the IEEE-754 standard for fixed precision real floating +point numbers to complex numbers, providing well-defined semantics for +every operation. At the same time, speed of operation at high precision +is a major design goal. The library is built upon and follows the same +principles as GNU MPFR.") (license lgpl3+) (home-page "http://mpc.multiprecision.org/"))) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 2b7d1c180e..efee570292 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -90,12 +90,17 @@ (append patch-flags (list "--input" p))))) patches)) -(define* (configure #:key outputs (configure-flags '()) out-of-source? +(define* (configure #:key inputs outputs (configure-flags '()) out-of-source? #:allow-other-keys) (let* ((prefix (assoc-ref outputs "out")) (libdir (assoc-ref outputs "lib")) (includedir (assoc-ref outputs "include")) - (flags `(,(string-append "--prefix=" prefix) + (bash (or (and=> (assoc-ref inputs "bash") + (cut string-append <> "/bin/bash")) + "/bin/sh")) + (flags `(,(string-append "CONFIG_SHELL=" bash) + ,(string-append "SHELL=" bash) + ,(string-append "--prefix=" prefix) "--enable-fast-install" ; when using Libtool ;; Produce multiple outputs when specific output names @@ -121,10 +126,15 @@ (format #t "build directory: ~s~%" (getcwd)) (format #t "configure flags: ~s~%" flags) + ;; Use BASH to reduce reliance on /bin/sh since it may not always be + ;; reliable (see + ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/9748> + ;; for a summary of the situation.) + ;; ;; Call `configure' with a relative path. Otherwise, GCC's build system ;; (for instance) records absolute source file names, which typically ;; contain the hash part of the `.drv' file, leading to a reference leak. - (zero? (apply system* + (zero? (apply system* bash (string-append srcdir "/configure") flags)))) |