summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-02-13 18:04:22 +0100
committerJonathan Brielmaier <jonathan.brielmaier@web.de>2022-03-08 23:02:03 +0100
commitb5a8492a79c991e6c58b1093338cdf011611f7f8 (patch)
tree3543106b6da2cdb8542bbb18b124e6ed87dba82d
parent8a545a72d70d0f4491d0789e7f722dd125c6a2e3 (diff)
nongnu: firefox: Use Gexp.
* nongnu/packages/mozilla.scm (firefox)[arguments]: Use Gexp to remove uses of %BUILD-INPUTS and output references. Also remove trailing #t. Signed-off-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
-rw-r--r--nongnu/packages/mozilla.scm477
1 files changed, 234 insertions, 243 deletions
diff --git a/nongnu/packages/mozilla.scm b/nongnu/packages/mozilla.scm
index dc7abf3..d9cea29 100644
--- a/nongnu/packages/mozilla.scm
+++ b/nongnu/packages/mozilla.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2017, 2018 Nikita <nikita@n0.is>
;;; Copyright © 2017, 2018 ng0 <gillmann@infotropique.org>
;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018, 2020, 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
@@ -42,6 +42,7 @@
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils)
@@ -100,269 +101,259 @@
(base32 "0a6z94kwgycgis4mgl13dh52kw7zmsya2qpxhcrh6b8j8z5pv2kc"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags
- (let ((clang (assoc-ref %build-inputs "clang"))
- (wasi-sysroot (assoc-ref %build-inputs
- "wasm32-wasi-clang-toolchain")))
- `("--enable-application=browser"
+ (list
+ #:configure-flags
+ #~(let ((clang #$(this-package-native-input "clang"))
+ (wasi-sysroot #$(this-package-native-input "wasm32-wasi-clang-toolchain")))
+ `("--enable-application=browser"
- ;; Configuration
- "--with-system-jpeg"
- "--with-system-zlib"
- ;; "--with-system-png" ;require libpng-apng >= 1.6.35
- "--with-system-icu"
- "--enable-system-ffi"
- "--enable-system-pixman"
- "--enable-jemalloc"
+ ;; Configuration
+ "--with-system-jpeg"
+ "--with-system-zlib"
+ ;; "--with-system-png" ;require libpng-apng >= 1.6.35
+ "--with-system-icu"
+ "--enable-system-ffi"
+ "--enable-system-pixman"
+ "--enable-jemalloc"
- ;; see https://bugs.gnu.org/32833
- ;; "--with-system-nspr"
- ;; "--with-system-nss"
+ ;; see https://bugs.gnu.org/32833
+ ;; "--with-system-nspr"
+ ;; "--with-system-nss"
- ,(string-append "--with-clang-path="
- clang "/bin/clang")
- ,(string-append "--with-libclang-path="
- clang "/lib")
- ,(string-append "--with-wasi-sysroot=" wasi-sysroot "/wasm32-wasi")
+ ,(string-append "--with-clang-path="
+ clang "/bin/clang")
+ ,(string-append "--with-libclang-path="
+ clang "/lib")
+ ,(string-append "--with-wasi-sysroot=" wasi-sysroot "/wasm32-wasi")
- ;; Distribution
- "--with-distribution-id=org.nonguix"
- "--disable-official-branding"
+ ;; Distribution
+ "--with-distribution-id=org.nonguix"
+ "--disable-official-branding"
- ;; Features
- "--disable-tests"
- "--disable-updater"
- "--enable-pulseaudio"
- "--disable-crashreporter"
+ ;; Features
+ "--disable-tests"
+ "--disable-updater"
+ "--enable-pulseaudio"
+ "--disable-crashreporter"
- ;; Build details
- "--disable-debug"
- "--enable-rust-simd"
- "--enable-release"
- "--enable-optimize"
- "--enable-strip"
- "--disable-elf-hack"))
- #:imported-modules ,%cargo-utils-modules
- #:modules ((ice-9 regex)
+ ;; Build details
+ "--disable-debug"
+ "--enable-rust-simd"
+ "--enable-release"
+ "--enable-optimize"
+ "--enable-strip"
+ "--disable-elf-hack"))
+ #:imported-modules %cargo-utils-modules
+ #:modules `((ice-9 regex)
(ice-9 ftw)
(srfi srfi-26)
,@%gnu-build-system-modules)
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-preferences
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((port (open-file "browser/app/profile/firefox.js" "a")))
- (define (write-setting key value)
- (format port "~%pref(\"~a\", ~a);~%"
- key value)
- (format #t "fix-preferences: setting value of ~a to ~a~%"
- key value))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-preferences
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((port (open-file "browser/app/profile/firefox.js" "a")))
+ (define (write-setting key value)
+ (format port "~%pref(\"~a\", ~a);~%"
+ key value)
+ (format #t "fix-preferences: setting value of ~a to ~a~%"
+ key value))
- ;; We should allow Firefox sandbox to read the store directory,
- ;; because Firefox sandbox have access to /usr on FHS distros.
- (write-setting "security.sandbox.content.read_path_whitelist"
- (string-append "\"" (%store-directory) "/\""))
+ ;; We should allow Firefox sandbox to read the store directory,
+ ;; because Firefox sandbox have access to /usr on FHS distros.
+ (write-setting "security.sandbox.content.read_path_whitelist"
+ (string-append "\"" (%store-directory) "/\""))
- ;; XDG settings should be managed by Guix.
- (write-setting "browser.shell.checkDefaultBrowser" "false")
- (close-port port))
- #t))
- (add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
- (lambda* (#:key inputs #:allow-other-keys)
- (let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
- (libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
- ;; Arrange to load libavcodec.so by its absolute file name.
- (substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
- (("libavcodec\\.so")
- libavcodec))
- #t)))
+ ;; XDG settings should be managed by Guix.
+ (write-setting "browser.shell.checkDefaultBrowser" "false")
+ (close-port port))))
+ (add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
+ (libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
+ ;; Arrange to load libavcodec.so by its absolute file name.
+ (substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
+ (("libavcodec\\.so")
+ libavcodec)))))
- (add-after 'patch-source-shebangs 'patch-cargo-checksums
- (lambda _
- (use-modules (guix build cargo-utils))
- (let ((null-hash
- ;; This is the SHA256 output of an empty string.
- "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
- (for-each
- (lambda (file)
- (format #t "patch-cargo-checksums: patching checksums in ~a~%"
- file)
- (substitute* file
- (("(checksum = )\".*\"" all name)
- (string-append name "\"" null-hash "\""))))
- (find-files "." "Cargo\\.lock$"))
- (for-each generate-all-checksums
- '("build"
- "dom/media"
- "dom/webauthn"
- "gfx"
- "intl"
- "js"
- "media"
- "modules"
- "mozglue/static/rust"
- "netwerk"
- "remote"
- "security/manager/ssl"
- "servo"
- "storage"
- "third_party/rust"
- "toolkit"
- "xpcom/rust"
- "services"))
- #t)))
- (add-after 'patch-cargo-checksums 'remove-cargo-frozen-flag
- (lambda _
- ;; Remove --frozen flag from cargo invokation, otherwise it'll
- ;; complain that it's not able to change Cargo.lock.
- ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
- (substitute* "build/RunCbindgen.py"
- (("\"--frozen\",") ""))
- #t))
- (delete 'bootstrap)
- (replace 'configure
- (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
- (setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
- "/bin/autoconf"))
- (setenv "SHELL" (which "bash"))
- (setenv "CONFIG_SHELL" (which "bash"))
- (setenv "MACH_USE_SYSTEM_PYTHON" "1")
+ (add-after 'patch-source-shebangs 'patch-cargo-checksums
+ (lambda _
+ (use-modules (guix build cargo-utils))
+ (let ((null-hash
+ ;; This is the SHA256 output of an empty string.
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
+ (for-each
+ (lambda (file)
+ (format #t "patch-cargo-checksums: patching checksums in ~a~%"
+ file)
+ (substitute* file
+ (("(checksum = )\".*\"" all name)
+ (string-append name "\"" null-hash "\""))))
+ (find-files "." "Cargo\\.lock$"))
+ (for-each generate-all-checksums
+ '("build"
+ "dom/media"
+ "dom/webauthn"
+ "gfx"
+ "intl"
+ "js"
+ "media"
+ "modules"
+ "mozglue/static/rust"
+ "netwerk"
+ "remote"
+ "security/manager/ssl"
+ "servo"
+ "storage"
+ "third_party/rust"
+ "toolkit"
+ "xpcom/rust"
+ "services")))))
+ (add-after 'patch-cargo-checksums 'remove-cargo-frozen-flag
+ (lambda _
+ ;; Remove --frozen flag from cargo invokation, otherwise it'll
+ ;; complain that it's not able to change Cargo.lock.
+ ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
+ (substitute* "build/RunCbindgen.py"
+ (("\"--frozen\",") ""))))
+ (delete 'bootstrap)
+ (replace 'configure
+ (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
+ (setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
+ "/bin/autoconf"))
+ (setenv "SHELL" (which "bash"))
+ (setenv "CONFIG_SHELL" (which "bash"))
+ (setenv "MACH_USE_SYSTEM_PYTHON" "1")
- ;; Use Clang, Clang is 2x faster than GCC
- (setenv "AR" "llvm-ar")
- (setenv "NM" "llvm-nm")
- (setenv "CC" "clang")
- (setenv "CXX" "clang++")
- (setenv "WASM_CC"
- (string-append
- (assoc-ref inputs "wasm32-wasi-clang-toolchain")
- "/bin/clang"))
- (setenv "WASM_CXX"
- (string-append
- (assoc-ref inputs "wasm32-wasi-clang-toolchain")
- "/bin/clang++"))
+ ;; Use Clang, Clang is 2x faster than GCC
+ (setenv "AR" "llvm-ar")
+ (setenv "NM" "llvm-nm")
+ (setenv "CC" "clang")
+ (setenv "CXX" "clang++")
+ (setenv "WASM_CC"
+ (string-append
+ (assoc-ref inputs "wasm32-wasi-clang-toolchain")
+ "/bin/clang"))
+ (setenv "WASM_CXX"
+ (string-append
+ (assoc-ref inputs "wasm32-wasi-clang-toolchain")
+ "/bin/clang++"))
- (setenv "MOZ_NOSPAM" "1")
- ;; Firefox will write the timestamp to output, which is harmful for
- ;; reproducibility, so change it to a fixed date.
- (setenv "MOZ_BUILD_DATE" ,%firefox-build-id)
+ (setenv "MOZ_NOSPAM" "1")
+ ;; Firefox will write the timestamp to output, which is harmful for
+ ;; reproducibility, so change it to a fixed date.
+ (setenv "MOZ_BUILD_DATE" #$%firefox-build-id)
- (setenv "MOZBUILD_STATE_PATH" (getcwd))
+ (setenv "MOZBUILD_STATE_PATH" (getcwd))
- (let* ((mozconfig (string-append (getcwd) "/mozconfig"))
- (out (assoc-ref outputs "out"))
- (flags (cons (string-append "--prefix=" out)
- configure-flags)))
- (format #t "build directory: ~s~%" (getcwd))
- (format #t "configure flags: ~s~%" flags)
+ (let* ((mozconfig (string-append (getcwd) "/mozconfig"))
+ (out (assoc-ref outputs "out"))
+ (flags (cons (string-append "--prefix=" out)
+ configure-flags)))
+ (format #t "build directory: ~s~%" (getcwd))
+ (format #t "configure flags: ~s~%" flags)
- (define write-flags
- (lambda flags
- (display (string-join
- (map (cut string-append "ac_add_options " <>)
- flags)
- "\n"))
- (display "\n")))
- (with-output-to-file mozconfig
- (lambda ()
- (apply write-flags flags)
- ;; The following option unsets Telemetry Reporting. With the Addons Fiasco,
- ;; Mozilla was found to be collecting user's data, including saved passwords and
- ;; web form data, without users consent. Mozilla was also found shipping updates
- ;; to systems without the user's knowledge or permission.
- ;; As a result of this, use the following command to permanently disable
- ;; telemetry reporting in Firefox.
- (display "unset MOZ_TELEMETRY_REPORTING\n")))
- (setenv "MOZCONFIG" mozconfig))
- (invoke "./mach" "configure")))
- (replace 'build
- (lambda* (#:key (make-flags '()) (parallel-build? #t)
- #:allow-other-keys)
- (apply invoke "./mach" "build"
- ;; mach will use parallel build if possible by default
- `(,@(if parallel-build?
- '()
- '("-j1"))
- ,@make-flags))))
- (add-after 'build 'neutralise-store-references
- (lambda _
- ;; Mangle the store references to compilers & other build tools in
- ;; about:buildconfig, reducing Firefox's closure by 1 GiB on x86-64.
- (let* ((build-dir (car (scandir "." (cut string-prefix? "obj-" <>))))
- (file (string-append build-dir "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
- (substitute* file
- (((format #f "(~a/)([0-9a-df-np-sv-z]{32})"
- (regexp-quote (%store-directory)))
- _ store hash)
- (string-append store
- (string-take hash 8)
- "<!-- Guix: not a runtime dependency -->"
- (string-drop hash 8)))))
- #t))
- (replace 'install
- (lambda _ (invoke "./mach" "install")))
- (add-after 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (lib (string-append out "/lib"))
- (ld-libs
- (map (lambda (x)
- (string-append (assoc-ref inputs x)
- "/lib"))
- '("pulseaudio" "mesa"
- "udev" ;; For U2F and WebAuthn
- ;; For hardware video acceleration via VA-API
- "libva"
- ;; For the integration of native notifications
- "libnotify")))
- (gtk-share (string-append (assoc-ref inputs "gtk+")
- "/share")))
- (wrap-program (car (find-files lib "^firefox$"))
- `("LD_LIBRARY_PATH" prefix ,ld-libs)
- `("XDG_DATA_DIRS" prefix (,gtk-share))
- `("MOZ_LEGACY_PROFILES" = ("1"))
- `("MOZ_ALLOW_DOWNGRADE" = ("1")))
- #t)))
- (add-after 'wrap-program 'install-desktop-entry
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((desktop-file "taskcluster/docker/firefox-snap/firefox.desktop")
- (out (assoc-ref outputs "out"))
- (applications (string-append out "/share/applications")))
- (substitute* desktop-file
- (("^Exec=firefox") (string-append "Exec=" out "/bin/firefox"))
- (("Icon=.*") "Icon=firefox\n")
- (("NewWindow") "new-window")
- (("NewPrivateWindow") "new-private-window")
- (("StartupNotify=true")
- "StartupNotify=true\nStartupWMClass=Navigator"))
- (install-file desktop-file applications))
- #t))
- (add-after 'install-desktop-entry 'install-icons
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (icon-source-dir
+ (define write-flags
+ (lambda flags
+ (display (string-join
+ (map (cut string-append "ac_add_options " <>)
+ flags)
+ "\n"))
+ (display "\n")))
+ (with-output-to-file mozconfig
+ (lambda ()
+ (apply write-flags flags)
+ ;; The following option unsets Telemetry Reporting. With the Addons Fiasco,
+ ;; Mozilla was found to be collecting user's data, including saved passwords and
+ ;; web form data, without users consent. Mozilla was also found shipping updates
+ ;; to systems without the user's knowledge or permission.
+ ;; As a result of this, use the following command to permanently disable
+ ;; telemetry reporting in Firefox.
+ (display "unset MOZ_TELEMETRY_REPORTING\n")))
+ (setenv "MOZCONFIG" mozconfig))
+ (invoke "./mach" "configure")))
+ (replace 'build
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ (apply invoke "./mach" "build"
+ ;; mach will use parallel build if possible by default
+ `(,@(if parallel-build?
+ '()
+ '("-j1"))
+ ,@make-flags))))
+ (add-after 'build 'neutralise-store-references
+ (lambda _
+ ;; Mangle the store references to compilers & other build tools in
+ ;; about:buildconfig, reducing Firefox's closure by 1 GiB on x86-64.
+ (let* ((build-dir (car (scandir "." (cut string-prefix? "obj-" <>))))
+ (file (string-append build-dir "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
+ (substitute* file
+ (((format #f "(~a/)([0-9a-df-np-sv-z]{32})"
+ (regexp-quote (%store-directory)))
+ _ store hash)
+ (string-append store
+ (string-take hash 8)
+ "<!-- Guix: not a runtime dependency -->"
+ (string-drop hash 8)))))))
+ (replace 'install
+ (lambda _ (invoke "./mach" "install")))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (ld-libs
+ (map (lambda (x)
+ (string-append (assoc-ref inputs x)
+ "/lib"))
+ '("pulseaudio" "mesa"
+ "udev" ;; For U2F and WebAuthn
+ ;; For hardware video acceleration via VA-API
+ "libva"
+ ;; For the integration of native notifications
+ "libnotify")))
+ (gtk-share (string-append (assoc-ref inputs "gtk+")
+ "/share")))
+ (wrap-program (car (find-files lib "^firefox$"))
+ `("LD_LIBRARY_PATH" prefix ,ld-libs)
+ `("XDG_DATA_DIRS" prefix (,gtk-share))
+ `("MOZ_LEGACY_PROFILES" = ("1"))
+ `("MOZ_ALLOW_DOWNGRADE" = ("1"))))))
+ (add-after 'wrap-program 'install-desktop-entry
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((desktop-file "taskcluster/docker/firefox-snap/firefox.desktop")
+ (applications (string-append #$output "/share/applications")))
+ (substitute* desktop-file
+ (("^Exec=firefox") (string-append "Exec=" #$output "/bin/firefox"))
+ (("Icon=.*") "Icon=firefox\n")
+ (("NewWindow") "new-window")
+ (("NewPrivateWindow") "new-private-window")
+ (("StartupNotify=true")
+ "StartupNotify=true\nStartupWMClass=Navigator"))
+ (install-file desktop-file applications))))
+ (add-after 'install-desktop-entry 'install-icons
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((icon-source-dir
(string-append
- out "/lib/firefox/browser/chrome/icons/default")))
- (for-each
- (lambda (size)
- (let ((dest (string-append out "/share/icons/hicolor/"
- size "x" size "/apps")))
- (mkdir-p dest)
- (symlink (string-append icon-source-dir
- "/default" size ".png")
- (string-append dest "/firefox.png"))))
- '("16" "32" "48" "64" "128"))
- #t))))
+ #$output "/lib/firefox/browser/chrome/icons/default")))
+ (for-each
+ (lambda (size)
+ (let ((dest (string-append #$output "/share/icons/hicolor/"
+ size "x" size "/apps")))
+ (mkdir-p dest)
+ (symlink (string-append icon-source-dir
+ "/default" size ".png")
+ (string-append dest "/firefox.png"))))
+ '("16" "32" "48" "64" "128"))))))
- ;; Test will significantly increase build time but with little rewards.
- #:tests? #f
+ ;; Test will significantly increase build time but with little rewards.
+ #:tests? #f
- ;; WARNING: Parallel build will consume lots of memory!
- ;; If you have encountered OOM issue in build phase, try disable it.
- ;; #:parallel-build? #f
+ ;; WARNING: Parallel build will consume lots of memory!
+ ;; If you have encountered OOM issue in build phase, try disable it.
+ ;; #:parallel-build? #f
- ;; Some dynamic lib was determined at runtime, so rpath check may fail.
- #:validate-runpath? #f))
+ ;; Some dynamic lib was determined at runtime, so rpath check may fail.
+ #:validate-runpath? #f))
(inputs
`(("bzip2" ,bzip2)
("cairo" ,cairo)