summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/gnuzilla.scm68
1 files changed, 68 insertions, 0 deletions
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index ba60d1372a..b6bf89a75b 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +32,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages autotools)
@@ -252,6 +254,72 @@ in C/C++.")
        ("icu4c" ,icu4c)
        ("zlib" ,zlib)))))
 
+(define-public mozjs-52
+  ;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>.
+  ;; While we could take a snapshot of the complete mozilla-esr52 repository at
+  ;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=sm-tc>,
+  ;; we take the Debian version instead, because it is easier to work with.
+  (let ((commit "6507e63cc416fd7a3269e390efe712f8b56f374a")
+        (revision "1"))
+    (package (inherit mozjs-38)
+      (version (git-version "52.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/gnome-team/mozjs52.git")
+                      (commit commit)))
+                (file-name (git-file-name "mozjs" version))
+                (sha256
+                 (base32
+                  "1ny0s53r8wn4byys87h784xrq1xg767akmfm6gqrbvrz57mlm3q2"))))
+      (arguments
+       `(#:tests? #f ; depends on repository metadata
+         #:configure-flags
+         '("--enable-ctypes"
+           "--enable-optimize"
+           "--enable-pie"
+           "--enable-readline"
+           "--enable-shared-js"
+           "--enable-system-ffi"
+           "--with-system-icu"
+           "--with-system-nspr"
+           "--with-system-zlib"
+
+           ;; Intl API requires bundled ICU.
+           "--without-intl-api")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-and-chdir
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; This patch prevents a segfault when executing JS_Init().
+               ;; The build does not fail without this patch, but the
+               ;; configure phase of the gjs package would fail.
+               ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
+               (make-file-writable "js/src/old-configure.in")
+               (make-file-writable "js/src/old-configure")
+               (make-file-writable "mozglue/build/moz.build")
+               (invoke "patch" "-p1" "--force"
+                       "--input" "debian/patches/disable-mozglue.patch")
+               (invoke "touch" "js/src/configure")
+               (chdir "js/src")
+               #t))
+           (replace 'configure
+             (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
+               ;; The configure script does not accept environment variables
+               ;; as arguments.
+               (let ((out (assoc-ref outputs "out")))
+                 (setenv "SHELL" (which "sh"))
+                 (setenv "CONFIG_SHELL" (which "sh"))
+                 (setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
+                                                   "/bin/autoconf"))
+                 (apply invoke "./configure"
+                        (cons (string-append "--prefix=" out)
+                              configure-flags))))))))
+      (native-inputs
+       `(("autoconf" ,autoconf-2.13)
+         ("automake" ,automake)
+         ,@(package-native-inputs mozjs-38))))))
+
 (define-public nspr
   (package
     (name "nspr")