[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49169] [PATCH 00/11] Removing input labels from package definitions
From: |
Ludovic Courtès |
Subject: |
[bug#49169] [PATCH 00/11] Removing input labels from package definitions |
Date: |
Sun, 27 Jun 2021 13:00:27 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hi!
Ludovic Courtès <ludo@gnu.org> skribis:
> This patch series does the ground work to remove input labels
> from package definitions. In other words:
>
> (package
> ;; …
> (inputs `(("libunistring" ,libunistring)
> ("libffi" ,libffi))))
>
> becomes:
>
> (package
> ;; …
> (inputs (list libunistring libffi)))
>
> Note that it does not change the value returned by ‘package-inputs’
> & co.: that still includes input labels. Likewise, build-side code
> does not see any difference (there are still input alists).
The 2nd phase of this change (could be a year from now) would be to
remove labels entirely from the API: ‘package-inputs’ and related
procedures would return a label-less list. We’d most likely keep the
‘%build-inputs’ and ‘inputs’ alists on the build side.
However, this phase will be trickier. Labels currently serve as an
indirection to implement “virtual dependencies”, as in this example:
(package
;; …
(arguments '(… (assoc-ref inputs "mpi") …))
(inputs `(("mpi" ,openmpi))))
Here you can replace ‘openmpi’ with ‘mpich’ or ‘my-custom-openmpi’
(through inheritance or with ‘--with-input’) and the build-side code in
‘arguments’ still behaves as expected.
Once labels have fully disappeared, the build-side ‘inputs’ could only
contain the real package name, so either “openmpi” or “mpich”.
We could replace the build-side ‘assoc-ref’ with host-side code like:
(package
;; …
(arguments
(list #:phases
#~(… #$(lookup-package-input this-package "openmpi") …))))
but again, it depends on the actual package name, so it doesn’t help.
So we need… something else.
I don’t think it’s a showstopper for this patch series, but it does mean
that for the time being one has to know about labels to understand what
happens in package variants.
Ludo’.
- [bug#49169] [PATCH 03/11] lint: Add 'input-labels' checker., (continued)
- [bug#49169] [PATCH 03/11] lint: Add 'input-labels' checker., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 05/11] packages: Add 'modify-inputs'., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 09/11] utils: 'edit-expression' modifies the file only if necessary., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 06/11] gnu: Change inputs of core packages to plain lists., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 08/11] utils: Add 'go-to-location' with source location caching., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 10/11] utils: 'edit-expression' copies part of the original source map., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 11/11] Add 'guix style'., Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 00/11] Removing input labels from package definitions, Ludovic Courtès, 2021/06/22
- [bug#49169] [PATCH 00/11] Removing input labels from package definitions,
Ludovic Courtès <=
- [bug#49169] [PATCH v2 00/16] Removing input labels from package definitions, Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 01/16] records: Support field sanitizers., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 03/16] lint: Add 'input-labels' checker., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 02/16] packages: Allow inputs to be plain package lists., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 04/16] packages: Add 'lookup-package-input' & co., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 05/16] packages: Add 'modify-inputs'., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 07/16] utils: 'edit-expression' no longer leaks file ports., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 06/16] gnu: Change inputs of core packages to plain lists., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 10/16] utils: 'edit-expression' copies part of the original source map., Ludovic Courtès, 2021/06/30
- [bug#49169] [PATCH v2 12/16] packages: 'hidden-package' inherits the original package location., Ludovic Courtès, 2021/06/30