From: ludo@gnu.org (Ludovic Courtès)
To: Ricardo Wurmus <rekado@elephly.net>
Cc: 27271@debbugs.gnu.org
Subject: [bug#27271] [PATCH 0/4] Catch collisions at profile creation time
Date: Sat, 17 Jun 2017 14:30:03 +0200 [thread overview]
Message-ID: <87poe2bxv8.fsf@gnu.org> (raw)
In-Reply-To: <87shiz6k03.fsf@elephly.net> (Ricardo Wurmus's message of "Sat, 17 Jun 2017 11:28:28 +0200")
[-- Attachment #1: Type: text/plain, Size: 1725 bytes --]
Hi,
Ricardo Wurmus <rekado@elephly.net> skribis:
> I just tried it and I didn’t work the way I thought it would.
>
> Here’s what I did:
>
> # install old numpy
> guix package -p /tmp/test -i /gnu/store/s02iw98l234ngkcnxqi7jz54vqqgx6hj-python2-numpy-1.10.4
>
> # install a package depending on a later version of numpy
> guix package -p /tmp/test -i bamm
>
> It built bamm and then proceeded to build a profile, while spitting out
> hundreds of lines about conflicts between python2-numpy-1.10.4 and
> python2-numpy-1.12.0.
Oops, good catch. This is fixed with the attached patch. Now I get:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix package -p /tmp/test -i bamm
substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
The following package will be installed:
bamm 1.7.3 /gnu/store/lcb2s2x3s50gmf24asl2mvv34jhx8n1x-bamm-1.7.3
guix package: error: profile contains conflicting entries for python2-numpy:out
guix package: error: first entry: python2-numpy@1.12.0:out /gnu/store/pzf5yszv5dlzmk71w7srdi2qdqh2j40a-python2-numpy-1.12.0
guix package: error: ... propagated from bamm@1.7.3
guix package: error: second entry: python2-numpy@1.10.4:out /gnu/store/pykndifwj34mc1h7m78d1b6c03gb5zq1-python2-numpy-1.10.4
--8<---------------cut here---------------end--------------->8---
I’ll add a test case for this.
> I also wonder if we should add a way to force Guix to build the profile
> despite the detected conflict.
Good question. I wouldn’t be hard to do, but maybe we can wait until
there’s demand so we can analyze the use case better?
Thanks for testing!
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1126 bytes --]
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 980229ca7..52a8bd2ea 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -157,6 +157,19 @@
;; Convenient alias, to avoid name clashes.
(define make-manifest manifest)
+(define (manifest-transitive-entries manifest)
+ "Return the entries of MANIFEST along with their propagated inputs,
+recursively."
+ (let loop ((entries (manifest-entries manifest))
+ (result '()))
+ (match entries
+ (()
+ (reverse result))
+ ((head . tail)
+ (loop (append (manifest-entry-dependencies head)
+ tail)
+ (cons head result))))))
+
(define-record-type* <manifest-entry> manifest-entry
make-manifest-entry
manifest-entry?
@@ -250,7 +263,7 @@ file name."
(#f ;no conflict
(return result))))
#t
- (manifest-entries manifest))))
+ (manifest-transitive-entries manifest))))
(define* (package->manifest-entry package #:optional (output "out")
#:key (parent (delay #f)))
next prev parent reply other threads:[~2017-06-17 12:31 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-07 9:22 bug#27271: [PATCH 0/4] Catch collisions at profile creation time Ludovic Courtès
2017-06-07 9:25 ` bug#27271: [PATCH 1/4] profiles: Represent propagated inputs as manifest entries Ludovic Courtès
2017-06-07 9:25 ` bug#27271: [PATCH 2/4] profiles: Manifest entries keep a reference to their parent entry Ludovic Courtès
2017-06-07 9:25 ` bug#27271: [PATCH 3/4] guix package: Always upgrade packages that have propagated inputs Ludovic Courtès
2017-06-07 9:25 ` bug#27271: [PATCH 4/4] profiles: Catch and report collisions in the profile Ludovic Courtès
2017-06-09 1:42 ` bug#27271: [PATCH 0/4] Catch collisions at profile creation time Ricardo Wurmus
2017-06-09 9:41 ` Ludovic Courtès
2017-06-09 20:32 ` Marius Bakke
2017-06-10 13:39 ` bug#27271: Avoiding ‘propagated-inputs’ for Python dependencies Ludovic Courtès
2017-06-17 8:40 ` [bug#27271] " Hartmut Goebel
2017-06-17 9:00 ` Hartmut Goebel
2017-06-17 9:28 ` [bug#27271] [PATCH 0/4] Catch collisions at profile creation time Ricardo Wurmus
2017-06-17 12:30 ` Ludovic Courtès [this message]
2017-06-21 9:07 ` bug#27271: " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87poe2bxv8.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=27271@debbugs.gnu.org \
--cc=rekado@elephly.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.