unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
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)))

  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

  List information: https://guix.gnu.org/

* 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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).