From patchwork Wed Mar 8 12:03:44 2023 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: 47782 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 0FBB316E3A; Wed, 8 Mar 2023 12:05:09 +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=-1.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,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 6209716E22 for ; Wed, 8 Mar 2023 12:05:08 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZsXY-0001UI-9J; Wed, 08 Mar 2023 07:05: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 1pZsXW-0001Th-Lj for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pZsXW-0005o3-5Q for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pZsXW-0007b5-0O for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#62047] [PATCH 1/2] packages: Use SRFI-71 instead of SRFI-11. References: <20230308120125.17560-1-ludo@gnu.org> In-Reply-To: <20230308120125.17560-1-ludo@gnu.org> Resent-From: Ludovic =?utf-8?q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 08 Mar 2023 12:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62047 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 62047@debbugs.gnu.org Cc: Ludovic =?utf-8?q?Court=C3=A8s?= Received: via spool by 62047-submit@debbugs.gnu.org id=B62047.167827704229108 (code B ref 62047); Wed, 08 Mar 2023 12:05:01 +0000 Received: (at 62047) by debbugs.gnu.org; 8 Mar 2023 12:04:02 +0000 Received: from localhost ([127.0.0.1]:47947 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZsWX-0007ZA-BE for submit@debbugs.gnu.org; Wed, 08 Mar 2023 07:04:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZsWV-0007Yk-6s for 62047@debbugs.gnu.org; Wed, 08 Mar 2023 07:03:59 -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 1pZsWP-0005hg-Vn; Wed, 08 Mar 2023 07:03: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:Date:Subject:To:From:in-reply-to: references; bh=toi1Ec1hUCg5dRqCER+h+Qqlm2IoUN1HZi/6xbgmyU0=; b=SWkHFPyD7GRSd7 lD22e8Juiky8BYdq/mmwKmyNQKZEpHzwtWLgrufXCrTlVN1hc8MQwxQtwbFKfNxeQ1mYulXFIs3To iaXAL8y20Qiyu4CzvFszE3v+ZA59i4g7r7w9JK8yIbzSoNQOtvNWb+KtQF6K9H0CUGxTX8vsJkN6m uZFpyNgdTZSO7DIEP+E6EU2fhMp90krY/GIe6U3rY3oUQ1wVNZss4yPYkHfy0zwmOR5KfGsvq3emv iWWqJmOcKmWd1zji8SAHfDw2c45yS+UlFbwceBKl3rRN5zjrkPpm7mXNnblNH8SoAPtOxn+hfHOcp MOST3I+syx+HuNjAxthA==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pZsWN-0000ne-UN; Wed, 08 Mar 2023 07:03:53 -0500 From: Ludovic =?utf-8?q?Court=C3=A8s?= Date: Wed, 8 Mar 2023 13:03:44 +0100 Message-Id: <20230308120345.17616-1-ludo@gnu.org> X-Mailer: git-send-email 2.39.1 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 * guix/packages.scm (package-input-rewriting/spec): Use SRFI-71 'let'. --- guix/packages.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 041a872f9d..cd61878bcc 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012-2022 Ludovic Courtès +;;; Copyright © 2012-2023 Ludovic Courtès ;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2016 Alex Kost @@ -51,10 +51,10 @@ (define-module (guix packages) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9 gnu) - #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) + #:use-module (srfi srfi-71) #:use-module (rnrs bytevectors) #:use-module (web uri) #:autoload (texinfo) (texi-fragment->stexi) @@ -1534,8 +1534,7 @@ (define table (fold (lambda (replacement table) (match replacement ((spec . proc) - (let-values (((name version) - (package-name->name+version spec))) + (let ((name version (package-name->name+version spec))) (vhash-cons name (list version proc) table))))) vlist-null replacements)) From patchwork Wed Mar 8 12:03:45 2023 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: 47783 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 8DA6A16E33; Wed, 8 Mar 2023 12:05:20 +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=-1.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,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 E515016E22 for ; Wed, 8 Mar 2023 12:05:19 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZsXZ-0001Uy-CF; Wed, 08 Mar 2023 07:05:05 -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 1pZsXX-0001Ty-5u for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pZsXW-0005oV-Lk for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pZsXW-0007bC-GZ for guix-patches@gnu.org; Wed, 08 Mar 2023 07:05:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#62047] [PATCH 2/2] packages: 'package-input-rewriting/spec' ignores hidden packages. Resent-From: Ludovic =?utf-8?q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 08 Mar 2023 12:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62047 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 62047@debbugs.gnu.org Cc: Ludovic =?utf-8?q?Court=C3=A8s?= Received: via spool by 62047-submit@debbugs.gnu.org id=B62047.167827704329117 (code B ref 62047); Wed, 08 Mar 2023 12:05:02 +0000 Received: (at 62047) by debbugs.gnu.org; 8 Mar 2023 12:04:03 +0000 Received: from localhost ([127.0.0.1]:47949 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZsWY-0007ZY-Vk for submit@debbugs.gnu.org; Wed, 08 Mar 2023 07:04:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pZsWW-0007Yn-Tz for 62047@debbugs.gnu.org; Wed, 08 Mar 2023 07:04:01 -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 1pZsWR-0005i4-NM; Wed, 08 Mar 2023 07:03:55 -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=L0yAQoCGnLkEsnYpZP46rT6FuyYQQnkjtjkd3bhA0d8=; b=FPE3veDy+kWGCWXmbp0e RjRVFEg+UqsP4zJ/DM9AhgZIf2zJcZ1xB/XarirjwTQkopqHAUBQVPivv2ldgq11qwFpK1mkJvYnq 1tOKN8T5TrE9bK3ojl6J5iQrH4ZUP/jj+V/sLNqavOCLeNUdegcwj/aap9qAQWTfimx1AlFrWO9kb iTD75E+e6Jc3Or6ag4zrXyRel2ODhN5T12l2Ht9bpMmk6Kl+kQq7O4VvjwLAEJTZ91/MdpZ8VhH+j 2946EFNo4qUvs0L814JLtkHI+nHVS4THcE8NTqnkJLVYuTAwFM3ckpIrD6d0wZCZ5wynOcoIpYRzf W6Li+4n1eRGgQA==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pZsWQ-0000ne-0p; Wed, 08 Mar 2023 07:03:54 -0500 From: Ludovic =?utf-8?q?Court=C3=A8s?= Date: Wed, 8 Mar 2023 13:03:45 +0100 Message-Id: <20230308120345.17616-2-ludo@gnu.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230308120345.17616-1-ludo@gnu.org> References: <20230308120345.17616-1-ludo@gnu.org> 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 The primary motivation is to support things like: guix build guix --with-input=guile=guile-next without triggering a rebuild of (@@ (gnu packages commencement) guile-final) and similar things. It is also consistent with package name resolution on the command line: a package that cannot be named cannot be replaced. * guix/packages.scm (package-input-rewriting/spec)[rewrite]: When P is hidden, return it as-is. * tests/packages.scm ("package-input-rewriting/spec, hidden package"): New test. * doc/guix.texi (Defining Package Variants): Update. (Package Transformation Options): Update '--with-input' example. --- doc/guix.texi | 21 ++++++++++++--------- guix/packages.scm | 7 +++++-- tests/packages.scm | 20 +++++++++++++++++++- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 6671ba9305..6803512435 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8331,10 +8331,13 @@ be replaced by name rather than by identity. @deffn {Scheme Procedure} package-input-rewriting/spec @var{replacements} [#:deep? #t] Return a procedure that, given a package, applies the given @var{replacements} to all the package graph, including implicit inputs -unless @var{deep?} is false. @var{replacements} is a list of -spec/procedures pair; each spec is a package specification such as -@code{"gcc"} or @code{"guile@@2"}, and each procedure takes a matching -package and returns a replacement for that package. +unless @var{deep?} is false. + +@var{replacements} is a list of spec/procedures pair; each spec is a +package specification such as @code{"gcc"} or @code{"guile@@2"}, and +each procedure takes a matching package and returns a replacement for +that package. Matching packages that have the @code{hidden?} property +set are not replaced. @end deffn The example above could be rewritten this way: @@ -12664,18 +12667,18 @@ or @code{guile@@1.8}. For instance, the following command builds Guix, but replaces its dependency on the current stable version of Guile with a dependency on -the legacy version of Guile, @code{guile@@2.0}: +the legacy version of Guile, @code{guile@@2.2}: @example -guix build --with-input=guile=guile@@2.0 guix +guix build --with-input=guile=guile@@2.2 guix @end example This is a recursive, deep replacement. So in this example, both @code{guix} and its dependency @code{guile-json} (which also depends on -@code{guile}) get rebuilt against @code{guile@@2.0}. +@code{guile}) get rebuilt against @code{guile@@2.2}. -This is implemented using the @code{package-input-rewriting} Scheme -procedure (@pxref{Defining Packages, @code{package-input-rewriting}}). +This is implemented using the @code{package-input-rewriting/spec} Scheme +procedure (@pxref{Defining Packages, @code{package-input-rewriting/spec}}). @item --with-graft=@var{package}=@var{replacement} This is similar to @option{--with-input} but with an important difference: diff --git a/guix/packages.scm b/guix/packages.scm index cd61878bcc..11c066b292 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1527,9 +1527,11 @@ (define (cut? p) (define* (package-input-rewriting/spec replacements #:key (deep? #t)) "Return a procedure that, given a package, applies the given REPLACEMENTS to all the package graph, including implicit inputs unless DEEP? is false. + REPLACEMENTS is a list of spec/procedures pair; each spec is a package specification such as \"gcc\" or \"guile@2\", and each procedure takes a -matching package and returns a replacement for that package." +matching package and returns a replacement for that package. Matching +packages that have the 'hidden?' property set are not replaced." (define table (fold (lambda (replacement table) (match replacement @@ -1557,7 +1559,8 @@ (define replacement-property (gensym " package-replacement")) (define (rewrite p) - (if (assq-ref (package-properties p) replacement-property) + (if (or (assq-ref (package-properties p) replacement-property) + (hidden-package? p)) p (match (find-replacement p) (#f p) diff --git a/tests/packages.scm b/tests/packages.scm index f58c47817b..446be6ba52 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012-2022 Ludovic Courtès +;;; Copyright © 2012-2023 Ludovic Courtès ;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2021 Maxim Cournoyer ;;; Copyright © 2021 Maxime Devos @@ -1577,6 +1577,24 @@ (define right-system? (match (delete-duplicates pythons eq?) ((p) (eq? p (rewrite python)))))) +(test-assert "package-input-rewriting/spec, hidden package" + ;; Hidden packages are not subject to rewriting. + (let* ((python (hidden-package python)) + (p0 (dummy-package "chbouib" + (build-system trivial-build-system) + (inputs (list python)))) + (rewrite (package-input-rewriting/spec + `(("python" . ,(const sed))) + #:deep? #t)) + (p1 (rewrite p0)) + (bag1 (package->bag p1)) + (pythons (filter-map (match-lambda + (("python" python) python) + (_ #f)) + (bag-transitive-inputs bag1)))) + (match (delete-duplicates pythons eq?) + ((p) (eq? p python))))) + (test-equal "package-input-rewriting/spec, graft" (derivation-file-name (package-derivation %store sed))