X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/ee5408576d9a3d4cec24682bb76921d2d4839470..058247efff39d28c5f3b81351f3d35522b10730c:/gnu/packages/gnuzilla.scm diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 887bace423..6fac8ced40 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -30,12 +30,17 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) + #:use-module (gnu packages gnome) + #:use-module (gnu packages libcanberra) + #:use-module (gnu packages cups) + #:use-module (gnu packages mit-krb5) #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages libevent) + #:use-module (gnu packages libreoffice) ;for hunspell #:use-module (gnu packages image) #:use-module (gnu packages libffi) #:use-module (gnu packages pulseaudio) @@ -87,10 +92,48 @@ in C/C++.") (license license:mpl2.0))) ; and others for some files +(define-public mozjs-24 + (package (inherit mozjs) + (name "mozjs") + (version "24.2.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/js/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6")))) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (chdir "js/src") + ;; configure fails if it is follwed by SHELL and CONFIG_SHELL + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (zero? (system* "./configure" + (string-append "--prefix=" out) + "--with-system-nspr" + "--enable-system-ffi" + "--enable-threadsafe")))))))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) + (propagated-inputs + `(("nspr" ,nspr))) ; in the Requires.private field of mozjs-24.pc + (inputs + `(("libffi" ,libffi) + ("zlib" ,zlib))))) + (define-public nspr (package (name "nspr") - (version "4.10.8") + (version "4.10.10") (source (origin (method url-fetch) (uri (string-append @@ -98,20 +141,21 @@ in C/C++.") version "/src/nspr-" version ".tar.gz")) (sha256 (base32 - "05aaakz24ba2hdzlqx8qamwrsp7gni1acms8mr6m432wa9yaazjh")))) + "01ria9wk6329hxqsy75p9dkxiqkq4nkz0jjzll7hslih3jbi8dil")))) (build-system gnu-build-system) (native-inputs `(("perl", perl))) (arguments - `(#:tests? #f ; no check target - #:configure-flags - `("--enable-64bit") - #:phases - (alist-cons-before - 'configure 'chdir - (lambda _ - (chdir "nspr")) - %standard-phases))) + `(#:tests? #f ; no check target + #:configure-flags (list "--enable-64bit" + (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib")) + #:phases (alist-cons-before + 'configure 'chdir + (lambda _ + (chdir "nspr")) + %standard-phases))) (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR") (synopsis "Netscape API for system level and libc-like functions") @@ -123,18 +167,18 @@ in the Mozilla clients.") (define-public nss (package (name "nss") - (version "3.18") + (version "3.21") (source (origin (method url-fetch) (uri (let ((version-with-underscores (string-join (string-split version #\.) "_"))) (string-append - "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/" + "https://ftp.mozilla.org/pub/mozilla.org/security/nss/" "releases/NSS_" version-with-underscores "_RTM/src/" "nss-" version ".tar.gz"))) (sha256 (base32 - "0h0xy9kvd2s8r438q4dfn25cgvv5dc1hkm9lb4bgrxpr5bxv13b1")) + "0fbjx3xsdm4gjc1gyzy2z315cvyw7yilsm7p9w75rpbwgl15nyiz")) ;; Create nss.pc and nss-config. (patches (list (search-patch "nss-pkgconfig.patch"))))) (build-system gnu-build-system) @@ -161,6 +205,7 @@ in the Mozilla clients.") (alist-replace 'configure (lambda* (#:key system inputs #:allow-other-keys) + (setenv "CC" "gcc") ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system. (when (string-prefix? "x86_64" system) (setenv "USE_64" "1")) @@ -184,14 +229,12 @@ in the Mozilla clients.") (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>)) ((obj) (string-append "dist/" obj))))) ;; Install nss-config to $out/bin. - (mkdir-p (string-append out "/bin")) - (copy-file (string-append obj "/bin/nss-config") - (string-append out "/bin/nss-config")) + (install-file (string-append obj "/bin/nss-config") + (string-append out "/bin")) (delete-file (string-append obj "/bin/nss-config")) ;; Install nss.pc to $out/lib/pkgconfig. - (mkdir-p (string-append out "/lib/pkgconfig")) - (copy-file (string-append obj "/lib/pkgconfig/nss.pc") - (string-append out "/lib/pkgconfig/nss.pc")) + (install-file (string-append obj "/lib/pkgconfig/nss.pc") + (string-append out "/lib/pkgconfig")) (delete-file (string-append obj "/lib/pkgconfig/nss.pc")) (rmdir (string-append obj "/lib/pkgconfig")) ;; Install other files. @@ -204,6 +247,12 @@ in the Mozilla clients.") ("zlib" ,zlib))) (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc. (native-inputs `(("perl" ,perl))) + + ;; The NSS test suite takes over 28 hours on Loongson 3A (MIPS), and + ;; possibly longer when another build is happening concurrently on the + ;; same machine. + (properties '((timeout . 144000))) ; 40 hours + (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS") (synopsis "Network Security Services") @@ -218,7 +267,7 @@ standards.") (define-public icecat (package (name "icecat") - (version "31.6.0-gnu1") + (version "38.5.2-gnu1") (source (origin (method url-fetch) @@ -227,22 +276,68 @@ standards.") name "-" version ".tar.bz2")) (sha256 (base32 - "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i")))) + "0m18xyb0rd02yaw9xd5z4bab1wr2599iszzqhm86c134jv5vk6cg")) + (patches (map search-patch '("icecat-avoid-bundled-includes.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove bundled libraries that we don't use, since they may + ;; contain unpatched security flaws, they waste disk space and + ;; network bandwidth, and may cause confusion. + (for-each delete-file-recursively + '(;; FIXME: Removing the bundled icu breaks configure. + ;; * The bundled icu headers are used in some places. + ;; * The version number is taken from the bundled copy. + ;;"intl/icu" + ;; + ;; FIXME: A script from the bundled nspr is used. + ;;"nsprpub" + ;; + ;; TODO: Use system media libraries. Waiting for: + ;; + ;; * libogg + ;; * libtheora + ;; * libvorbis + ;; * libtremor (not yet in guix) + ;; * libopus + ;; * speex + ;; * soundtouch (not yet in guix) + ;; + ;; TODO: Use system harfbuzz. Waiting for: + ;; + ;; + "modules/freetype2" + "modules/zlib" + "modules/libbz2" + "ipc/chromium/src/third_party/libevent" + "media/libvpx" + "security/nss" + "gfx/cairo" + "js/src/ctypes/libffi" + "db/sqlite3")) + #t)))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) ("bzip2" ,bzip2) ("cairo" ,cairo) - ("dbus" ,dbus) + ("cups" ,cups) ("dbus-glib" ,dbus-glib) + ("gdk-pixbuf" ,gdk-pixbuf) ("glib" ,glib) ("gstreamer" ,gstreamer) ("gst-plugins-base" ,gst-plugins-base) ("gtk+" ,gtk+-2) ("pango" ,pango) ("freetype" ,freetype) + ("hunspell" ,hunspell) + ("libcanberra" ,libcanberra) + ("libgnome" ,libgnome) ("libxft" ,libxft) ("libevent" ,libevent) + ("libxinerama" ,libxinerama) + ("libxscrnsaver" ,libxscrnsaver) + ("libxcomposite" ,libxcomposite) ("libxt" ,libxt) ("libffi" ,libffi) ("libvpx" ,libvpx) @@ -250,8 +345,11 @@ standards.") ("pixman" ,pixman) ("pulseaudio" ,pulseaudio) ("mesa" ,mesa) + ("mit-krb5" ,mit-krb5) ("nspr" ,nspr) ("nss" ,nss) + ("sqlite" ,sqlite) + ("startup-notification" ,startup-notification) ("unzip" ,unzip) ("yasm" ,yasm) ("zip" ,zip) @@ -265,16 +363,35 @@ standards.") `(#:tests? #f ; no check target #:out-of-source? #t ; must be built outside of the source directory - #:configure-flags '(;; Building with debugging symbols takes ~5GiB, so - ;; disable it. - "--disable-debug" - "--disable-debug-symbols" + ;; XXX: There are RUNPATH issues such as + ;; $prefix/lib/icecat-31.6.0/plugin-container NEEDing libmozalloc.so, + ;; which is not in its RUNPATH, but they appear to be harmless in + ;; practice somehow. See . + #:validate-runpath? #f + + #:configure-flags '("--enable-default-toolkit=cairo-gtk2" + "--enable-pango" + "--enable-gio" + "--enable-svg" + "--enable-canvas" + "--enable-mathml" + "--enable-startup-notification" "--enable-pulseaudio" "--enable-gstreamer=1.0" + "--disable-gnomevfs" + "--disable-gconf" + "--disable-gnomeui" + + ;; Building with debugging symbols takes ~5GiB, so + ;; disable it. + "--disable-debug" + "--disable-debug-symbols" + + ;; Avoid bundled libraries. "--with-system-zlib" - "--with-system-bz2" ; FIXME: not used + "--with-system-bz2" "--with-system-libevent" "--with-system-libvpx" "--with-system-icu" @@ -283,11 +400,8 @@ standards.") "--enable-system-pixman" "--enable-system-cairo" "--enable-system-ffi" - - ;; Fails with "configure: error: System - ;; SQLite library is not compiled with - ;; SQLITE_ENABLE_UNLOCK_NOTIFY." - ;; "--enable-system-sqlite" + "--enable-system-hunspell" + "--enable-system-sqlite" ;; Fails with "--with-system-png won't work because ;; the system's libpng doesn't have APNG support". @@ -310,30 +424,69 @@ standards.") ;; "--with-system-jpeg" ) + #:modules ((ice-9 ftw) + ,@%gnu-build-system-modules) #:phases - (alist-replace - 'configure - ;; configure does not work followed by both "SHELL=..." and - ;; "CONFIG_SHELL=..."; set environment variables instead - (lambda* (#:key outputs configure-flags #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash (which "bash")) - (abs-srcdir (getcwd)) - (srcdir (string-append "../" (basename abs-srcdir))) - (flags `(,(string-append "--prefix=" out) - ,(string-append "--with-l10n-base=" - abs-srcdir "/l10n") - ,@configure-flags))) - (setenv "SHELL" bash) - (setenv "CONFIG_SHELL" bash) - (mkdir "../build") - (chdir "../build") - (format #t "build directory: ~s~%" (getcwd)) - (format #t "configure flags: ~s~%" flags) - (zero? (apply system* bash - (string-append srcdir "/configure") - flags)))) - %standard-phases))) + (modify-phases %standard-phases + (add-after + 'unpack 'ensure-no-mtimes-pre-1980 + (lambda _ + ;; Without this, the 'source/test/addons/packed.xpi' and + ;; 'source/test/addons/simple-prefs.xpi' targets fail while trying + ;; to create zip archives. + (let ((early-1980 315619200)) ; 1980-01-02 UTC + (ftw "." (lambda (file stat flag) + (unless (<= early-1980 (stat:mtime stat)) + (utime file early-1980 early-1980)) + #t)) + #t))) + (add-after + 'unpack 'remove-h264parse-from-blacklist + (lambda _ + ;; Remove h264parse from gstreamer format helper blacklist. It + ;; was put there to work around a bug in a pre-1.0 version of + ;; gstreamer. See: + ;; https://www.mozilla.org/en-US/security/advisories/mfsa2015-47/ + (substitute* "dom/media/gstreamer/GStreamerFormatHelper.cpp" + (("^ \"h264parse\",\n") "")) + #t)) + (add-after + 'unpack 'arrange-to-link-libxul-with-libraries-it-might-dlopen + (lambda _ + ;; libxul.so dynamically opens libraries, so here we explicitly + ;; link them into libxul.so instead. + ;; + ;; TODO: It might be preferable to patch in absolute file names in + ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to + ;; work. More investigation is needed. + (substitute* "toolkit/library/moz.build" + (("^# This needs to be last") + "OS_LIBS += [ + 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5', + 'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0' ]\n\n")) + #t)) + (replace + 'configure + ;; configure does not work followed by both "SHELL=..." and + ;; "CONFIG_SHELL=..."; set environment variables instead + (lambda* (#:key outputs configure-flags #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (which "bash")) + (abs-srcdir (getcwd)) + (srcdir (string-append "../" (basename abs-srcdir))) + (flags `(,(string-append "--prefix=" out) + ,(string-append "--with-l10n-base=" + abs-srcdir "/l10n") + ,@configure-flags))) + (setenv "SHELL" bash) + (setenv "CONFIG_SHELL" bash) + (mkdir "../build") + (chdir "../build") + (format #t "build directory: ~s~%" (getcwd)) + (format #t "configure flags: ~s~%" flags) + (zero? (apply system* bash + (string-append srcdir "/configure") + flags)))))))) (home-page "http://www.gnu.org/software/gnuzilla/") (synopsis "Entirely free browser derived from Mozilla Firefox") (description