guix-play/guix
Ludovic Courtès 67effc1560
grafts: Fix corner case involving multiple-output derivations.
Fixes a bug that would occur with references to two outputs of the same
derivation, with one of them referring to the other one.

For example, the references of libreoffice include both mariadb:dev and
mariadb:lib; additionally, mariadb:dev refers to mariadb:lib.  In this
case, the glibc graft would not be applied on one of the mariadb paths,
and both the grafted and ungrafted glibc would end up in the closure of
libreoffice.

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

* guix/grafts.scm (non-self-references): Simplify and include references
to outputs of DRV other than OUTPUTS.
(reference-origins): Simplify and possibly return outputs of DRV itself.
(cumulative-grafts)[graft-origin?]: Add OUTPUT parameter and honor it.
[dependency-grafts]: Adjust accordingly.
* tests/grafts.scm ("graft-derivation, multiple outputs need to be replaced"):
New test.

Change-Id: Iac2005024ab7049037537b3af55298696ec90e3c
2023-10-28 00:17:23 +02:00
..
build syscalls: Consistently use existing linux? definition. 2023-10-23 11:58:16 +02:00
build-system build-system/dub: Remove dependency on (guix build syscalls). 2023-10-23 11:56:54 +02:00
import guix: import: Don't import yanked rust crates. 2023-10-22 16:46:39 +03:00
platforms platform: Add powerpc64-linux. 2023-08-12 23:02:31 +02:00
scripts locate: Do not return the system database when it is too old. 2023-10-18 18:21:04 +02: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 base16: Reduce GC pressure in bytevector->base16-string. 2021-09-10 17:30:54 +02:00
base32.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
base64.scm
build-system.scm packages: Add 'package-with-c-toolchain'. 2020-10-12 18:23:47 +02:00
bzr-download.scm gnu: bazaar: Obsolete with breezy. 2022-05-31 14:54:02 -04:00
cache.scm cache: 'file-expiration-time' uses 'lstat', not 'stat'. 2023-07-11 15:47:56 +02:00
channels.scm channels: Raise an error if dependency's introduction is malformed 2023-06-04 11:30:18 +02:00
ci.scm ci: Reify the timestamps of evaluations. 2023-06-02 15:47:27 +02:00
colors.scm colors: Add 'colorize-full-matches'. 2022-04-19 18:07:49 +02:00
combinators.scm combinators: Add 'define-compile-time-procedure'. 2021-12-20 16:21:40 +01:00
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 cve: Gracefully handle bogus CVE entries. 2021-04-25 14:35:42 +02:00
cvs-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
d3.v3.js graph: Install JavaScript files. 2021-01-04 23:54:16 +01:00
deprecation.scm guix: Add define-deprecated/public-alias. 2022-04-12 20:32:32 +02:00
derivations.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
describe.scm describe: 'current-channel-entries' ignores non-channel profile entries. 2021-06-13 23:57:44 +02:00
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 docker: Enable arm64 docker image building for 'guix pack'. 2021-11-23 10:24:27 +01:00
download.scm gnu-maintenance: Allow mirror URLs to fallback to the generic HTML updater. 2023-08-26 11:38:56 -04: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: computed-file: Do not honor %guile-for-build. 2023-02-27 15:54:09 +01:00
git-authenticate.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
git-download.scm git-download: Use “builtin:git-download” when available. 2023-09-26 17:36:58 +02:00
git.scm git: Restore 'false-if-git-not-found' in 'reference-available?'. 2023-09-25 12:00:18 +02:00
glob.scm guix: Add globstar support. 2020-12-09 22:25:17 +01:00
gnu-maintenance.scm gnu-maintenance: Support URI list of mixed mirrors, HTTP URLs. 2023-09-11 23:39:13 -04:00
gnupg.scm gnupg: Honor GnuPG's configuration for the key server. 2021-11-18 14:41:53 -05:00
grafts.scm grafts: Fix corner case involving multiple-output derivations. 2023-10-28 00:17:23 +02:00
graph.js graph: Install JavaScript files. 2021-01-04 23:54:16 +01:00
graph.scm graph: Add GraphML backend. 2023-08-25 14:24:43 +02:00
hash.scm guix hash: Extract file hashing procedures. 2022-01-06 16:27:30 +01:00
hg-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
http-client.scm http-client: 'http-fetch/cached' converts strings to URIs. 2022-05-22 01:07:52 +02:00
i18n.scm ui: Introduce (guix i18n). 2017-11-08 22:31:58 +01:00
inferior.scm scripts: time-machine: Error when attempting to visit too old commits. 2023-08-16 21:34:13 -04:00
ipfs.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
least-authority.scm least-authority: Fix typo. 2022-06-10 23:52:34 -04:00
licenses.scm licenses: Add Arphic-1999 (Aprhic Public License). 2023-08-01 19:40:19 +08:00
lint.scm lint: Check that (cc-for-target) and friends are used. 2023-09-08 19:12:15 +02:00
man-db.scm guix: Index the man-db database via man pages names. 2022-03-02 00:00:55 -05:00
memoization.scm
modules.scm modules: Recognize #:declarative?. 2022-12-02 23:20:54 +01:00
monad-repl.scm monad-repl: Add "build", "lower", and "verbosity" commands. 2022-07-15 17:36:57 +02:00
monads.scm monads: Add 'mparameterize'. 2022-07-10 23:57:14 +02:00
nar.scm database: Remove #:deduplicate? from 'register-items'. 2020-12-15 17:32:11 +01:00
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 openpgp: Remove now unnecessary procedure. 2021-03-02 23:12:37 +01:00
packages.scm guix: packages: Support package/inherit by package-field-location. 2023-09-06 16:41:06 -04:00
pki.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
platform.scm guix: platform: Use srfi-34's raise instead of raise-exception. 2023-07-13 19:00:14 +02:00
profiles.scm guix: profiles: Detect TeX Live packages propagated from non-TeX Live inputs. 2023-08-24 16:03:18 +02:00
profiling.scm
progress.scm guix: Show better progress bars. 2023-02-19 10:09:15 +01:00
quirks.scm quirks: Adjust patch to allow traveling back to Dec. 2018. 2020-07-24 18:56:25 +02:00
read-print.scm read-print: Be more mindful of horizontal space in packages. 2023-09-24 02:00:00 +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 repl: Fix exception handling for interpreted code. 2021-01-21 00:14:38 +01:00
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 build: Add dependency on Git. 2023-09-26 17:36:58 +02:00
serialization.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
sets.scm Add (guix sets). 2015-01-11 23:50:01 +01:00
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 guix: Strip #:use-module lists. 2023-03-13 15:08:33 +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 swh: Allows token from Software Heritage authentication service. 2021-10-15 23:16:28 +02:00
tests.scm tests: Set a hard build timeout. 2022-02-14 11:23:07 +01:00
transformations.scm transformations: tuned-package: Use target on cross-compile. 2023-09-17 15:31:03 +02:00
ui.scm ui: Handle EPIPE errors when displaying Guix version. 2023-10-17 14:51:53 +02:00
upstream.scm upstream: Compare symbols to symbols. 2023-09-13 22:17:21 +02:00
utils.scm utils: Add 'strip-for-target'. 2023-10-26 15:21:35 +02:00
workers.scm