summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/base.scm10
-rw-r--r--gnu/packages/patches/glibc-ldd-x86_64.patch10
-rw-r--r--guix/build/utils.scm39
-rw-r--r--guix/scripts/pull.scm4
5 files changed, 39 insertions, 25 deletions
diff --git a/gnu-system.am b/gnu-system.am
index a7fbb27252..e2eb043deb 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -210,6 +210,7 @@ dist_patch_DATA = \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
+ gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index b8efb6e9d8..5a32e57535 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -387,14 +387,14 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(define-public glibc
(package
(name "glibc")
- (version "2.17")
+ (version "2.18")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz"))
(sha256
(base32
- "0gmjnn4kma9vgizccw1jv979xw55a8n1nkk94gg0l3hy80vy6539"))))
+ "18spla703zav8dq9fw7rbzkyv9qfisxb26p7amg1x3wjh7iy3d1c"))))
(build-system gnu-build-system)
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@@ -409,7 +409,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(arguments
`(#:out-of-source? #t
- #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
+ #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache")
+ (assoc-ref %build-inputs "patch/ldd"))
#:configure-flags
(list "--enable-add-ons"
"--sysconfdir=/etc"
@@ -422,7 +423,6 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(assoc-ref %outputs "locales")
"/share/locale")
-
(string-append "--with-headers="
(assoc-ref %build-inputs "linux-headers")
"/include")
@@ -496,6 +496,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(inputs `(("patch/ld.so.cache"
,(search-patch "glibc-no-ld-so-cache.patch"))
+ ("patch/ldd"
+ ,(search-patch "glibc-ldd-x86_64.patch"))
("static-bash" ,(static-package bash-light))))
(synopsis "The GNU C Library")
(description
diff --git a/gnu/packages/patches/glibc-ldd-x86_64.patch b/gnu/packages/patches/glibc-ldd-x86_64.patch
new file mode 100644
index 0000000000..b1b6d5a548
--- /dev/null
+++ b/gnu/packages/patches/glibc-ldd-x86_64.patch
@@ -0,0 +1,10 @@
+By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
+it's in 'lib/' for us. This patch fixes that.
+
+--- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2012-12-25 04:02:13.000000000 +0100
++++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2013-09-15 23:08:03.000000000 +0200
+@@ -1,3 +1,3 @@
+ /LD_TRACE_LOADED_OBJECTS=1/a\
+ add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
+-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
++s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index 06e88b1ff8..8cc9c1ee1f 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -185,29 +185,32 @@ but ignore errors."
lstat))
(define (find-files dir regexp)
- "Return the list of files under DIR whose basename matches REGEXP."
+ "Return the lexicographically sorted list of files under DIR whose basename
+matches REGEXP."
(define file-rx
(if (regexp? regexp)
regexp
(make-regexp regexp)))
- (file-system-fold (const #t)
- (lambda (file stat result) ; leaf
- (if (regexp-exec file-rx (basename file))
- (cons file result)
- result))
- (lambda (dir stat result) ; down
- result)
- (lambda (dir stat result) ; up
- result)
- (lambda (file stat result) ; skip
- result)
- (lambda (file stat errno result)
- (format (current-error-port) "find-files: ~a: ~a~%"
- file (strerror errno))
- #f)
- '()
- dir))
+ ;; Sort the result to get deterministic results.
+ (sort (file-system-fold (const #t)
+ (lambda (file stat result) ; leaf
+ (if (regexp-exec file-rx (basename file))
+ (cons file result)
+ result))
+ (lambda (dir stat result) ; down
+ result)
+ (lambda (dir stat result) ; up
+ result)
+ (lambda (file stat result) ; skip
+ result)
+ (lambda (file stat errno result)
+ (format (current-error-port) "find-files: ~a: ~a~%"
+ file (strerror errno))
+ #f)
+ '()
+ dir)
+ string<?))
;;;
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index a1b5cdc991..023b83e6a3 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -115,9 +115,7 @@ files."
;; download), we must build it first to avoid errors since
;; (gnutls) is unavailable.
(cons (string-append out "/guix/build/download.scm")
-
- ;; Sort the file names to get deterministic results.
- (sort (find-files out "\\.scm") string<?)))
+ (find-files out "\\.scm")))
;; Remove the "fake" (guix config).
(delete-file (string-append out "/guix/config.scm"))