GNU bug report logs - #55316
[PATCH] scripts: package: Transform before creating manifest entries.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Josselin Poiret <dev@HIDDEN>; Keywords: patch; dated Sun, 8 May 2022 14:17:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 55316 <at> debbugs.gnu.org:


Received: (at 55316) by debbugs.gnu.org; 9 May 2022 14:54:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 09 10:54:41 2022
Received: from localhost ([127.0.0.1]:59176 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1no4mW-00035S-Az
	for submit <at> debbugs.gnu.org; Mon, 09 May 2022 10:54:41 -0400
Received: from jpoiret.xyz ([206.189.101.64]:34958)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dev@HIDDEN>) id 1no4mF-000354-HK
 for 55316 <at> debbugs.gnu.org; Mon, 09 May 2022 10:54:38 -0400
Received: from authenticated-user (jpoiret.xyz [206.189.101.64])
 by jpoiret.xyz (Postfix) with ESMTPA id 71822184BF2;
 Mon,  9 May 2022 14:54:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jpoiret.xyz; s=dkim;
 t=1652108060;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=cXRDT04PPHTWUq5I1f09RzyarUFtYd+01K7FsLwRzxw=;
 b=n+S9QgzRnmhpPrR+KibRv/TWYgEP7PXvHV+ItgvldFGYJwYYnzw9iPKWqBzZ4JnJ5UlKW2
 JyQlAXCOEkdv6QFa+HhH/c1PN3KfbXxQFLV5QmRFhcprwDgSPxza3O75lf0uflJsVXCh0V
 xJhf36d5vSGy7XcTryao0uZljDWN7ZW4QVLXs3o2xAe/g5n4sbbdJ2SdgGvJi79ufdD7fx
 eeEeo1iPWjmztvUzbm1TMhGl8/5O7xMlwQHPbTLDlInxAgpfdis6OrwpTEXHXoIFGo27tf
 7sON17w+hpIKm9Y2bMi1d6wkg0kHgo5WM3QQFIloY+KFifuHHbT4344B8bPDiw==
From: Josselin Poiret <dev@HIDDEN>
To: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@HIDDEN>
Subject: [PATCH v2] scripts: package: Transform before creating manifest
 entries.
Date: Mon,  9 May 2022 16:54:10 +0200
Message-Id: <20220509145410.11678-1-dev@HIDDEN>
In-Reply-To: <874k1zrq2p.fsf@HIDDEN>
References: <874k1zrq2p.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Authentication-Results: jpoiret.xyz;
 auth=pass smtp.auth=jpoiret@HIDDEN smtp.mailfrom=dev@HIDDEN
X-Spamd-Bar: /
X-Spam-Score: 2.1 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: * guix/scripts/package.scm (options->installable): Add
 TRANSFORM
 argument, to be able to directly transform the new packages before creating
 their manifest entries. (process-actions): Remove transform [...] 
 Content analysis details:   (2.1 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 0.0 T_SPF_HELO_TEMPERROR   SPF: test of HELO record failed (temperror)
 -0.0 SPF_PASS               SPF: sender matches SPF record
 1.6 PDS_OTHER_BAD_TLD      Untrustworthy TLDs
 [URI: jpoiret.xyz (xyz)]
 0.5 FROM_SUSPICIOUS_NTLD   From abused NTLD
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 55316
Cc: Josselin Poiret <dev@HIDDEN>, 55316 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.1 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  * guix/scripts/package.scm (options->installable): Add TRANSFORM
    argument, to be able to directly transform the new packages before creating
    their manifest entries. (process-actions): Remove transform [...] 
 
 Content analysis details:   (1.1 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
 -0.0 SPF_PASS               SPF: sender matches SPF record
  1.6 PDS_OTHER_BAD_TLD      Untrustworthy TLDs
                             [URI: jpoiret.xyz (xyz)]
  0.5 FROM_SUSPICIOUS_NTLD   From abused NTLD
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

* guix/scripts/package.scm (options->installable): Add TRANSFORM
argument, to be able to directly transform the new packages before
creating their manifest entries.
(process-actions): Remove transform-entry, and step3, transforming
directly in step2.
* tests/guix-package.sh: Add test.
---
Hello Ludo,

Thanks for your review.  As mentioned on IRC, those tests don't test
process-actions, which is where the logic resides.  I added a test to
guix-package.sh that follows the original issue instead, note although
that between yesterday and today, emacs-consult has changed enough to
not compile anymore with `--with-branch=emacs-consult=main` (branch
rename notwithstanding).

Best,
Josselin

 guix/scripts/package.scm | 36 ++++++++++++------------------------
 tests/guix-package.sh    | 30 ++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d007005607..4673cf18b2 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@HIDDEN>
 ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@HIDDEN>
 ;;; Copyright © 2018 Steve Sprang <scs@HIDDEN>
+;;; Copyright © 2022 Josselin Poiret <dev@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -694,10 +695,10 @@ (define (package->manifest-entry* package output)
   (manifest-entry-with-provenance
    (package->manifest-entry package output)))
 
-(define (options->installable opts manifest transaction)
-  "Given MANIFEST, the current manifest, and OPTS, the result of 'args-fold',
-return an variant of TRANSACTION that accounts for the specified installations
-and upgrades."
+(define (options->installable opts manifest transform transaction)
+  "Given MANIFEST, the current manifest, OPTS, and TRANSFORM, the result of
+'args-fold', return an variant of TRANSACTION that accounts for the specified
+installations, upgrades and transformations."
   (define upgrade?
     (options->upgrade-predicate opts))
 
@@ -714,13 +715,14 @@ (define to-install
                   (('install . (? package? p))
                    ;; When given a package via `-e', install the first of its
                    ;; outputs (XXX).
-                   (package->manifest-entry* p "out"))
+                   (package->manifest-entry* (transform p) "out"))
                   (('install . (? string? spec))
                    (if (store-path? spec)
                        (store-item->manifest-entry spec)
                        (let-values (((package output)
                                      (specification->package+output spec)))
-                         (package->manifest-entry* package output))))
+                         (package->manifest-entry* (transform package)
+                                                   output))))
                   (('install . obj)
                    (leave (G_ "cannot install non-package object: ~s~%")
                           obj))
@@ -979,16 +981,6 @@ (define allow-collisions? (assoc-ref opts 'allow-collisions?))
   (define profile  (or (assoc-ref opts 'profile) %current-profile))
   (define transform (options->transformation opts))
 
-  (define (transform-entry entry)
-    (let ((item (transform (manifest-entry-item entry))))
-      (manifest-entry-with-transformations
-       (manifest-entry
-         (inherit entry)
-         (item item)
-         (version (if (package? item)
-                      (package-version item)
-                      (manifest-entry-version entry)))))))
-
   (when (equal? profile %current-profile)
     ;; Normally the daemon created %CURRENT-PROFILE when we connected, unless
     ;; it's a version that lacks the fix for <https://bugs.gnu.org/37744>
@@ -1021,16 +1013,12 @@ (define (transform-entry entry)
                              (map load-manifest files))))))
            (step1    (options->removable opts manifest
                                          (manifest-transaction)))
-           (step2    (options->installable opts manifest step1))
-           (step3    (manifest-transaction
-                      (inherit step2)
-                      (install (map transform-entry
-                                    (manifest-transaction-install step2)))))
-           (new      (manifest-perform-transaction manifest step3))
+           (step2    (options->installable opts manifest transform step1))
+           (new      (manifest-perform-transaction manifest step2))
            (trans    (if (null? files)
-                         step3
+                         step2
                          (fold manifest-transaction-install-entry
-                               step3
+                               step2
                                (manifest-entries manifest)))))
 
       (warn-about-old-distro)
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index d1b383d2ad..c2f5e39de0 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -1,6 +1,7 @@
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2012-2022 Ludovic Courtès <ludo@HIDDEN>
 # Copyright © 2013 Nikita Karetnikov <nikita@HIDDEN>
+# Copyright © 2022 Josselin Poiret <dev@HIDDEN>
 #
 # This file is part of GNU Guix.
 #
@@ -210,6 +211,35 @@ test "$(readlink -f "$profile/bin/guile")" \
 test ! -f "$profile/bin/sed"
 rm "$profile" "$profile"-[0-9]-link
 
+# Make sure transformations apply to propagated inputs and don't lead to
+# conflicts when installing them alongside, see bug
+# <https://lists.gnu.org/archive/html/guix-patches/2022-05/msg00277.html>
+mkdir "$module_dir"
+cat > "$module_dir/test.scm" <<EOF
+(define-module (test)
+  #:use-module (guix packages)
+  #:use-module (gnu packages base)
+  #:use-module (guix build-system trivial))
+
+(define-public dummy-package
+  (package
+    (name "dummy-package")
+    (version "1")
+    (source #f)
+    (build-system trivial-build-system)
+    (propagated-inputs
+     (list hello))
+    (synopsis "dummy")
+    (description "dummy")
+    (home-page "dummy")
+    (license #f)))
+EOF
+guix package -p "$profile" -L "$module_dir"\
+     -i hello dummy-package \
+     --without-tests=hello -n
+rm "$module_dir/test.scm"
+rmdir "$module_dir"
+
 # Profiles with a relative file name.  Make sure we don't create dangling
 # symlinks--see bug report at
 # <https://lists.gnu.org/archive/html/guix-devel/2018-07/msg00036.html>.
-- 
2.36.0





Information forwarded to guix-patches@HIDDEN:
bug#55316; Package guix-patches. Full text available.

Message received at 55316 <at> debbugs.gnu.org:


Received: (at 55316) by debbugs.gnu.org; 9 May 2022 09:52:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon May 09 05:52:09 2022
Received: from localhost ([127.0.0.1]:56154 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1no03k-0005JY-Nf
	for submit <at> debbugs.gnu.org; Mon, 09 May 2022 05:52:08 -0400
Received: from eggs.gnu.org ([209.51.188.92]:49332)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1no03h-0005J4-W8
 for 55316 <at> debbugs.gnu.org; Mon, 09 May 2022 05:52:06 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:48012)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1no03c-0004xO-9i; Mon, 09 May 2022 05:52:00 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To:
 From; bh=DptBGxhxGMHgblwT0ax1xBoOIba/X3/4YmMfkfc1+3s=; b=e/feirmxv+UyIVZ2HWpF
 kRcD7eLf79op2kiJJNZhdjhdjt1WRtGM9Kl6L95cVdFdAh/zoK6bQRTwRxFafYR2qOpzjJ80ZdFDL
 DZPXWbSu7FPNKmCNm0DKh+DElVI6r1L8SQEPrdOvUkZv49Vyl/0+Bi5SeNBylM4eAAyfLtYrSYM7E
 jH0mCX1MYMgWqExhRmw5xZ+hrUX4/afnPTgOLAoftx8mOLOmXihHey1uE2R8XHu4TFGNNhNtMmCuA
 2XyHYlhfzibiKVAeMZj7wW6HONO5g/9XaHmlpJhE2D6EnHaHu3AJyWznLzj1S6UKTE2GHEVA4/cEv
 T7tdLUBvaJjmkQ==;
Received: from [193.50.110.244] (port=52676 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1no03b-0000cU-OF; Mon, 09 May 2022 05:51:59 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Josselin Poiret <dev@HIDDEN>
Subject: Re: bug#55316: [PATCH] scripts: package: Transform before creating
 manifest entries.
References: <20220508141606.14085-1-dev@HIDDEN>
Date: Mon, 09 May 2022 11:51:58 +0200
In-Reply-To: <20220508141606.14085-1-dev@HIDDEN> (Josselin Poiret's
 message of "Sun, 8 May 2022 16:16:06 +0200")
Message-ID: <874k1zrq2p.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 55316
Cc: 55316 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hello!

Josselin Poiret <dev@HIDDEN> skribis:

> * guix/scripts/package.scm (options->installable): Add TRANSFORM
> argument, to be able to directly transform the new packages before
> creating their manifest entries.
> (process-actions): Remove transform-entry, and step3.
> ---
> Hello everyone,
>
> Someone on IRC [1] reported that they couldn't run
>
> guix install emacs-avy emacs-embark --with-branch=3Demacs-avy=3Dmaster --=
with-branch=3Demacs-embark=3Dmaster
>
> without guix complaining about conflicting entries of emacs-avy and
> the propagated one from emacs-embark, even in a profile without either
> of them.  The issue was that package transformations were applied to
> the contents of the generated manifest entries, but weren't applied to
> any of their dependencies.

Interesting.

> To solve this, I figured it would be simpler to just apply the
> transformation from the start, only creating the manifest entries
> after they have been applied.  Also, the default
> `package->manifest-entry` preserves transformations properties by
> default, so this doesn't lose any info either.

As discussed on IRC, could you make sure transformation properties are
preserved in the manifest?

I only see one test that explicitly checks that,
"transaction-upgrade-entry, transformation options preserved" in
tests/packages.scm, and then there=E2=80=99s "options->transformation +
package->manifest-entry" in tests/transformations.scm.

Also, could you add a test that reproduces the problem being fixed?

Thanks!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#55316; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 8 May 2022 14:16:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 08 10:16:39 2022
Received: from localhost ([127.0.0.1]:54976 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nnhiA-0004wl-O4
	for submit <at> debbugs.gnu.org; Sun, 08 May 2022 10:16:39 -0400
Received: from lists.gnu.org ([209.51.188.17]:35582)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dev@HIDDEN>) id 1nnhi8-0004uh-ET
 for submit <at> debbugs.gnu.org; Sun, 08 May 2022 10:16:37 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:38830)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dev@HIDDEN>) id 1nnhi8-0000G9-7G
 for guix-patches@HIDDEN; Sun, 08 May 2022 10:16:36 -0400
Received: from jpoiret.xyz ([206.189.101.64]:38898)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dev@HIDDEN>) id 1nnhi6-0001kU-68
 for guix-patches@HIDDEN; Sun, 08 May 2022 10:16:35 -0400
Received: from authenticated-user (jpoiret.xyz [206.189.101.64])
 by jpoiret.xyz (Postfix) with ESMTPA id C8898184D6A;
 Sun,  8 May 2022 14:16:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jpoiret.xyz; s=dkim;
 t=1652019390;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding;
 bh=A67dAy3wWxjOorffQG3HZsQVeQhnwWJewn4fF5gbDpc=;
 b=oswEZ+urVi5zakk/ilCsXngeDmPaEFXbiSqbHOXuNUr/wyixG5Q3B0WJp9Ze1MMuamOGfr
 Ev7PRM6H8jkj0Rp0rigw+WRQXJKRzFPbRkvzRkJGNNeQs/Af9JYp3CYtuBgRtbYd++t6UP
 pP6YKat48TAOcR092LUuUfYIby0XCYPMn8sWsp9bD96UWF9S89pWS1alcVXZEk8CqL4XFY
 WOjdPEZIE3Yw8DhaueOC36TFAP9ICrnSgtDjQw/68vYocLHNxLFcN82uZ5kFzuuMdo0Yi2
 U2AkWnZDP0hSfSirM+GITfvR8yertTaHGsH9q/zlS3fRqlWUhwV2JLAiWqMwCw==
From: Josselin Poiret <dev@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH] scripts: package: Transform before creating manifest entries.
Date: Sun,  8 May 2022 16:16:06 +0200
Message-Id: <20220508141606.14085-1-dev@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Authentication-Results: jpoiret.xyz;
 auth=pass smtp.auth=jpoiret@HIDDEN smtp.mailfrom=dev@HIDDEN
X-Spamd-Bar: /
Received-SPF: pass client-ip=206.189.101.64; envelope-from=dev@HIDDEN;
 helo=jpoiret.xyz
X-Spam_score_int: 24
X-Spam_score: 2.4
X-Spam_bar: ++
X-Spam_report: (2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FROM_SUSPICIOUS_NTLD=0.499,
 FROM_SUSPICIOUS_NTLD_FP=1.997, PDS_OTHER_BAD_TLD=1.997, SPF_HELO_PASS=-0.001,
 SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 2.7 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: * guix/scripts/package.scm (options->installable): Add
 TRANSFORM
 argument, to be able to directly transform the new packages before creating
 their manifest entries. (process-actions): Remove transform [...] 
 Content analysis details:   (2.7 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
 medium trust [209.51.188.17 listed in list.dnswl.org]
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
 0.9 SPF_FAIL               SPF: sender does not match SPF record (fail)
 [SPF failed: Please see http://www.openspf.org/Why?s=mfrom;
 id=dev%40jpoiret.xyz; ip=209.51.188.17; r=debbugs.gnu.org]
 1.6 PDS_OTHER_BAD_TLD      Untrustworthy TLDs
 [URI: jpoiret.xyz (xyz)]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [209.51.188.17 listed in wl.mailspike.net]
 2.0 FROM_SUSPICIOUS_NTLD_FP From abused NTLD
 0.5 FROM_SUSPICIOUS_NTLD   From abused NTLD
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: submit
Cc: Josselin Poiret <dev@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.3 (/)

* guix/scripts/package.scm (options->installable): Add TRANSFORM
argument, to be able to directly transform the new packages before
creating their manifest entries.
(process-actions): Remove transform-entry, and step3.
---
Hello everyone,

Someone on IRC [1] reported that they couldn't run

guix install emacs-avy emacs-embark --with-branch=emacs-avy=master --with-branch=emacs-embark=master

without guix complaining about conflicting entries of emacs-avy and
the propagated one from emacs-embark, even in a profile without either
of them.  The issue was that package transformations were applied to
the contents of the generated manifest entries, but weren't applied to
any of their dependencies.  To solve this, I figured it would be simpler
to just apply the transformation from the start, only creating the manifest
entries after they have been applied.  Also, the
default `package->manifest-entry` preserves transformations properties by default,
so this doesn't lose any info either.

With this patch applied, the above command works as expected for me.

Best,

Josselin Poiret

[1] https://logs.guix.gnu.org/guix/2022-05-08.log#134728

 guix/scripts/package.scm | 36 ++++++++++++------------------------
 1 file changed, 12 insertions(+), 24 deletions(-)

diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d007005607..4673cf18b2 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@HIDDEN>
 ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@HIDDEN>
 ;;; Copyright © 2018 Steve Sprang <scs@HIDDEN>
+;;; Copyright © 2022 Josselin Poiret <dev@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -694,10 +695,10 @@ (define (package->manifest-entry* package output)
   (manifest-entry-with-provenance
    (package->manifest-entry package output)))
 
-(define (options->installable opts manifest transaction)
-  "Given MANIFEST, the current manifest, and OPTS, the result of 'args-fold',
-return an variant of TRANSACTION that accounts for the specified installations
-and upgrades."
+(define (options->installable opts manifest transform transaction)
+  "Given MANIFEST, the current manifest, OPTS, and TRANSFORM, the result of
+'args-fold', return an variant of TRANSACTION that accounts for the specified
+installations, upgrades and transformations."
   (define upgrade?
     (options->upgrade-predicate opts))
 
@@ -714,13 +715,14 @@ (define to-install
                   (('install . (? package? p))
                    ;; When given a package via `-e', install the first of its
                    ;; outputs (XXX).
-                   (package->manifest-entry* p "out"))
+                   (package->manifest-entry* (transform p) "out"))
                   (('install . (? string? spec))
                    (if (store-path? spec)
                        (store-item->manifest-entry spec)
                        (let-values (((package output)
                                      (specification->package+output spec)))
-                         (package->manifest-entry* package output))))
+                         (package->manifest-entry* (transform package)
+                                                   output))))
                   (('install . obj)
                    (leave (G_ "cannot install non-package object: ~s~%")
                           obj))
@@ -979,16 +981,6 @@ (define allow-collisions? (assoc-ref opts 'allow-collisions?))
   (define profile  (or (assoc-ref opts 'profile) %current-profile))
   (define transform (options->transformation opts))
 
-  (define (transform-entry entry)
-    (let ((item (transform (manifest-entry-item entry))))
-      (manifest-entry-with-transformations
-       (manifest-entry
-         (inherit entry)
-         (item item)
-         (version (if (package? item)
-                      (package-version item)
-                      (manifest-entry-version entry)))))))
-
   (when (equal? profile %current-profile)
     ;; Normally the daemon created %CURRENT-PROFILE when we connected, unless
     ;; it's a version that lacks the fix for <https://bugs.gnu.org/37744>
@@ -1021,16 +1013,12 @@ (define (transform-entry entry)
                              (map load-manifest files))))))
            (step1    (options->removable opts manifest
                                          (manifest-transaction)))
-           (step2    (options->installable opts manifest step1))
-           (step3    (manifest-transaction
-                      (inherit step2)
-                      (install (map transform-entry
-                                    (manifest-transaction-install step2)))))
-           (new      (manifest-perform-transaction manifest step3))
+           (step2    (options->installable opts manifest transform step1))
+           (new      (manifest-perform-transaction manifest step2))
            (trans    (if (null? files)
-                         step3
+                         step2
                          (fold manifest-transaction-install-entry
-                               step3
+                               step2
                                (manifest-entries manifest)))))
 
       (warn-about-old-distro)
-- 
2.35.1





Acknowledgement sent to Josselin Poiret <dev@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#55316; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 9 May 2022 15:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.