summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/gnuzilla.scm67
1 files changed, 67 insertions, 0 deletions
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 2742976ac9..0ef8a91bfa 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -331,6 +331,73 @@ in C/C++.")
          ("automake" ,automake)
          ,@(package-native-inputs mozjs-38))))))
 
+(define-public mozjs-60
+  ;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>.
+  ;; While we could take a snapshot of the complete mozilla-esr60 repository at
+  ;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr60&filter-searchStr=sm-tc>,
+  ;; we take the Debian version instead, because it is easier to work with.
+  (package
+    (inherit mozjs-38)
+    (version "60.2.3-2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://salsa.debian.org/gnome-team/mozjs60.git")
+                    (commit (string-append "debian/" version))))
+              (file-name (git-file-name "mozjs" version))
+              (sha256
+               (base32
+                "091w050rwzrdcbgyi934k2viyccmlqxrp13sm2mql71mabb5dai6"))))
+    (arguments
+     `(#:tests? #f ; FIXME: all tests pass, but then the check phase fails anyway.
+       #:test-target "check-jstests"
+       #:configure-flags
+       '("--enable-ctypes"
+         "--enable-optimize"
+         "--enable-pie"
+         "--enable-readline"
+         "--enable-shared-js"
+         "--enable-system-ffi"
+         "--with-system-nspr"
+         "--with-system-zlib"
+         "--with-system-icu"
+         "--with-intl-api"
+         ;; This is important because without it gjs will segfault during the
+         ;; configure phase.  With jemalloc only the standalone mozjs console
+         ;; will work.
+         "--disable-jemalloc")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
+             ;; The configure script does not accept environment variables as
+             ;; arguments.  It also must be run from a different directory,
+             ;; but not the root directory either.
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir "run-configure-from-here")
+               (chdir "run-configure-from-here")
+               (setenv "SHELL" (which "sh"))
+               (setenv "CONFIG_SHELL" (which "sh"))
+               (setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
+                                                 "/bin/autoconf"))
+               (apply invoke "../js/src/configure"
+                      (cons (string-append "--prefix=" out)
+                            configure-flags))
+               #t)))
+         (add-after 'unpack 'disable-broken-tests
+           (lambda _
+             ;; This test assumes that /bin exists and contains certain
+             ;; executables.
+             (delete-file "js/src/tests/shell/os.js")
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("which" ,which)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-2)))))
+
 (define-public nspr
   (package
     (name "nspr")