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 ;;; Copyright © 2017 Nils Gillmann ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Ricardo Wurmus ;;; ;;; 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 . + ;; While we could take a snapshot of the complete mozilla-esr52 repository at + ;; , + ;; 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")