From patchwork Thu May 30 22:39:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ian Eure X-Patchwork-Id: 28051 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 59E3027BBEA; Thu, 30 May 2024 23:41:12 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 4591427BBE2 for ; Thu, 30 May 2024 23:41:10 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sCoSA-0004MC-GV; Thu, 30 May 2024 18:40:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sCoS4-0004Kb-CR for guix-patches@gnu.org; Thu, 30 May 2024 18:40:52 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sCoS4-0002lD-4q for guix-patches@gnu.org; Thu, 30 May 2024 18:40:52 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sCoSE-0003NP-QS for guix-patches@gnu.org; Thu, 30 May 2024 18:41:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#71121] [PATCH v2 2/3] gnu: librewolf: Rebuild source tarball Resent-From: Ian Eure Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 30 May 2024 22:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 71121 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 71121@debbugs.gnu.org Cc: Ian Eure Received: via spool by 71121-submit@debbugs.gnu.org id=B71121.171710883712691 (code B ref 71121); Thu, 30 May 2024 22:41:02 +0000 Received: (at 71121) by debbugs.gnu.org; 30 May 2024 22:40:37 +0000 Received: from localhost ([127.0.0.1]:52763 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sCoRo-0003IR-UM for submit@debbugs.gnu.org; Thu, 30 May 2024 18:40:37 -0400 Received: from wfout1-smtp.messagingengine.com ([64.147.123.144]:51887) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sCoRc-0003FE-V4 for 71121@debbugs.gnu.org; Thu, 30 May 2024 18:40:31 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.west.internal (Postfix) with ESMTP id 976671C00157; Thu, 30 May 2024 18:40:08 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 30 May 2024 18:40:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=retrospec.tv; h= cc:cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1717108808; x=1717195208; bh=PBLgPJ788Wl9N0ql10tN4mlQ/5XQnBCKHLQBtKeHVK0=; b= THnz0fzagdATsbVojW6Gzf2UzkeugEQwbS2t+BM7/q0NbaB/jl7hUJd822kPwnyE w5epfnkKh5Jy5LV9KeGgIUg+atPsZPuw/hbUEzmkU9EKXe1CzCVXOu0bCqeLtYgE dYu5C4G9GaZ10aBpj2noK4D3tXQ1CHWk4jGs9khn6xyJP730X+q7ccbcQM/uitSR gnI6lrUC9CiHaPmxUwwGkaP5OHiYYkM3Ky0FGDepZkVPNVn6Gvdt1/5ZAUEa4wqp ZVv94ngC9aGt4GUzMRPbYQ1vJBOUzvCvb1NgUuvgFxZBy2gyluGwd5eqNgoGBjEb UuMeflMND5lAx2mKRufejw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1717108808; x= 1717195208; bh=PBLgPJ788Wl9N0ql10tN4mlQ/5XQnBCKHLQBtKeHVK0=; b=W 8m53Q13R5K/Fh5DwLT7lQsDfyU3VS0JtZC/xqxg5mW7wJ2ifbyh63wp/SS0xafBE ing+V8iu4VDznryo3w8cQxw/jEcTgTD1rbe9pxnyVy0ZZ3LfZNvrCZPUDsRyyDjz zz3pOtr3S7T63eYy8ejMowhvjP/KPG066AmA9pZR+lE1M6H5Gkg35PJlsQajz7gY cioS0D6V1eHZjf5y83fWG43hrLEPcX2abi0lsf3qy1SN3ODZNJsG8QuFF5wY0CN8 pg+XGdine0rDg6r93XTUGwS74UqtI95ABQ2Zo0C2phZ1Vvu4PWqRYnnvGjK/+/gf Fy0K8pexulhrZ4gfqxiiw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvdekhedguddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesth ekredtredtjeenucfhrhhomhepkfgrnhcugfhurhgvuceoihgrnhesrhgvthhrohhsphgv tgdrthhvqeenucggtffrrghtthgvrhhnpedvieetveekkeeliefhtefftedvtefgvdegle efvdeigfettdejtddvffdvgfejudenucffohhmrghinhepmhhoiihilhhlrgdrohhrghdp tghouggvsggvrhhgrdhorhhgpdhsvggrrhgthhhfohigrdhorhhgpdhgihhtlhgrsgdrtg homhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehi rghnsehrvghtrhhoshhpvggtrdhtvh X-ME-Proxy: Feedback-ID: id9014242:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 30 May 2024 18:40:07 -0400 (EDT) From: Ian Eure Date: Thu, 30 May 2024 15:39:50 -0700 Message-ID: <20240530223951.13474-2-ian@retrospec.tv> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20240530223951.13474-1-ian@retrospec.tv> References: <20240530223951.13474-1-ian@retrospec.tv> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/librewolf.scm (librewolf): 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. Change-Id: I0f1c2a10252cbbff9b3b3140f6ea3a594df0c97b --- gnu/packages/librewolf.scm | 120 +++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 12 deletions(-) diff --git a/gnu/packages/librewolf.scm b/gnu/packages/librewolf.scm index fa83857c96..bb8bc8a283 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 @@ (define-module (gnu packages librewolf) #: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 @@ (define-module (gnu packages librewolf) #: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,109 @@ (define-module (gnu packages librewolf) #: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))) + + ;; 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 +211,7 @@ (define-public librewolf (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