aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/bdw-gc.scm23
-rw-r--r--gnu/packages/ld-wrapper.scm29
-rw-r--r--gnu/packages/make-bootstrap.scm8
3 files changed, 28 insertions, 32 deletions
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index e119fc0bb9..bebb0862e3 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -25,7 +25,7 @@
(define-public libgc
(package
(name "libgc")
- (version "7.2alpha6")
+ (version "7.2d")
(source (origin
(method url-fetch)
(uri (string-append
@@ -33,9 +33,12 @@
version ".tar.gz"))
(sha256
(base32
- "05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b"))))
+ "0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"))))
(build-system gnu-build-system)
- ;; TODO: Build with -DUSE_LIBC_PRIVATES (see make-bootstrap.scm).
+ (arguments
+ ;; Make it so that we don't rely on /proc. This is especially useful in
+ ;; an initrd run before /proc is mounted.
+ '(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))
(synopsis "The Boehm-Demers-Weiser conservative garbage collector
for C and C++")
(description
@@ -58,17 +61,3 @@ C or C++ programs, though that is not its primary goal.")
;; permissive X11-style license:
;; http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt
(license x11)))
-
-(define-public libgc-7.2
- ;; This is the latest final release of the 7.2 series.
- ;; TODO: Use it as the default when doing a core-updates.
- (package (inherit libgc)
- (version "7.2d")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-"
- version ".tar.gz"))
- (sha256
- (base32
- "0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"))))))
diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm
index fd5a4cbd0c..41ff3df986 100644
--- a/gnu/packages/ld-wrapper.scm
+++ b/gnu/packages/ld-wrapper.scm
@@ -11,7 +11,7 @@ main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@"
!#
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -82,13 +82,26 @@ exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "
(getenv "GUIX_LD_WRAPPER_DEBUG"))
(define (pure-file-name? file)
- ;; Return #t when FILE is the name of a file either within the store or
- ;; within the build directory.
- (or (not (string-prefix? "/" file))
- (string-prefix? %store-directory file)
- (string-prefix? %temporary-directory file)
- (and %build-directory
- (string-prefix? %build-directory file))))
+ ;; Return #t when FILE is the name of a file either within the store
+ ;; (possibly via a symlink) or within the build directory.
+ (define %max-symlink-depth 50)
+
+ (let loop ((file file)
+ (depth 0))
+ (or (not (string-prefix? "/" file))
+ (string-prefix? %store-directory file)
+ (string-prefix? %temporary-directory file)
+ (if %build-directory
+ (string-prefix? %build-directory file)
+
+ ;; When used from a user environment, FILE may refer to
+ ;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the
+ ;; store. Check whether this is the case.
+ (let ((s (false-if-exception (lstat file))))
+ (and s
+ (eq? 'symlink (stat:type s))
+ (< depth %max-symlink-depth)
+ (loop (readlink file) (+ 1 depth))))))))
(define (switch-arguments switch args)
;; Return the arguments passed for the occurrences of SWITCH--e.g.,
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 9b16f37031..c8de969b1a 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -410,13 +410,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; A statically-linked Guile that is relocatable--i.e., it can search
;; .scm and .go files relative to its installation directory, rather
;; than in hard-coded configure-time paths.
- (let* ((libgc (package (inherit libgc)
- (arguments
- ;; Make it so that we don't rely on /proc. This is
- ;; especially useful in an initrd run before /proc is
- ;; mounted.
- '(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))))
- (guile (package (inherit guile-2.0)
+ (let* ((guile (package (inherit guile-2.0)
(name (string-append (package-name guile-2.0) "-static"))
(inputs
`(("patch/relocatable"