summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/elixir.scm100
1 files changed, 51 insertions, 49 deletions
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index e0c4b47469..3fb74a56a5 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -26,6 +26,7 @@
 (define-module (gnu packages elixir)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages)
@@ -48,55 +49,56 @@
        (patches (search-patches "elixir-path-length.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:test-target "test"
-       #:parallel-tests? #f ;see <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32171#23>
-       #:make-flags (list (string-append "PREFIX="
-                                         (assoc-ref %outputs "out")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-git-checkout-writable
-           (lambda _
-             (for-each make-file-writable (find-files "."))))
-         (add-after 'make-git-checkout-writable 'replace-paths
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* '("lib/elixir/lib/system.ex"
-                              "lib/mix/lib/mix/scm/git.ex")
-                 (("(cmd\\(['\"])git" _ prefix)
-                  (string-append prefix (which "git"))))
-               (substitute* '("lib/mix/lib/mix/release.ex"
-                              "lib/mix/lib/mix/tasks/release.init.ex")
-                 (("#!/bin/sh")
-                  (string-append "#!" (which "sh"))))
-               (substitute* "bin/elixir"
-                 (("^ERTS_BIN=$")
-                  (string-append
-                    "ERTS_BIN="
-                    ;; Elixir Releases will prepend to ERTS_BIN the path of a copy of erl.
-                    ;; We detect if a release is being generated by checking the initial ERTS_BIN
-                    ;; value: if it's empty, we are not in release mode and can point to the actual
-                    ;; erl binary in Guix store.
-                    "\nif [ -z \"$ERTS_BIN\" ]; then ERTS_BIN="
-                    (string-drop-right (which "erl") 3)
-                    "; fi\n")))
-               (substitute* "bin/mix"
-                 (("#!/usr/bin/env elixir")
-                  (string-append "#!" out "/bin/elixir"))))))
-         (add-before 'build 'make-current
-           ;; The Elixir compiler checks whether or not to compile files by
-           ;; inspecting their timestamps.  When the timestamp is equal to the
-           ;; epoch no compilation will be performed.  Some tests fail when
-           ;; files are older than Jan 1, 2000.
-           (lambda _
-             (for-each (lambda (file)
-                         (let ((recent 1400000000))
-                           (utime file recent recent 0 0)))
-                       (find-files "." ".*"))))
-         (add-before 'check 'set-home
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Some tests require access to a home directory.
-             (setenv "HOME" "/tmp")))
-         (delete 'configure))))
+     (list
+      #:test-target "test"
+      #:parallel-tests? #f ;see <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32171#23>
+      #:make-flags #~(list (string-append "PREFIX=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'make-git-checkout-writable
+            (lambda _
+              (for-each make-file-writable (find-files "."))))
+          (add-after 'make-git-checkout-writable 'replace-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("lib/elixir/lib/system.ex"
+                             "lib/mix/lib/mix/scm/git.ex")
+                (("(cmd\\(['\"])git" _ prefix)
+                 (string-append prefix
+                                (search-input-file inputs "/bin/git"))))
+              (substitute* '("lib/mix/lib/mix/release.ex"
+                             "lib/mix/lib/mix/tasks/release.init.ex")
+                (("#!/bin/sh")
+                 (string-append "#!" (search-input-file inputs "sh"))))
+              (substitute* "bin/elixir"
+                (("^ERTS_BIN=$")
+                 (string-append
+                  "ERTS_BIN="
+                  ;; Elixir Releases will prepend to ERTS_BIN the path of
+                  ;; a copy of erl.  We detect if a release is being generated
+                  ;; by checking the initial ERTS_BIN value: if it's empty, we
+                  ;; are not in release mode and can point to the actual erl
+                  ;; binary in Guix store.
+                  "\nif [ -z \"$ERTS_BIN\" ]; then ERTS_BIN="
+                  (string-drop-right (search-input-file inputs "/bin/erl") 3)
+                  "; fi\n")))
+              (substitute* "bin/mix"
+                (("#!/usr/bin/env elixir")
+                 (string-append "#!" #$output "/bin/elixir")))))
+          (add-before 'build 'make-current
+            ;; The Elixir compiler checks whether or not to compile files by
+            ;; inspecting their timestamps.  When the timestamp is equal to the
+            ;; epoch no compilation will be performed.  Some tests fail when
+            ;; files are older than Jan 1, 2000.
+            (lambda _
+              (for-each (lambda (file)
+                          (let ((recent 1400000000))
+                            (utime file recent recent 0 0)))
+                        (find-files "." ".*"))))
+          (add-before 'check 'set-home
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Some tests require access to a home directory.
+              (setenv "HOME" "/tmp")))
+          (delete 'configure))))
     (inputs
      (list erlang git))
     (home-page "https://elixir-lang.org/")