guix-play/guix
Ludovic Courtès 323b58ac18
channels: ‘latest-channel-instances’ traverses user-provided channels first.
Previously, ‘latest-channel-instances’ would perform a depth-first
traversal of channels.  Since dependencies specified in ‘.guix-channel’
are usually less specific that those provided by the user, this would
lead to the use of instances corresponding to those less specific specs,
which in turn might declare dependencies that do not exist for the more
specific instances.

This commit changes ‘latest-channel-instances’ to perform a
breadth-first traversal, thereby giving user-supplied channels higher
precedence over dependencies found via ‘.guix-channel’.

Fixes <https://issues.guix.gnu.org/68822>.

* guix/channels.scm (latest-channel-instances)[ignore?]: Remove.
[instance-name, same-named?, more-specific?]: New procedures.
Rewrite as a breadth-first traversal using a regular loop.
* tests/channels.scm ("latest-channel-instances reads dependencies from most-specific instance"):
New test.

Change-Id: Iba518145cfd209f04293a56246dbfee3b714650b
2024-01-31 09:07:25 +01:00
..
build build-system/zig: Add cross-compilation support. 2024-01-07 16:56:00 +01:00
build-system build: perl: Accept Gexps for #:module-build-flags. 2024-01-18 22:10:58 -05:00
import import/cran: Set HOME when ExperimentHub is among the inputs. 2024-01-22 13:54:44 +01:00
platforms guix: Add ork1-elf platform. 2024-01-22 11:26:56 +01:00
scripts scripts: describe: Support 'channels-sans-intro' format for local checkouts. 2024-01-24 23:28:38 +01:00
store store: Tolerate non-existent GC root directories. 2023-06-18 23:36:25 +02:00
tests tests: http: Allow responses to specify a path. 2023-05-31 23:25:24 +02:00
android-repo-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
avahi.scm avahi: Fix exception when #:timeout is #f. 2023-07-11 15:47:56 +02:00
base16.scm
base32.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
base64.scm
build-system.scm
bzr-download.scm
cache.scm cache: 'file-expiration-time' uses 'lstat', not 'stat'. 2023-07-11 15:47:56 +02:00
channels.scm channels: ‘latest-channel-instances’ traverses user-provided channels first. 2024-01-31 09:07:25 +01:00
ci.scm ci: Reify the timestamps of evaluations. 2023-06-02 15:47:27 +02:00
colors.scm
combinators.scm
config.scm.in build: Add dependency on Git. 2023-09-26 17:36:58 +02:00
cpio.scm cpio: Properly handle Unicode characters in file names. 2023-02-25 14:50:33 -05:00
cpu.scm guix: cpu: Add gcc-architecture->micro-architecture-level mapping. 2023-07-12 16:48:28 +03:00
cve.scm
cvs-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
d3.v3.js
deprecation.scm deprecation: Fix docstring typo. 2023-12-22 17:47:15 +01:00
derivations.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
describe.scm
diagnostics.scm diagnostics: Factorize 'absolute-location'. 2023-05-31 23:25:25 +02:00
discovery.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
docker.scm guix: docker: Build layered images. 2024-01-08 21:04:44 +03:00
download.scm download: Update Apache mirror list. 2023-12-17 01:00:00 +01:00
elf.scm
ftp-client.scm ftp-client: 'connect*' retries until the timeout has expired. 2023-05-04 13:08:59 +02:00
gexp.scm gexp: #:references-graphs accepts and honors <gexp-input> records. 2023-12-22 00:31:40 +01:00
git-authenticate.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
git-download.scm git-download: Add support for Git Large File Storage (LFS). 2023-11-07 12:33:26 -05:00
git.scm git: Shell out to ‘git gc’ when necessary. 2023-11-22 16:51:47 +01:00
glob.scm
gnu-maintenance.scm gnu-maintenance: Support URI list of mixed mirrors, HTTP URLs. 2023-09-11 23:39:13 -04:00
gnupg.scm
grafts.scm grafts: Use the right locale package. 2023-12-03 23:55:08 +01:00
graph.js
graph.scm graph: Add GraphML backend. 2023-08-25 14:24:43 +02:00
hash.scm
hg-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
http-client.scm
i18n.scm
inferior.scm time-machine: Make target commit check cheaper. 2023-11-05 23:23:23 +01:00
ipfs.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
least-authority.scm least-authority: Add support for changing UIDs/GIDs before exec. 2023-12-22 00:31:41 +01:00
licenses.scm licenses: Add Arphic-1999 (Aprhic Public License). 2023-08-01 19:40:19 +08:00
lint.scm lint: Speed up the formatting linter. 2023-11-05 17:51:38 +00:00
man-db.scm
memoization.scm
modules.scm
monad-repl.scm monad-repl: Add REPL commands to inspect package arguments. 2023-12-04 22:26:38 +01:00
monads.scm
nar.scm
narinfo.scm substitute: If a server's nar URL is 404, try the next one(s). 2023-05-30 00:15:29 +02:00
openpgp.scm
packages.scm packages: Honor target system for the inputs to ‘patch-and-repack’. 2023-12-03 23:55:08 +01:00
pki.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
platform.scm guix: platform: Add platform-rust-target. 2023-12-11 13:50:48 +02:00
profiles.scm gnu: Use ‘libc-utf8-locales-for-target’. 2023-12-02 12:25:45 +01:00
profiling.scm
progress.scm tests: Import (guix build syscalls) when (guix build store-copy) is used. 2023-11-25 16:29:25 +01:00
quirks.scm
read-print.scm guix: import: Optionally import necessary yanked crates. 2024-01-09 09:38:38 +02:00
records.scm records: Remove "guix" from error message. 2023-06-09 14:19:14 +02:00
remote.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
repl.scm
rpm.scm pack: Register extra /usr/share sub-directories as FHS. 2023-02-22 10:41:35 -05:00
scripts.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
search-paths.scm search-paths: Add GCC search paths. 2023-10-04 23:30:41 -04:00
self.scm gnu: Use ‘libc-utf8-locales-for-target’. 2023-12-02 12:25:45 +01:00
serialization.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
sets.scm
ssh.scm ssh: Also print the user when authentication fails. 2023-08-22 11:17:53 +02:00
status.scm status: Guard against a numerical overflow condition. 2023-04-12 08:29:37 -04:00
store.scm daemon: Implement ‘substitute-urls’ RPC. 2023-12-11 23:18:53 +01:00
substitutes.scm substitute: Gracefully handle TLS termination while fetching narinfos. 2023-03-27 18:48:51 +02:00
svn-download.scm svn-download: Handle the single file case when downloading a nar. 2023-07-18 18:16:55 +02:00
swh.scm
tests.scm
transformations.scm transformations: Add support for zig. 2023-12-03 09:58:34 +02:00
ui.scm ui: It’s 2024 now! 2024-01-05 17:27:21 +01:00
upstream.scm upstream: Compare symbols to symbols. 2023-09-13 22:17:21 +02:00
utils.scm gnu: Add target-x32?. 2024-01-04 21:48:17 +02:00
workers.scm