aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorIan Eure <ian@retrospec.tv>2024-05-30 15:39:50 -0700
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2024-05-31 23:01:42 -0400
commitca3cc238e7b073e700a0b66209b27bf7a7e2cdaf (patch)
tree05320d79e23d60e6282f20f1fd1a478fdc12f5e6 /gnu
parent3b3ead627a7bd698dd876f770fe1159ebeeba0e7 (diff)
downloadguix-ca3cc238e7b073e700a0b66209b27bf7a7e2cdaf.tar.gz
guix-ca3cc238e7b073e700a0b66209b27bf7a7e2cdaf.zip
gnu: librewolf: Generate source tarball.
This patch removes an intermediate step in the build chain. The upstream source tarball is created with an automated build process, where Firefox sources are fetched, patched, and repacked. Rather than download the output of that process, as the package has been, it’s now replicated within the build process, similar to how IceCat works. * gnu/packages/librewolf.scm (firefox-source-origin): New procedure. (librewolf-source-origin): Likewise. (computed-origin-method): New variable. (librewolf-source): Likewise. (librewolf) [source]: Use it. Change-Id: I0f1c2a10252cbbff9b3b3140f6ea3a594df0c97b Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/librewolf.scm128
1 files changed, 116 insertions, 12 deletions
diff --git a/gnu/packages/librewolf.scm b/gnu/packages/librewolf.scm
index fa83857c96..da5b6f0735 100644
--- a/gnu/packages/librewolf.scm
+++ b/gnu/packages/librewolf.scm
@@ -40,10 +40,12 @@
(define-module (gnu packages librewolf)
+ #:use-module ((srfi srfi-1) #:hide (zip))
#:use-module (guix build-system gnu)
#:use-module (guix build-system cargo)
#:use-module (guix build-system trivial)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (guix packages)
@@ -62,6 +64,7 @@
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages gtk)
#:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
@@ -81,6 +84,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages speech)
@@ -89,6 +93,117 @@
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
+(define (firefox-source-origin version hash)
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://ftp.mozilla.org/pub/firefox/releases/"
+ version "/source/" "firefox-" version
+ ".source.tar.xz"))
+ (sha256 (base32 hash))))
+
+(define (librewolf-source-origin version hash)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/librewolf/source.git")
+ (commit version)
+ (recursive? #t)))
+ (file-name (git-file-name "librewolf-source" version))
+ (sha256 (base32 hash))))
+
+(define computed-origin-method (@@ (guix packages) computed-origin-method))
+
+(define librewolf-source
+ (let* ((ff-src (firefox-source-origin "125.0.2" "16gpd6n52lshvkkha41z7xicggj64dw0qhr5gd07bcxsc4rmdl39"))
+ (version "125.0.2-1")
+ (lw-src (librewolf-source-origin version "17i36s2ny1pv3cz44w0gz48fy4vjfw6vp9jk21j62f5d3dl726x8")))
+
+ (origin
+ (method computed-origin-method)
+ (file-name (string-append "librewolf-" version ".source.tar.gz"))
+ (sha256 #f)
+ (uri
+ (delay
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (set-path-environment-variable
+ "PATH" '("bin")
+ (list #+python
+ #+(canonical-package bash)
+ #+(canonical-package gnu-make)
+ #+(canonical-package coreutils)
+ #+(canonical-package findutils)
+ #+(canonical-package patch)
+ #+(canonical-package xz)
+ #+(canonical-package sed)
+ #+(canonical-package grep)
+ #+(canonical-package gzip)
+ #+(canonical-package tar)))
+ (set-path-environment-variable
+ "PYTHONPATH"
+ (list #+(format #f "lib/python~a/site-packages"
+ (version-major+minor
+ (package-version python))))
+ '#+(cons python-jsonschema
+ (map second
+ (package-transitive-propagated-inputs
+ python-jsonschema))))
+
+ ;; Copy LibreWolf source into the build directory and make
+ ;; everything writable.
+ (copy-recursively #+lw-src ".")
+ (for-each make-file-writable (find-files "."))
+
+ ;; Patch Makefile to use the upstream source instead of
+ ;; downloading.
+ (substitute* '("Makefile")
+ (("^ff_source_tarball:=.*")
+ (string-append "ff_source_tarball:=" #+ff-src)))
+
+ ;; Remove encoding_rs patch, it doesn't build with Rust 1.75.
+ (substitute* '("assets/patches.txt")
+ (("patches/encoding_rs.patch\\\n$")
+ ""))
+
+ ;; Stage locales.
+ (begin
+ (format #t "Staging locales...~%")
+ (force-output)
+ (mkdir "l10n-staging")
+ (with-directory-excursion "l10n-staging"
+ (for-each
+ (lambda (locale-dir)
+ (let ((locale
+ (string-drop
+ (basename locale-dir)
+ (+ 32 ; length of hash
+ (string-length "-mozilla-locale-")))))
+ (format #t " ~a~%" locale)
+ (force-output)
+ (copy-recursively locale-dir locale
+ #:log (%make-void-port "w"))
+ (for-each make-file-writable (find-files locale))
+ (with-directory-excursion locale
+ (when (file-exists? ".hgtags")
+ (delete-file ".hgtags")))))
+ '#+all-mozilla-locales)))
+
+ ;; Patch build script to use staged locales.
+ (begin
+ (substitute* '("scripts/generate-locales.sh")
+ (("wget") "# wget")
+ (("unzip") "# unzip")
+ (("mv browser/locales/l10n/\\$1-\\*/")
+ "mv ../l10n-staging/$1/")))
+
+ ;; Run the build script
+ (invoke "make" "all")
+ (copy-file (string-append "librewolf-" #$version
+ ".source.tar.gz")
+ #$output))))))))
+
;; Define the versions of rust needed to build librewolf, trying to match
;; upstream. See the file taskcluster/ci/toolchain/rust.yml at
;; https://searchfox.org under the particular firefox release, like
@@ -104,18 +219,7 @@
(package
(name "librewolf")
(version "125.0.2-1")
- (source
- (origin
- (method url-fetch)
-
- (uri (string-append "https://gitlab.com/api/v4/projects/32320088/"
- "packages/generic/librewolf-source/"
- version
- "/librewolf-"
- version
- ".source.tar.gz"))
- (sha256
- (base32 "09qzdaq9l01in9h4q14vyinjvvffycha2iyjqj5p4dd5jh6q5zma"))))
+ (source librewolf-source)
(build-system gnu-build-system)
(arguments
(list