diff options
-rw-r--r-- | gnu/packages/admin.scm | 11 | ||||
-rw-r--r-- | gnu/packages/base.scm | 13 | ||||
-rw-r--r-- | gnu/packages/gawk.scm | 4 | ||||
-rw-r--r-- | gnu/packages/multiprecision.scm | 4 | ||||
-rw-r--r-- | gnu/packages/ncurses.scm | 11 | ||||
-rw-r--r-- | guix/build/gnu-build-system.scm | 6 | ||||
-rw-r--r-- | guix/build/utils.scm | 61 |
7 files changed, 67 insertions, 43 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index df968c4846..fded33c60b 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -205,16 +205,7 @@ client and server, a telnet client and server, and an rsh client and server.") (delete-file (string-append bin "/groups")) (for-each delete-file (find-files man "^groups\\.")) #t)) - (alist-cons-after - 'unpack 'reset-timestamps - (lambda _ - ;; FIXME: Reset the file timestamps here, until the - ;; 'unpack' phase does it for us. See - ;; <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00098.html>. - (for-each (lambda (file) - (utime file 0 0 0)) - (find-files "." ""))) - %standard-phases))))) + %standard-phases)))) (inputs (if (string-suffix? "-linux" (or (%current-target-system) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 09cbe8915b..0139a6b506 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; @@ -728,9 +729,13 @@ identifier SYSTEM." source))) (list gmp mpfr mpc)) - ;; Create symlinks like `gmp' -> `gmp-5.0.5'. + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. ,@(map (lambda (lib) - `(symlink ,(package-full-name lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib) + char-set:letter) ,(package-name lib))) (list gmp mpfr mpc)))) (alist-cons-after @@ -1002,6 +1007,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ((#:phases phases) `(alist-delete 'symlink-libgcc_eh ,phases))))) + ;; This time we want Texinfo, so we get the manual. + (native-inputs `(("texinfo" ,texinfo-boot0) + ,@(package-native-inputs gcc-boot0))) + (inputs `(("gmp-source" ,(package-source gmp)) ("mpfr-source" ,(package-source mpfr)) ("mpc-source" ,(package-source mpc)) diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm index 9b22a1e5b8..fe422a2014 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -27,13 +27,13 @@ (define-public gawk (package (name "gawk") - (version "4.1.0") + (version "4.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gawk/gawk-" version ".tar.xz")) (sha256 - (base32 "0hin2hswbbd6kd6i4zzvgciwpl5fba8d2s524z8y5qagyz3x010q")))) + (base32 "1nz83vpss8xv7m475sv4qhhj40g74nvcw0y9kwq9ds8wzfmcdm7g")))) (build-system gnu-build-system) (arguments `(#:parallel-tests? #f ; test suite fails in parallel diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm index b77e307aea..377d922a09 100644 --- a/gnu/packages/multiprecision.scm +++ b/gnu/packages/multiprecision.scm @@ -27,7 +27,7 @@ (define-public gmp (package (name "gmp") - (version "5.1.3") + (version "6.0.0a") (source (origin (method url-fetch) (uri @@ -35,7 +35,7 @@ version ".tar.xz")) (sha256 (base32 - "0wbhn3wih61vjcs94q531fipfvvzqfq2v4qr03rl3xaggyiyvqny")))) + "0r5pp27cy7ch3dg5v0rsny8bib1zfvrza6027g2mp5f6v8pd6mli")))) (build-system gnu-build-system) (native-inputs `(("m4" ,m4))) (outputs '("out" "debug")) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index b8f6bc834b..95ad57a10c 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -52,7 +52,6 @@ (("cross_compiling:=no") "cross_compiling:=yes")))) (post-install-phase - ;; FIXME: The `tic' binary lacks a RUNPATH; fix it. '(lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) ;; When building a wide-character (Unicode) build, create backward @@ -95,6 +94,9 @@ `(#:configure-flags `("--with-shared" "--without-debug" "--enable-widec" + ;; Create a separate libtinfo.so, as many distributions do. + "--with-termlib" + ;; By default headers land in an `ncursesw' subdir, which is not ;; what users expect. ,(string-append "--includedir=" (assoc-ref %outputs "out") @@ -105,6 +107,11 @@ ,(string-append "--mandir=" (assoc-ref %outputs "out") "/share/man") + ;; Make sure programs like 'tic', 'reset', and 'clear' have a + ;; correct RUNPATH. + ,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") + "/lib") + ;; C++ bindings fail to build on ;; `i386-pc-solaris2.11' with GCC 3.4.3: ;; <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6395191>. diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index da6b31c326..8636931ed9 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -97,7 +97,11 @@ working directory." (begin (mkdir "source") (chdir "source") - (copy-recursively source ".") + + ;; Preserve timestamps (set to the Epoch) on the copied tree so that + ;; things work deterministically. + (copy-recursively source "." + #:keep-mtime? #t) #t) (and (zero? (system* "tar" "xvf" source)) (chdir (first-subdirectory "."))))) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 40af785b88..2f3dc9cad0 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -134,9 +134,12 @@ return values of applying PROC to the port." (define* (copy-recursively source destination #:key (log (current-output-port)) - (follow-symlinks? #f)) + (follow-symlinks? #f) + keep-mtime?) "Copy SOURCE directory to DESTINATION. Follow symlinks if FOLLOW-SYMLINKS? -is true; otherwise, just preserve them. Write verbose output to the LOG port." +is true; otherwise, just preserve them. When KEEP-MTIME? is true, keep the +modification time of the files in SOURCE on those of DESTINATION. Write +verbose output to the LOG port." (define strip-source (let ((len (string-length source))) (lambda (file) @@ -152,10 +155,15 @@ is true; otherwise, just preserve them. Write verbose output to the LOG port." (let ((target (readlink file))) (symlink target dest))) (else - (copy-file file dest))))) + (copy-file file dest) + (when keep-mtime? + (set-file-time dest stat)))))) (lambda (dir stat result) ; down - (mkdir-p (string-append destination - (strip-source dir)))) + (let ((target (string-append destination + (strip-source dir)))) + (mkdir-p target) + (when keep-mtime? + (set-file-time target stat)))) (lambda (dir stat result) ; up result) (const #t) ; skip @@ -170,25 +178,30 @@ is true; otherwise, just preserve them. Write verbose output to the LOG port." stat lstat))) -(define (delete-file-recursively dir) - "Delete DIR recursively, like `rm -rf', without following symlinks. Report -but ignore errors." - (file-system-fold (const #t) ; enter? - (lambda (file stat result) ; leaf - (delete-file file)) - (const #t) ; down - (lambda (dir stat result) ; up - (rmdir dir)) - (const #t) ; skip - (lambda (file stat errno result) - (format (current-error-port) - "warning: failed to delete ~a: ~a~%" - file (strerror errno))) - #t - dir - - ;; Don't follow symlinks. - lstat)) +(define* (delete-file-recursively dir + #:key follow-mounts?) + "Delete DIR recursively, like `rm -rf', without following symlinks. Don't +follow mount points either, unless FOLLOW-MOUNTS? is true. Report but ignore +errors." + (let ((dev (stat:dev (lstat dir)))) + (file-system-fold (lambda (dir stat result) ; enter? + (or follow-mounts? + (= dev (stat:dev stat)))) + (lambda (file stat result) ; leaf + (delete-file file)) + (const #t) ; down + (lambda (dir stat result) ; up + (rmdir dir)) + (const #t) ; skip + (lambda (file stat errno result) + (format (current-error-port) + "warning: failed to delete ~a: ~a~%" + file (strerror errno))) + #t + dir + + ;; Don't follow symlinks. + lstat))) (define (find-files dir regexp) "Return the lexicographically sorted list of files under DIR whose basename |