Ulf Herrman <striness@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at submit) by debbugs.gnu.org; 13 Oct 2023 03:58:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 12 23:58:14 2023 Received: from localhost ([127.0.0.1]:44555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qr9JV-00006x-Iv for submit <at> debbugs.gnu.org; Thu, 12 Oct 2023 23:58:13 -0400 Received: from lists.gnu.org ([2001:470:142::17]:43776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <striness@HIDDEN>) id 1qr9JP-00006Q-CQ for submit <at> debbugs.gnu.org; Thu, 12 Oct 2023 23:58:11 -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 <striness@HIDDEN>) id 1qr9Iw-0007RA-LQ for bug-guix@HIDDEN; Thu, 12 Oct 2023 23:57:38 -0400 Received: from tilde.club ([142.44.150.184]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <striness@HIDDEN>) id 1qr9Iu-0004Ja-QY for bug-guix@HIDDEN; Thu, 12 Oct 2023 23:57:38 -0400 Received: by tilde.club (Postfix, from userid 5378) id DF6682204ECD3; Fri, 13 Oct 2023 03:57:34 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 tilde.club DF6682204ECD3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tilde.club; s=mail; t=1697169454; bh=RaFJNMUOZZsOrjAEtX8icDj5e5J61xMnM57nBSGgeUU=; h=From:To:Subject:Date:From; b=BF83EKtoeVxE/FIQSjskKpTtfdPPQjYq/fVBjHFIVsdwwK6QQQZjLxyrU7Jdh5IG5 yxjnwDuelVPrDyHR2Tnp5EemacjK0N9pZyYpl0Hje6GbeTgSL80EI7B2brGHMJTMxL XMchUjiQoWPKzqffzD+WWZ4ZBIoQt3G04+xLgQY8= From: Ulf Herrman <striness@HIDDEN> To: bug-guix@HIDDEN Subject: `this-package' references reintroduce pre-transformation packages. Date: Thu, 12 Oct 2023 22:57:14 -0500 Message-ID: <87sf6fdvj9.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Received-SPF: pass client-ip=142.44.150.184; envelope-from=striness@HIDDEN; helo=tilde.club X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit 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.1 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Suppose you have a package that is using a gexp in its argument list and, like a good citizen of the gexp world, it uses this-package-input to refer to its own input packages. In fact, let's suppose that it's the model citizen depicted in https://guix.gnu.org/en/blog/2021/the-big-change/ under the "G-expressions and self-referential records" heading: (define hello (package (name "hello") ;; =E2=80=A6 (arguments (list #:configure-flags #~(list (string-append "--with-gawk=3D" #$(this-package-input "gawk"))))) (inputs `(("gawk" ,gawk))))) If we define a variant like so: (define hello-variant (package (inherit hello) (name "hello-variant") (inputs `(("gawk" ,gawk-4.0))))) it will work just fine. But if we define a variant like SO: (define hello-variant (package (inherit hello) (name "hello-variant") (inputs `(("gawk" ,gawk-4.0))) (arguments (substitute-keyword-arguments (package-arguments hello) ((#:configure-flags flags #~'()) #~(cons "--with-hospitality=3Dice-cream" #$flags)))))) it will NOT work just fine. When (package-arguments hello) is evaluated, it will execute the field definition for `hello' with `this-package' bound to `hello', rather than `hello-variant'. Consequently, `this-package-input' will return gawk rather than gawk-4.0. We need a way to access the "parent" package's fields while keeping `this-package' bound to its current value. The most general form of this would look something like this: (define (package-arguments-with-package p0 p) (match p0 (($ <package> _ _ _ _ arguments-proc) (arguments-proc p)))) Then hello-variant could be changed to use (package-arguments-with-package hello this-package) instead of (package-arguments hello). This may be needlessly general, though; the problem could also be solved with an interface more along the lines of (parent-package-arguments hello) which expands into the aforementioned package-arguments-with-package call. Another option would be to, yet again, extend the record syntax. It's always bugged me a bit to have to explicitly reference the original record in more than one place when using derived fields, so this might be generally useful as well: (define hello-variant (package (inherit hello (arguments hello-arguments)) (name "hello-variant") (inputs `(("gawk" ,gawk-4.0))) (arguments (substitute-keyword-arguments hello-arguments ((#:configure-flags flags #~'()) #~(cons "--with-hospitality=3Dice-cream" #$flags)))))) This would create a macro named `hello-arguments' within the scope of the (package ...) form which expands into something equivalent to a `parent-package-arguments' call. Adjust syntax to taste. Thoughts? =2D Ulf --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQHIBAEBCAAyFiEEn6BUn0yca1D9JsMa1lV76sJM9mgFAmUowBoUHHN0cmluZXNz QHRpbGRlLmNsdWIACgkQ1lV76sJM9mhMggv+KB3jA1cTdS9iUoGC2tJWHNvWYAjp tq6kaKJgop/2hgxcdPuhB37Lcx3TOCTJoVFzL7Mpni6o4k2UolgERYMy9hUCzXul XZhqoLrSvDWfQEpoKzFNMZaVGC6PSirFdFb3XteyrfiWyjH/INgL/IX+V91g93Si /ZR7Ks6CiRuQ5MReW2LzyhiDx64KXEnE3oUCnqKUfDJgLtHD/bFqqK3ZqjIPeIir 4pPDfq2pyH8MqQAx5cQjfmQwVoX1RNKITISHlvIAZvTVsp7oCJV0Rvg/Pg+8kpFI P6eKyzsJJbZx4NYVRpXAXXpfcn5D02CjGErOYrFolK+HLT5KlyNc6FYFQstOyoB2 vAu/WYaSBD4rfaT6iSL4m9zH4kMb6pl2sLkgMP5QPYK2i0zsnvjAqBc+2SPOwpvE n52+uq7w/WtqzcZCYzmezunTK9VvGy50+HkfC2aVDpckpC3HSklotkDhJkn8PHwy bxxxDRP9nfcG9YirGPJrJ+Y5G0UmBvAniMkR =8Su+ -----END PGP SIGNATURE----- --=-=-=--
Ulf Herrman <striness@HIDDEN>
:bug-guix@HIDDEN
.
Full text available.bug-guix@HIDDEN
:bug#66510
; Package guix
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.