diff options
author | Eric Bavier <bavier@member.fsf.org> | 2015-05-05 11:01:06 -0500 |
---|---|---|
committer | Eric Bavier <bavier@member.fsf.org> | 2015-05-05 15:14:32 -0500 |
commit | 8a629613d1eadb0f3f6fb1e5ce65b484745b30a3 (patch) | |
tree | 04a66fccce5c56fe6ab87929705e135bb746f739 | |
parent | 6f428fda0a23366df9bd1c6329d7aad33f2407f0 (diff) |
gnu: hop: Fix RPATHs.
* gnu/packages/scheme.scm (inputs): Move patchelf input to...
(native-inputs): ...here. New field.
(arguments)[phases]: Use augment-rpath for patch-rpath phase.
-rw-r--r-- | gnu/packages/scheme.scm | 48 |
1 files changed, 17 insertions, 31 deletions
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 77d0d846c8..ae859791c1 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -238,7 +238,7 @@ Scheme and C programs and between Scheme and Java programs.") (patches (list (search-patch "hop-bigloo-4.0b.patch"))))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (alist-replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) @@ -249,41 +249,27 @@ Scheme and C programs and between Scheme and Java programs.") (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$"))))) + ;; Add $out/lib to the RPATH of every installed library and + ;; executable. Note that "patchelf --set-rpath" produces invalid + ;; binaries when used before stripping. + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (with-directory-excursion out + (every (cut augment-rpath <> lib) + (append (find-files "bin" ".*") + (find-files "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)))) + (guix build rpath) + (srfi srfi-26) + (srfi srfi-1)) + #:imported-modules (,@%gnu-build-system-modules + (guix build rpath)))) + (native-inputs `(("patchelf" ,patchelf))) (inputs `(("bigloo" ,bigloo) - ("which" ,which) - ("patchelf" ,patchelf))) + ("which" ,which))) (home-page "http://hop.inria.fr/") (synopsis "Multi-tier programming language for the Web 2.0") (description |