[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#65665: package-mapping with #:deep? #t doesn't get all the implicit
From: |
Maxim Cournoyer |
Subject: |
bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs |
Date: |
Thu, 12 Oct 2023 12:00:33 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi,
Ludovic Courtès <ludo@gnu.org> writes:
> Ulf Herrman <striness@tilde.club> skribis:
>
>> -(define (build-system-with-package-mapping bs rewrite)
>> +(define (build-system-with-package-mapping bs rewrite-input
>> rewrite-argument)
>> "Return a variant of BS, a build system, that rewrites a bag's inputs by
>> passing them through REWRITE, a procedure that takes an input tuplet and
>> returns a \"rewritten\" input tuplet."
>> @@ -1442,9 +1442,10 @@ (define (build-system-with-package-mapping bs rewrite)
>> (let ((lowered (apply lower args)))
>> (bag
>> (inherit lowered)
>> - (build-inputs (map rewrite (bag-build-inputs lowered)))
>> - (host-inputs (map rewrite (bag-host-inputs lowered)))
>> - (target-inputs (map rewrite (bag-target-inputs lowered))))))
>> + (build-inputs (map rewrite-input (bag-build-inputs lowered)))
>> + (host-inputs (map rewrite-input (bag-host-inputs lowered)))
>> + (target-inputs (map rewrite-input (bag-target-inputs lowered)))
>> + (arguments (map rewrite-argument (bag-arguments lowered))))))
>
> Aah, now I understand. :-)
>
> It’s indeed the case that arguments can capture references to packages
> that won’t be caught by ‘package-mapping’. For instance, if you write:
>
> (package
> …
> (arguments (list … #~(whatever #$coreutils))))
>
> … then ‘coreutils’ here cannot be replaced.
>
> To address this, the recommendation is to always add dependencies to
> input fields and to use self-references within arguments. The example
> above should be written like this:
>
> (package
> …
> (arguments
> (list … #~(whatever #$(this-package-input "coreutils")))))
>
> It’s just a recommendation and one can perfectly ignore it, and I
> suppose that was the impetus for this patch.
>
> This is one of the things discussed while designing this change:
>
> https://guix.gnu.org/en/blog/2021/the-big-change/
> (search for “self-referential records”)
>
> https://issues.guix.gnu.org/49169
>
> My take was and still is that it’s an acceptable limitation. Packagers
> need to follow the guideline above if they want proper support for
> rewriting, ‘guix graph’, and other tools.
>
> WDYT?
But not all packages found in a bag come from inputs; they may be
provided as an argument to the build system (cmake, meson, qt, etc. all
allow for this).
--
Thanks,
Maxim
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ludovic Courtès, 2023/10/12
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ludovic Courtès, 2023/10/12
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs,
Maxim Cournoyer <=
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ulf Herrman, 2023/10/12
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ludovic Courtès, 2023/10/14
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ulf Herrman, 2023/10/15
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ludovic Courtès, 2023/10/21
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Ulf Herrman, 2023/10/21
- bug#65665: package-mapping with #:deep? #t doesn't get all the implicit inputs, Simon Tournier, 2023/10/23