diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-02-08 17:38:57 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-02-08 17:38:57 +0100 |
commit | d8707db0f7bdad53ef0b61350027255a73960ff0 (patch) | |
tree | d67cf4a939aab80b091c81dec83d7193cc849c88 /gnu | |
parent | 2d73db7a05d0f83232e44d6524450daf028ba4f6 (diff) | |
download | patches-d8707db0f7bdad53ef0b61350027255a73960ff0.tar patches-d8707db0f7bdad53ef0b61350027255a73960ff0.tar.gz |
gnu: hop: Add `patch-rpath' phase.
* gnu/packages/scheme.scm (hop): Add `patch-rpath' phase.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/scheme.scm | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index d919e4b767..ac14d2b56a 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages emacs) #:use-module (gnu packages texinfo) + #:use-module (gnu packages patchelf) #:use-module (gnu packages which) #:use-module (ice-9 match)) @@ -183,17 +184,52 @@ between Scheme and C# programs.") "04fhy5jp9lq12fmdqfjzj1w32f7nxc80fagbj7pfci7xh86nm2c5")))) (build-system gnu-build-system) (arguments - '(#:phases (alist-replace - 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (zero? - (system* "./configure" - (string-append"--prefix=" out))))) - %standard-phases) - #:tests? #f)) ; no test suite + '(#:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? + (system* "./configure" + (string-append"--prefix=" out))))) + (alist-cons-after + 'strip 'patch-rpath + (lambda* (#:key outputs #:allow-other-keys) + ;; Patch the RPATH of every installed library to point to $out/lib + ;; instead of $TMPDIR. Note that "patchelf --set-rpath" produces + ;; invalid binaries when used before stripping. + (let ((out (assoc-ref outputs "out")) + (tmpdir (getcwd))) + (every (lambda (lib) + (let* ((in (open-pipe* OPEN_READ "patchelf" + "--print-rpath" lib)) + (rpath (read-line in))) + (and (zero? (close-pipe in)) + (let ((rpath* (regexp-substitute/global + #f (regexp-quote tmpdir) rpath + 'pre out 'post))) + (or (equal? rpath rpath*) + (begin + (format #t "~a: changing RPATH from `~a' to `~a'~%" + lib rpath rpath*) + (zero? + (system* "patchelf" "--set-rpath" + rpath* lib)))))))) + (append (find-files (string-append out "/bin") + ".*") + (find-files (string-append out "/lib") + "\\.so$"))))) + %standard-phases)) + #:tests? #f ; no test suite + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 popen) + (ice-9 regex) + (ice-9 rdelim) + (srfi srfi-1)))) (inputs `(("bigloo" ,bigloo) - ("which" ,which))) + ("which" ,which) + ("patchelf" ,patchelf))) (home-page "http://hop.inria.fr/") (synopsis "A multi-tier programming language for the Web 2.0") (description |