~ruther/guix-local

8a629613d1eadb0f3f6fb1e5ce65b484745b30a3 — Eric Bavier 11 years ago 6f428fd
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.
1 files changed, 17 insertions(+), 31 deletions(-)

M gnu/packages/scheme.scm
M gnu/packages/scheme.scm => gnu/packages/scheme.scm +17 -31
@@ 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