From patchwork Fri Dec 27 10:56:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ludovic_Court=C3=A8s?= X-Patchwork-Id: 35855 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 33B3627BBEB; Fri, 27 Dec 2024 10:58:14 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable 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 AEEBD27BBE2 for ; Fri, 27 Dec 2024 10:58:13 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tR82e-00030H-Sj; Fri, 27 Dec 2024 05:58:04 -0500 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 1tR82d-0002zw-EM for guix-patches@gnu.org; Fri, 27 Dec 2024 05:58:03 -0500 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 1tR82d-0003yN-4Z; Fri, 27 Dec 2024 05:58:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=2Ql5mPBI+6VirdjeTblezMhGv51kMkI+Tgo9ynQmO2o=; b=GdGVd9ulUj9/putyNa66E/PxbW3DRUundfBNEhS/A+zWxlUYp5aptUgVimiu0MFZ62McxBEOPfWFbYsi6fXwBhq4buR+CPccbnpgAA7o7/g+zyLeYDPAQStWTucTCLmaHkt5fqoBlktvkCQG9ec8+meIh/8f730gsAMLoGPVt/hhijbuANXI60yTJRFyqpmENPOfqXOuVSuWB0kExy76h8uCMokxO9d+DsyRjzZlKBgT4Ix82XHPL8gKZUF7UH0r3PawnbX8Y3VPrirKkRpk6KsA0n+oJ1jxJoFnovXbf/lvk9SdzMH6JNKHmCUYPD9wm5Y872yD8ASY75MfQ6hEDg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tR82c-0001fj-E5; Fri, 27 Dec 2024 05:58:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#75137] [PATCH 4/4] transformations: =?utf-8?q?=E2=80=98package?= =?utf-8?q?-with-upstream-version=E2=80=99?= can preserve archive type. Resent-From: Ludovic =?utf-8?q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix@cbaines.net, dev@jpoiret.xyz, ludo@gnu.org, othacehe@gnu.org, zimon.toutoune@gmail.com, me@tobias.gr, guix-patches@gnu.org Resent-Date: Fri, 27 Dec 2024 10:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 75137 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 75137@debbugs.gnu.org Cc: Ludovic =?utf-8?q?Court=C3=A8s?= , Christopher Baines , Josselin Poiret , Ludovic =?utf-8?q?Court=C3=A8s?= , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice X-Debbugs-Original-Xcc: Christopher Baines , Josselin Poiret , Ludovic =?utf-8?q?Court=C3=A8s?= , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Received: via spool by 75137-submit@debbugs.gnu.org id=B75137.17352970296342 (code B ref 75137); Fri, 27 Dec 2024 10:58:02 +0000 Received: (at 75137) by debbugs.gnu.org; 27 Dec 2024 10:57:09 +0000 Received: from localhost ([127.0.0.1]:44826 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tR81l-0001eD-6b for submit@debbugs.gnu.org; Fri, 27 Dec 2024 05:57:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:32862) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tR81b-0001cV-LJ for 75137@debbugs.gnu.org; Fri, 27 Dec 2024 05:57:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tR81W-0003uN-FH; Fri, 27 Dec 2024 05:56:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:References:In-Reply-To:Date:Subject:To: From; bh=2Ql5mPBI+6VirdjeTblezMhGv51kMkI+Tgo9ynQmO2o=; b=V3DogwGXqUBFXdArxyoa 5dBhvglrS+a5bxHNA+f6SfNansqlcw438E6jtR95IazgFhkaw4NCoI2UZza6DbHDQs+w8xcgbsJXE 2d9jyQhFhMHD7J5NeD/ColX7k2m+cVZGRNUIcFw09euEAApiyO5pwiZUiwvE1R/KZ/zT4zdZtjQ26 OSEPXyXLerLCJsV6Z1i+V6vEVQQ2msG41SsyfD2uFUBIXQXbdVvDiYh8SxLOJ3QtnpWT1DJFUHuBT lbJzeRxpyRL4vHaYIdgi3czgV0IAOwawXOmiy1FxcsGiLJ8ssb9ylMpPueUZvsVvTTEct+m1UIc5S W+rEoWonw/1/yg==; From: Ludovic =?utf-8?q?Court=C3=A8s?= Date: Fri, 27 Dec 2024 11:56:43 +0100 Message-ID: X-Mailer: git-send-email 2.46.0 In-Reply-To: References: 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 Fixes a discrepancy for ‘url-fetch’ packages where upstream provides several source tarballs. For example, for ‘xorg-server’, ‘package-with-upstream-version’ would pick the “tar.gz” tarball even though the package definition uses “tar.xz”. It now picks “tar.xz” by default. * guix/transformations.scm (package-with-upstream-version): Add #:preserve-archive-type?. Call ‘preferred-upstream-source’ to honor it. Change-Id: Iefa007aba339d81709faf82b7c52a5a2c7a6aad7 --- guix/transformations.scm | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/guix/transformations.scm b/guix/transformations.scm index 131b8564f8..2887d91a34 100644 --- a/guix/transformations.scm +++ b/guix/transformations.scm @@ -33,6 +33,7 @@ (define-module (guix transformations) #:autoload (guix git) (git-checkout git-checkout? git-checkout-url) #:autoload (guix upstream) (upstream-source package-latest-release + preferred-upstream-source upstream-source-version upstream-source-signature-urls) #:autoload (guix cpu) (current-cpu @@ -865,12 +866,14 @@ (define (upstream-source-without-signatures source) (define* (package-with-upstream-version p #:optional version #:key (preserve-patches? #f) - (authenticate? #t)) + (authenticate? #t) + (preserve-archive-type? #t)) "Return package P changed to use the given upstream VERSION or, if VERSION is #f, the latest known upstream version. When PRESERVE-PATCHES? is true, preserve patches and snippets found in the source of P, provided it's an origin. When AUTHENTICATE? is false, disable OpenPGP signature verification -of upstream source code." +of upstream source code. When PRESERVE-ARCHIVE-TYPE? is true, use the same +archive type as P's source (gz, xz, zstd, etc.)" (let ((source (and=> (package-latest-release p #:version version) (if authenticate? identity @@ -899,24 +902,27 @@ (define* (package-with-upstream-version p #:optional version (upstream-source-version source) (package-version p))) - (unless (pair? (upstream-source-signature-urls source)) - (warning (G_ "cannot authenticate source of '~a', version ~a~%") - (package-name p) - (upstream-source-version source))) + (let ((source (if preserve-archive-type? + (preferred-upstream-source source p) + source))) + (unless (pair? (upstream-source-signature-urls source)) + (warning (G_ "cannot authenticate source of '~a', version ~a~%") + (package-name p) + (upstream-source-version source))) - ;; TODO: Take 'upstream-source-input-changes' into account. - (package - (inherit p) - (version (upstream-source-version source)) - (source (if (and preserve-patches? - (origin? (package-source p))) - ;; Inherit P's origin so snippets and patches are - ;; applied as if we had run 'guix refresh -u'. - (origin - (inherit (package-source p)) - (method upstream-fetch) - (uri source)) - source))))))) + ;; TODO: Take 'upstream-source-input-changes' into account. + (package + (inherit p) + (version (upstream-source-version source)) + (source (if (and preserve-patches? + (origin? (package-source p))) + ;; Inherit P's origin so snippets and patches are + ;; applied as if we had run 'guix refresh -u'. + (origin + (inherit (package-source p)) + (method upstream-fetch) + (uri source)) + source)))))))) (define (transform-package-latest specs) "Return a procedure that rewrites package graphs such that those in SPECS