* Ready for Guile 2.2! @ 2017-03-15 16:13 Ludovic Courtès 2017-03-15 20:33 ` Pjotr Prins ` (3 more replies) 0 siblings, 4 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-03-15 16:13 UTC (permalink / raw) To: guix-devel Hello Guix! Exciting times! As of commit 608e42e7c92114497e7908980424288079acee1e, Guix builds with Guile 2.2 (to be released sometime within the next 24 hours) and the whole test suite passes. All the dependencies of Guix except Guile-SSH (optional; use for offloading and for ‘guix copy’) are already compatible with Guile 2.2. Guile 2.2 comes with a new compiler and a new virtual machine. As a result, one of the main user-visible changes is that things are faster. Building Guix with 2.2 is the first migration step. The next steps are: 1. Renaming ‘guile-next’ to ‘guile’ and making 2.2 the default. Some packages (notably Guile-SSH, GDB, LilyPond) don’t work with 2.2 yet so for these we’ll change ‘guile’ to ‘guile-2.0’. This can start as soon as this week. :-) We’ll replace ‘package-for-guile-2.2’ with ‘package-for-guile-2.0’, though I don’t think it’ll make sense to keep both a 2.0 and a 2.2 version of all the packages. 2. Use 2.2 to build derivation, as the default #:guile-for-build (aka. ‘default-guile’.) This can be done on the next ‘core-updates’ cycle and if everything goes well, it will be completely transparent. Happy hacking! Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-03-15 16:13 Ready for Guile 2.2! Ludovic Courtès @ 2017-03-15 20:33 ` Pjotr Prins 2017-03-15 20:41 ` Ludovic Courtès ` (2 subsequent siblings) 3 siblings, 0 replies; 57+ messages in thread From: Pjotr Prins @ 2017-03-15 20:33 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On Wed, Mar 15, 2017 at 05:13:01PM +0100, Ludovic Courtès wrote: > Hello Guix! > > Exciting times! > > As of commit 608e42e7c92114497e7908980424288079acee1e, Guix builds with > Guile 2.2 (to be released sometime within the next 24 hours) and the > whole test suite passes. Very cool. Hats off to you and Andy and others to make it work! Pj. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-03-15 16:13 Ready for Guile 2.2! Ludovic Courtès 2017-03-15 20:33 ` Pjotr Prins @ 2017-03-15 20:41 ` Ludovic Courtès 2017-04-20 12:35 ` Ludovic Courtès 2017-03-31 16:34 ` Ludovic Courtès 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès 3 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-03-15 20:41 UTC (permalink / raw) To: guix-devel ludo@gnu.org (Ludovic Courtès) skribis: > Guile 2.2 comes with a new compiler and a new virtual machine. As a > result, one of the main user-visible changes is that things are faster. An unscientific illustration of this point: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use(guix scripts build) scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") The following derivations would be built: [...] ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. scheme@(guile-user)> (version) $1 = "2.0.13" --8<---------------cut here---------------end--------------->8--- Compared to: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") [...] ;; 2.224821s real time, 2.347463s run time. 0.374545s spent in GC. --8<---------------cut here---------------end--------------->8--- Roughly an 18% speedup here. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-03-15 20:41 ` Ludovic Courtès @ 2017-04-20 12:35 ` Ludovic Courtès 2017-04-20 13:10 ` Andy Wingo 0 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-04-20 12:35 UTC (permalink / raw) To: guix-devel Hello Guix! ludo@gnu.org (Ludovic Courtès) skribis: > An unscientific illustration of this point: > > scheme@(guile-user)> ,use(guix scripts build) > scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") > The following derivations would be built: > > [...] > > ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. > scheme@(guile-user)> (version) > $1 = "2.0.13" > > > Compared to: > > scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") > > [...] > > ;; 2.224821s real time, 2.347463s run time. 0.374545s spent in GC. > > Roughly an 18% speedup here. In Guile 2.2.1 Andy fixed an optimization of ‘thunk?’, which is called a lot when we load packages (via ‘make-promise’, for record fields marked as ‘delayed’). Now we get… drum roll… --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use(guix scripts build) scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") [...] ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. scheme@(guile-user)> (version) $1 = "2.2.1" --8<---------------cut here---------------end--------------->8--- That’s a 33% speedup compared to 2.0. Andy super-hero! Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-20 12:35 ` Ludovic Courtès @ 2017-04-20 13:10 ` Andy Wingo 2017-04-20 15:21 ` Maxim Cournoyer 2017-04-21 21:14 ` Ludovic Courtès 0 siblings, 2 replies; 57+ messages in thread From: Andy Wingo @ 2017-04-20 13:10 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On Thu 20 Apr 2017 14:35, ludo@gnu.org (Ludovic Courtès) writes: > ludo@gnu.org (Ludovic Courtès) skribis: > >> ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. >> scheme@(guile-user)> (version) >> $1 = "2.0.13" >> > scheme@(guile-user)> ,use(guix scripts build) > scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") > > [...] > > ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. > scheme@(guile-user)> (version) > $1 = "2.2.1" > > That’s a 33% speedup compared to 2.0. That is a 50% speedup compared to 2.0 :) If we consider its speed as being how many times you could do this per second, then 2.0 speed is 1/2.72, and 2.2.1 speed is 1/1.82. Speed ratio is then 2.72/1.82=1.4945. So 2.2.1 is 1.5x the speed of 2.0, or 50% faster :) Andy, who is not looking for praise, but who likes perf numbers :) ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-20 13:10 ` Andy Wingo @ 2017-04-20 15:21 ` Maxim Cournoyer 2017-04-21 16:05 ` Joshua Branson 2017-04-21 21:03 ` Ludovic Courtès 2017-04-21 21:14 ` Ludovic Courtès 1 sibling, 2 replies; 57+ messages in thread From: Maxim Cournoyer @ 2017-04-20 15:21 UTC (permalink / raw) To: Andy Wingo; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1164 bytes --] Andy Wingo <wingo@igalia.com> writes: > On Thu 20 Apr 2017 14:35, ludo@gnu.org (Ludovic Courtès) writes: > >> ludo@gnu.org (Ludovic Courtès) skribis: >> >>> ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. >>> scheme@(guile-user)> (version) >>> $1 = "2.0.13" >>> >> scheme@(guile-user)> ,use(guix scripts build) >> scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") >> >> [...] >> >> ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. >> scheme@(guile-user)> (version) >> $1 = "2.2.1" >> >> That’s a 33% speedup compared to 2.0. > > That is a 50% speedup compared to 2.0 :) If we consider its speed as > being how many times you could do this per second, then 2.0 speed is > 1/2.72, and 2.2.1 speed is 1/1.82. Speed ratio is then > 2.72/1.82=1.4945. So 2.2.1 is 1.5x the speed of 2.0, or 50% faster :) > > Andy, who is not looking for praise, but who likes perf numbers :) Impressive :). Is there a blog post/article/information somewhere about what went in Guile to make it that faster? Thank you for your work! Maxim [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-20 15:21 ` Maxim Cournoyer @ 2017-04-21 16:05 ` Joshua Branson 2017-04-22 22:20 ` Ludovic Courtès 2017-04-21 21:03 ` Ludovic Courtès 1 sibling, 1 reply; 57+ messages in thread From: Joshua Branson @ 2017-04-21 16:05 UTC (permalink / raw) To: guix-devel@gnu.org So are you building (aka compiling) libreoffice, certbot, and xmonad in essentially 2 seconds? That sounds a little too fast... On 04/20/2017 11:21 AM, Maxim Cournoyer wrote: > Andy Wingo <wingo@igalia.com> writes: > >> On Thu 20 Apr 2017 14:35, ludo@gnu.org (Ludovic Courtès) writes: >> >>> ludo@gnu.org (Ludovic Courtès) skribis: >>> >>>> ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. >>>> scheme@(guile-user)> (version) >>>> $1 = "2.0.13" >>>> >>> scheme@(guile-user)> ,use(guix scripts build) >>> scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") >>> >>> [...] >>> >>> ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. >>> scheme@(guile-user)> (version) >>> $1 = "2.2.1" >>> >>> That’s a 33% speedup compared to 2.0. >> That is a 50% speedup compared to 2.0 :) If we consider its speed as >> being how many times you could do this per second, then 2.0 speed is >> 1/2.72, and 2.2.1 speed is 1/1.82. Speed ratio is then >> 2.72/1.82=1.4945. So 2.2.1 is 1.5x the speed of 2.0, or 50% faster :) >> >> Andy, who is not looking for praise, but who likes perf numbers :) > Impressive :). Is there a blog post/article/information somewhere about > what went in Guile to make it that faster? > > Thank you for your work! > > Maxim ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-21 16:05 ` Joshua Branson @ 2017-04-22 22:20 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-04-22 22:20 UTC (permalink / raw) To: Joshua Branson; +Cc: guix-devel@gnu.org Joshua Branson <bransoj@hotmail.com> skribis: > So are you building (aka compiling) libreoffice, certbot, and xmonad in > essentially 2 seconds? That sounds a little too fast... No no, they were already in /gnu/store. What this test measures is the time it takes to compute the derivations (those /gnu/store/….drv files.) Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-20 15:21 ` Maxim Cournoyer 2017-04-21 16:05 ` Joshua Branson @ 2017-04-21 21:03 ` Ludovic Courtès 2017-04-24 1:31 ` Maxim Cournoyer 1 sibling, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-04-21 21:03 UTC (permalink / raw) To: Maxim Cournoyer; +Cc: guix-devel Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis: > Andy Wingo <wingo@igalia.com> writes: > >> On Thu 20 Apr 2017 14:35, ludo@gnu.org (Ludovic Courtès) writes: >> >>> ludo@gnu.org (Ludovic Courtès) skribis: >>> >>>> ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. >>>> scheme@(guile-user)> (version) >>>> $1 = "2.0.13" >>>> >>> scheme@(guile-user)> ,use(guix scripts build) >>> scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") >>> >>> [...] >>> >>> ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. >>> scheme@(guile-user)> (version) >>> $1 = "2.2.1" >>> >>> That’s a 33% speedup compared to 2.0. >> >> That is a 50% speedup compared to 2.0 :) If we consider its speed as >> being how many times you could do this per second, then 2.0 speed is >> 1/2.72, and 2.2.1 speed is 1/1.82. Speed ratio is then >> 2.72/1.82=1.4945. So 2.2.1 is 1.5x the speed of 2.0, or 50% faster :) >> >> Andy, who is not looking for praise, but who likes perf numbers :) > > Impressive :). Is there a blog post/article/information somewhere about > what went in Guile to make it that faster? I highly recommend posts from the last couple of years (or more!) at <http://wingolog.org>. :-) <http://wingolog.org/archives/2017/03/15/guile-2-2-omg> has pointers to the most important bits. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-21 21:03 ` Ludovic Courtès @ 2017-04-24 1:31 ` Maxim Cournoyer 0 siblings, 0 replies; 57+ messages in thread From: Maxim Cournoyer @ 2017-04-24 1:31 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 526 bytes --] Hi Ludo, ludo@gnu.org (Ludovic Courtès) writes: > Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis: > [...] >> >> Impressive :). Is there a blog post/article/information somewhere about >> what went in Guile to make it that faster? > > I highly recommend posts from the last couple of years (or more!) at > <http://wingolog.org>. :-) > > <http://wingolog.org/archives/2017/03/15/guile-2-2-omg> has pointers to > the most important bits. > > Ludo’. Thanks for the pointers. Bookmarked :) Maxim [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-04-20 13:10 ` Andy Wingo 2017-04-20 15:21 ` Maxim Cournoyer @ 2017-04-21 21:14 ` Ludovic Courtès 1 sibling, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-04-21 21:14 UTC (permalink / raw) To: Andy Wingo; +Cc: guix-devel Andy Wingo <wingo@igalia.com> skribis: > On Thu 20 Apr 2017 14:35, ludo@gnu.org (Ludovic Courtès) writes: > >> ludo@gnu.org (Ludovic Courtès) skribis: >> >>> ;; 2.724686s real time, 3.117062s run time. 0.880827s spent in GC. >>> scheme@(guile-user)> (version) >>> $1 = "2.0.13" >>> >> scheme@(guile-user)> ,use(guix scripts build) >> scheme@(guile-user)> ,time (guix-build "libreoffice" "certbot" "xmonad" "-n" "--no-substitutes" "--no-build-hook") >> >> [...] >> >> ;; 1.826528s real time, 1.994426s run time. 0.382750s spent in GC. >> scheme@(guile-user)> (version) >> $1 = "2.2.1" >> >> That’s a 33% speedup compared to 2.0. > > That is a 50% speedup compared to 2.0 :) If we consider its speed as > being how many times you could do this per second, then 2.0 speed is > 1/2.72, and 2.2.1 speed is 1/1.82. Speed ratio is then > 2.72/1.82=1.4945. So 2.2.1 is 1.5x the speed of 2.0, or 50% faster :) Right! What I meant to say is that: 2.72 - 0.33×2.72 = 1.82 But maybe that’s not the preferred way to present things? Anyway, it’s _way faster_. :-) Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Ready for Guile 2.2! 2017-03-15 16:13 Ready for Guile 2.2! Ludovic Courtès 2017-03-15 20:33 ` Pjotr Prins 2017-03-15 20:41 ` Ludovic Courtès @ 2017-03-31 16:34 ` Ludovic Courtès 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès 3 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-03-31 16:34 UTC (permalink / raw) To: guix-devel Hello! ludo@gnu.org (Ludovic Courtès) skribis: > Building Guix with 2.2 is the first migration step. The next steps are: > > 1. Renaming ‘guile-next’ to ‘guile’ and making 2.2 the default. Some > packages (notably Guile-SSH, GDB, LilyPond) don’t work with 2.2 yet > so for these we’ll change ‘guile’ to ‘guile-2.0’. This can start > as soon as this week. :-) > > We’ll replace ‘package-for-guile-2.2’ with ‘package-for-guile-2.0’, > though I don’t think it’ll make sense to keep both a 2.0 and a 2.2 > version of all the packages. This first step has started: we have a bunch of Guile packages that are 2.2 by default, sometimes with an additional 2.0 variant. I think we should keep incrementally moving things to 2.2-by-default, along the lines of commit 7c86c0310939619cb37d4706ca3446ed342a2444 and the previous ones. Help welcome! :-) Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* ‘guix pull’ vs. transition to Guile 2.2 2017-03-15 16:13 Ready for Guile 2.2! Ludovic Courtès ` (2 preceding siblings ...) 2017-03-31 16:34 ` Ludovic Courtès @ 2017-04-22 22:34 ` Ludovic Courtès 2017-04-23 14:09 ` Jan Nieuwenhuizen ` (2 more replies) 3 siblings, 3 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-04-22 22:34 UTC (permalink / raw) To: guix-devel [-- Attachment #1: Type: text/plain, Size: 1930 bytes --] Hello Guix! ludo@gnu.org (Ludovic Courtès) skribis: > As of commit 608e42e7c92114497e7908980424288079acee1e, Guix builds with > Guile 2.2 (to be released sometime within the next 24 hours) and the > whole test suite passes. > > All the dependencies of Guix except Guile-SSH (optional; use for > offloading and for ‘guix copy’) are already compatible with Guile 2.2. With the attached patch, the ‘guix’ package is built against Guile 2.2. I’m running it on my GuixSD machine, and it works like a charm! There’s a problem though, called “guix pull”. ~/.config/guix/latest currently contains 2.0 .go files. Thus after reconfiguring GuixSD to use Guix-for-2.2, running ‘guix’ typically gives loads of warnings like: ;;; WARNING: loading compiled file /home/ludo/.config/guix/latest/guix/derivations.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory The fix is for ‘guix pull’ to build with Guile 2.2 when that’s what we’re running. For that, build-self.scm must be sure it can get the ‘guile2.2-ssh’ package when we’re on 2.2, or it will fail to compile the new Guix. However, ‘guile2.2-ssh’ appeared a day ago, so it’s missing from most installations… In short, ‘guix pull’ is broken in a way that may practically prevent it from handling the 2.0-to-2.2 transition. The risk is that ‘guix pull’ will fail to upgrade, preventing users from upgrading Guix altogether. To work around that, people will have to use a Git checkout of Guix. Of course that’s what many of us already do, but still. Maybe the upcoming release is a good time to make that transition: at least people installing GuixSD or Guix from that release will already be on 2.2 and won’t have problems from there on. Thoughts? Ideas? We all know it, but it’s really really time to fix ‘guix pull’… Ludo’. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: the patch --] [-- Type: text/x-patch, Size: 1849 bytes --] From e7577d6e2499596b2d802f1a5be1f229ce2ab67f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org> Date: Sat, 22 Apr 2017 15:13:36 +0200 Subject: [PATCH 1/3] gnu: guix: Build with Guile 2.2. * gnu/packages/package-management.scm (guix-devel)[inputs, propagated-inputs]: New fields. --- gnu/packages/package-management.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 952c268b0..bc2c1e0d3 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -52,6 +52,7 @@ #:use-module (gnu packages tls) #:use-module (gnu packages ssh) #:use-module (gnu packages vim) + #:use-module (srfi srfi-1) #:use-module (ice-9 match)) (define (boot-guile-uri arch) @@ -69,6 +70,8 @@ "/20131110/guile-2.0.9.tar.xz")))) (define-public guix-0.12.0 + ;; TODO: On the next release, move the Guile 2.2 inputs from 'guix-devel' + ;; to here. (package (name "guix") (version "0.12.0") @@ -238,6 +241,17 @@ the Nix package manager.") (base32 "0p4rh0629j89v4ka5dsp70a1xrfhg7sxjjq54p68vw7x5dkann4a")) (file-name (string-append "guix-" version "-checkout")))) + + ;; Build with Guile 2.2. + ;; TODO: Move to the stable 'guix' package on the next release. + (inputs + `(("guile" ,guile-2.2) + ,@(alist-delete "guile" (package-inputs guix-0.12.0)))) + (propagated-inputs + `(("gnutls" ,gnutls/guile-2.2) ;for 'guix download' & co. + ("guile-json" ,guile2.2-json) + ("guile-ssh" ,guile2.2-ssh))) + (arguments (substitute-keyword-arguments (package-arguments guix-0.12.0) ((#:configure-flags flags) -- 2.12.2 ^ permalink raw reply related [flat|nested] 57+ messages in thread
* Re: ‘guix pull’ vs. transition to Guile 2.2 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès @ 2017-04-23 14:09 ` Jan Nieuwenhuizen 2017-04-27 13:25 ` Ludovic Courtès 2017-05-09 21:22 ` Heads-up: " Ludovic Courtès 2017-05-12 5:41 ` ‘guix pull’ vs. transition to Guile 2.2 Chris Marusich 2 siblings, 1 reply; 57+ messages in thread From: Jan Nieuwenhuizen @ 2017-04-23 14:09 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès writes: > Thoughts? Ideas? Great! With this patch applied to master I get ============================================================================ Testsuite summary for GNU Guix 0.12.0 ============================================================================ # TOTAL: 701 # PASS: 573 # SKIP: 34 # XFAIL: 0 # FAIL: 94 # XPASS: 0 # ERROR: 0 Are you [all] running core-updates? Should I be? Greetings, janneke -- Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.nl ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: ‘guix pull’ vs. transition to Guile 2.2 2017-04-23 14:09 ` Jan Nieuwenhuizen @ 2017-04-27 13:25 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-04-27 13:25 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: guix-devel Jan Nieuwenhuizen <janneke@gnu.org> skribis: > Ludovic Courtès writes: > >> Thoughts? Ideas? > > Great! With this patch applied to master I get > > ============================================================================ > Testsuite summary for GNU Guix 0.12.0 > ============================================================================ > # TOTAL: 701 > # PASS: 573 > # SKIP: 34 > # XFAIL: 0 > # FAIL: 94 > # XPASS: 0 > # ERROR: 0 > > Are you [all] running core-updates? Should I be? ‘core-updates’ is still in its early stages, I bet nobody runs it. :-) I haven’t checked whether I get those test failures though. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Heads-up: transition to Guile 2.2 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès 2017-04-23 14:09 ` Jan Nieuwenhuizen @ 2017-05-09 21:22 ` Ludovic Courtès 2017-05-09 22:26 ` myglc2 2017-05-14 13:50 ` Pjotr Prins 2017-05-12 5:41 ` ‘guix pull’ vs. transition to Guile 2.2 Chris Marusich 2 siblings, 2 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-09 21:22 UTC (permalink / raw) To: guix-devel Hello Guix! ludo@gnu.org (Ludovic Courtès) skribis: > There’s a problem though, called “guix pull”. ~/.config/guix/latest > currently contains 2.0 .go files. Thus after reconfiguring GuixSD to > use Guix-for-2.2, running ‘guix’ typically gives loads of warnings like: > > ;;; WARNING: loading compiled file /home/ludo/.config/guix/latest/guix/derivations.go failed: > ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory With commit 838ba73d6e49bd2b1f2d4ed9329b65cc4e8c1f54, ‘guix pull’ builds with the currently used Guile, be it 2.0 or 2.2. To achieve that, it tries hard to pick 2.0 or 2.2 packages for the dependencies of Guix. If it cannot find a “guile-ssh” package for the Guile being used (for instance, you’re using Guile 2.2 but lacking the “guile-ssh” package built with 2.2), then it simply skips modules that depend on Guile-SSH; they are optional anyway. For Guile-JSON, it just assumes that there is a matching Guile-JSON, which should be the case anyway. As I wrote before, ‘guix pull’ in its current form is pretty fragile; please report any problems you have. In addition, with commit 7561881f2a5d2dc463c24713745eca03e67044bf, the “guix” package is now built with Guile 2.2 instead of 2.0. Thus, next time you update GuixSD, /run/current-system/profile/bin/guix will be using Guile 2.2. At that point, if ~/.config/guix/latest contains .go files for 2.0, you’ll get warnings as shown above, and you’ll have to “guix pull” to get rid of them. At this point, we’re still using Guile 2.0 (1) to build derivations, and (2) in the Shepherd, mcron, and modules imported inside the Shepherd. In ‘core-updates’ we have addressed #1 and we’ll address #2 as well. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-09 21:22 ` Heads-up: " Ludovic Courtès @ 2017-05-09 22:26 ` myglc2 2017-05-10 12:05 ` Ludovic Courtès 2017-05-14 13:50 ` Pjotr Prins 1 sibling, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-09 22:26 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/09/2017 at 23:22 Ludovic Courtès writes: > Hello Guix! > > ludo@gnu.org (Ludovic Courtès) skribis: > >> There’s a problem though, called “guix pull”. ~/.config/guix/latest >> currently contains 2.0 .go files. Thus after reconfiguring GuixSD to >> use Guix-for-2.2, running ‘guix’ typically gives loads of warnings like: >> >> ;;; WARNING: loading compiled file /home/ludo/.config/guix/latest/guix/derivations.go failed: >> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > > With commit 838ba73d6e49bd2b1f2d4ed9329b65cc4e8c1f54, ‘guix pull’ builds > with the currently used Guile, be it 2.0 or 2.2. To achieve that, it > tries hard to pick 2.0 or 2.2 packages for the dependencies of Guix. > > If it cannot find a “guile-ssh” package for the Guile being used (for > instance, you’re using Guile 2.2 but lacking the “guile-ssh” package > built with 2.2), then it simply skips modules that depend on Guile-SSH; > they are optional anyway. For Guile-JSON, it just assumes that there is > a matching Guile-JSON, which should be the case anyway. > > As I wrote before, ‘guix pull’ in its current form is pretty fragile; > please report any problems you have. > > > In addition, with commit 7561881f2a5d2dc463c24713745eca03e67044bf, the > “guix” package is now built with Guile 2.2 instead of 2.0. Thus, next > time you update GuixSD, /run/current-system/profile/bin/guix will be > using Guile 2.2. At that point, if ~/.config/guix/latest contains .go > files for 2.0, you’ll get warnings as shown above, and you’ll have to > “guix pull” to get rid of them. > > > At this point, we’re still using Guile 2.0 (1) to build derivations, and > (2) in the Shepherd, mcron, and modules imported inside the Shepherd. > In ‘core-updates’ we have addressed #1 and we’ll address #2 as well. > > Ludo’. Hi Ludo, this sounds great! I run GuixSD from git checkout this way ... cd ~/src/guix guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ -c 4 git pull make clean-go ./bootstrap ./configure --localstatedir=/var --sysconfdir=/etc make -j 10 check exit sudo guix system build /root/con/55.scm -M 4 -c 4 sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 sudo reboot Should this just work? Or is there something that needs to be done differently for the 2.0 >>> 2.2 change? TIA - George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-09 22:26 ` myglc2 @ 2017-05-10 12:05 ` Ludovic Courtès 2017-05-10 17:11 ` myglc2 0 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-05-10 12:05 UTC (permalink / raw) To: myglc2; +Cc: guix-devel Hi, myglc2 <myglc2@gmail.com> skribis: > I run GuixSD from git checkout this way ... > > cd ~/src/guix > guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ > -c 4 > git pull > make clean-go > ./bootstrap > ./configure --localstatedir=/var --sysconfdir=/etc > make -j 10 check > exit > sudo guix system build /root/con/55.scm -M 4 -c 4 > sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 > sudo reboot > > Should this just work? Or is there something that needs to be done > differently for the 2.0 >>> 2.2 change? That should just work. The only issue you might have is warnings about invalid .go files if ~/.config/guix/latest contains 2.0 .go files and you’re running Guile 2.2. The fix is to run ‘guix pull’. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-10 12:05 ` Ludovic Courtès @ 2017-05-10 17:11 ` myglc2 2017-05-11 0:40 ` myglc2 0 siblings, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-10 17:11 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/10/2017 at 14:05 Ludovic Courtès writes: > Hi, > > myglc2 <myglc2@gmail.com> skribis: > >> I run GuixSD from git checkout this way ... >> >> cd ~/src/guix >> guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ >> -c 4 >> git pull >> make clean-go >> ./bootstrap >> ./configure --localstatedir=/var --sysconfdir=/etc >> make -j 10 check >> exit >> sudo guix system build /root/con/55.scm -M 4 -c 4 >> sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 >> sudo reboot >> >> Should this just work? Or is there something that needs to be done >> differently for the 2.0 >>> 2.2 change? > > That should just work. > > The only issue you might have is warnings about invalid .go files if > ~/.config/guix/latest contains 2.0 .go files and you’re running Guile > 2.2. The fix is to run ‘guix pull’. Thanks, I did that and, as you suggested, I got warnings ... g1@g1 ~/src$ guix package -m g1.scm ;;; WARNING: loading compiled file /home/g1/.config/guix/latest/guix/ui.go failed: ;;; ERROR: In procedure load-thunk-from-memory: not an ELF file ;;; note: source file /home/g1/.config/guix/latest/guix/ui.scm ;;; newer than compiled /gnu/store/d4wwx93gqizx132zjk7h1ir7rzph0pig-guix-0.12.0-10.ba2260d/lib/guile/2.2/site-ccache/guix/ui.go ... but I really didn't want to do a git pull. So I re-built guix. Bottom line: FWIW, I upgraded from 2.0 to 2.2 without 'guix pull' like this way ... cd ~/src/guix guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ -c 4 git pull make clean-go ./bootstrap ./configure --localstatedir=/var --sysconfdir=/etc make -j 10 check exit sudo guix system build /root/con/55.scm -M 4 -c 4 sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 sudo reboot <log in> cd ~/src/guix guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ -c 4 make clean-go ./bootstrap ./configure --localstatedir=/var --sysconfdir=/etc make -j 10 check ;-) George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-10 17:11 ` myglc2 @ 2017-05-11 0:40 ` myglc2 2017-05-11 8:29 ` Ludovic Courtès 0 siblings, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-11 0:40 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/10/2017 at 13:11 myglc2 writes: > On 05/10/2017 at 14:05 Ludovic Courtès writes: > >> Hi, >> >> myglc2 <myglc2@gmail.com> skribis: >> >>> I run GuixSD from git checkout this way ... >>> >>> cd ~/src/guix >>> guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ >>> -c 4 >>> git pull >>> make clean-go >>> ./bootstrap >>> ./configure --localstatedir=/var --sysconfdir=/etc >>> make -j 10 check >>> exit >>> sudo guix system build /root/con/55.scm -M 4 -c 4 >>> sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 >>> sudo reboot >>> >>> Should this just work? Or is there something that needs to be done >>> differently for the 2.0 >>> 2.2 change? >> >> That should just work. >> >> The only issue you might have is warnings about invalid .go files if >> ~/.config/guix/latest contains 2.0 .go files and you’re running Guile >> 2.2. The fix is to run ‘guix pull’. > > Thanks, I did that and, as you suggested, I got warnings ... > > g1@g1 ~/src$ guix package -m g1.scm > ;;; WARNING: loading compiled file /home/g1/.config/guix/latest/guix/ui.go failed: > ;;; ERROR: In procedure load-thunk-from-memory: not an ELF file > ;;; note: source file /home/g1/.config/guix/latest/guix/ui.scm > ;;; newer than compiled /gnu/store/d4wwx93gqizx132zjk7h1ir7rzph0pig-guix-0.12.0-10.ba2260d/lib/guile/2.2/site-ccache/guix/ui.go > > ... but I really didn't want to do a git pull. So I re-built guix. > > Bottom line: FWIW, I upgraded from 2.0 to 2.2 without 'guix pull' like > this way ... > > cd ~/src/guix > guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ > -c 4 > git pull > make clean-go > ./bootstrap > ./configure --localstatedir=/var --sysconfdir=/etc > make -j 10 check > exit > sudo guix system build /root/con/55.scm -M 4 -c 4 > sudo guix system reconfigure /root/con/55.scm -M 4 -c 4 > sudo reboot > <log in> > cd ~/src/guix > guix environment -e "(@ (gnu packages package-management) guix)" -M 4 \ > -c 4 > make clean-go > ./bootstrap > ./configure --localstatedir=/var --sysconfdir=/etc > make -j 10 check Or maybe not. With your recent change, guix says it's 85 days old ... g1@g1 ~/src/guix$ guix package -i icecat guix package: warning: Your Guix installation is 85 days old. guix package: warning: Consider running 'guix pull' followed by 'guix package -u' to get up-to-date packages and security updates. [...] But I just did a git pull ... g1@g1 ~/src/guix$ git -C ~/.config/guix/latest describe v0.12.0-3681-gbc0e6c931 ... and my ~/.config/guix/latest points to it ... g1@g1 ~/src/guix$ stat ~/.config/guix/latest | grep File: File: /home/g1/.config/guix/latest -> /home/g1/src/guix/ ... and I did 'make' and 'git system reconfigure' & reboot so that guix claims it is the latest version ... g1@g1 ~$ guix --version guix (GNU Guix) 0.12.0.3681-bc0e6 So... is some part of my guix 85 days old? Or... there a problem with the new "days old" message? TIA - George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 0:40 ` myglc2 @ 2017-05-11 8:29 ` Ludovic Courtès 2017-05-11 8:50 ` Vincent Legoll 2017-05-11 11:53 ` myglc2 0 siblings, 2 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-11 8:29 UTC (permalink / raw) To: myglc2; +Cc: guix-devel myglc2 <myglc2@gmail.com> skribis: > g1@g1 ~/src/guix$ guix package -i icecat > guix package: warning: Your Guix installation is 85 days old. > guix package: warning: Consider running 'guix pull' followed by > 'guix package -u' to get up-to-date packages and security updates. > [...] > > But I just did a git pull ... > > g1@g1 ~/src/guix$ git -C ~/.config/guix/latest describe > v0.12.0-3681-gbc0e6c931 > > ... and my ~/.config/guix/latest points to it ... This is a special setup. The warning above just stats ~/.config/guix/latest. For someone using ‘guix pull’, it’s a symlink that’s updated each time ‘guix pull’ is invoked. In your case it’s a symlink that’s never updated… but your warranty is void anyway. ;-) Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 8:29 ` Ludovic Courtès @ 2017-05-11 8:50 ` Vincent Legoll 2017-05-11 20:53 ` Ludovic Courtès 2017-05-11 11:53 ` myglc2 1 sibling, 1 reply; 57+ messages in thread From: Vincent Legoll @ 2017-05-11 8:50 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel, myglc2 > This is a special setup. The warning above just stats > ~/.config/guix/latest. For someone using ‘guix pull’, it’s a symlink > that’s updated each time ‘guix pull’ is invoked. Would there be a downside to stating the pointed-to file rather than the link itself ? -- Vincent Legoll ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 8:50 ` Vincent Legoll @ 2017-05-11 20:53 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-11 20:53 UTC (permalink / raw) To: Vincent Legoll; +Cc: guix-devel, myglc2 Vincent Legoll <vincent.legoll@gmail.com> skribis: >> This is a special setup. The warning above just stats >> ~/.config/guix/latest. For someone using ‘guix pull’, it’s a symlink >> that’s updated each time ‘guix pull’ is invoked. > > Would there be a downside to stating the pointed-to file rather than > the link itself ? I can already tell you that the mtime of the symlink target is 1. :-) Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 8:29 ` Ludovic Courtès 2017-05-11 8:50 ` Vincent Legoll @ 2017-05-11 11:53 ` myglc2 2017-05-11 17:48 ` ng0 1 sibling, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-11 11:53 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/11/2017 at 10:29 Ludovic Courtès writes: > myglc2 <myglc2@gmail.com> skribis: > >> g1@g1 ~/src/guix$ guix package -i icecat >> guix package: warning: Your Guix installation is 85 days old. >> guix package: warning: Consider running 'guix pull' followed by >> 'guix package -u' to get up-to-date packages and security updates. >> [...] >> >> But I just did a git pull ... >> >> g1@g1 ~/src/guix$ git -C ~/.config/guix/latest describe >> v0.12.0-3681-gbc0e6c931 >> >> ... and my ~/.config/guix/latest points to it ... > > This is a special setup. The warning above just stats > ~/.config/guix/latest. For someone using ‘guix pull’, it’s a symlink > that’s updated each time ‘guix pull’ is invoked. > > In your case it’s a symlink that’s never updated… but your warranty is > void anyway. ;-) > > Ludo’. Oh! Thanks! I can force a new symlink each time I re-make guix. Maybe this is a situation where it would be beneficial to embed a date. ISTM a canonical date can be determined for any guix version so it would not lead to un-reproducibility. And it would be a nice gift to researchers doing an archelogical dig 1000 years from now ;-) ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 11:53 ` myglc2 @ 2017-05-11 17:48 ` ng0 2017-05-11 18:17 ` ng0 0 siblings, 1 reply; 57+ messages in thread From: ng0 @ 2017-05-11 17:48 UTC (permalink / raw) To: myglc2; +Cc: guix-devel With a normal setup this has lead to: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/scribus.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/scsi.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/sdcc.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/selinux.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/serveez.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/shellutils.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/simh.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/skarnet.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/skribilo.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/smalltalk.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/stalonetray.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/sync.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/syndication.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/synergy.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/task-management.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/tmux.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/tv.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/uml.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/unrtf.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/uucp.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/vtk.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/wdiff.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/web-browsers.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/wine.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/xnee.go failed: ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory guix pull: error: libtiff-CVE-2017-7593.patch: patch not found in the user profile and normal working conditions in the root profile. Recreating the account is no option and it is minimalistic, no build software installed in profile. -- https://pragmatique.xyz PGP: https://people.pragmatique.xyz/ng0/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 17:48 ` ng0 @ 2017-05-11 18:17 ` ng0 2017-05-11 20:49 ` Adonay Felipe Nogueira 2017-05-12 8:11 ` Chris Marusich 0 siblings, 2 replies; 57+ messages in thread From: ng0 @ 2017-05-11 18:17 UTC (permalink / raw) To: guix-devel ng0 transcribed 4.6K bytes: > With a normal setup this has lead to: > > ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/xnee.go failed: > ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > guix pull: error: libtiff-CVE-2017-7593.patch: patch not found > > in the user profile and normal working conditions in the root profile. > > Recreating the account is no option and it is minimalistic, no build > software installed in profile. > -- > https://pragmatique.xyz > PGP: https://people.pragmatique.xyz/ng0/ > … and the fix is to delete the symlink and run guix pull. -- https://pragmatique.xyz PGP: https://people.pragmatique.xyz/ng0/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 18:17 ` ng0 @ 2017-05-11 20:49 ` Adonay Felipe Nogueira 2017-05-12 8:11 ` Chris Marusich 1 sibling, 0 replies; 57+ messages in thread From: Adonay Felipe Nogueira @ 2017-05-11 20:49 UTC (permalink / raw) To: guix-devel Thanks! This also fixes the problem for me. :) ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-11 18:17 ` ng0 2017-05-11 20:49 ` Adonay Felipe Nogueira @ 2017-05-12 8:11 ` Chris Marusich 2017-05-18 12:32 ` ng0 1 sibling, 1 reply; 57+ messages in thread From: Chris Marusich @ 2017-05-12 8:11 UTC (permalink / raw) To: guix-devel [-- Attachment #1: Type: text/plain, Size: 1282 bytes --] ng0 <ng0@pragmatique.xyz> writes: > ng0 transcribed 4.6K bytes: >> With a normal setup this has lead to: >> >> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory >> ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/xnee.go failed: >> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory >> guix pull: error: libtiff-CVE-2017-7593.patch: patch not found >> >> in the user profile and normal working conditions in the root profile. >> >> Recreating the account is no option and it is minimalistic, no build >> software installed in profile. >> -- >> https://pragmatique.xyz >> PGP: https://people.pragmatique.xyz/ng0/ >> > > … and the fix is to delete the symlink and run guix pull. I also encountered this, and I fixed it simply by running "guix pull" a second time. I believe this is because, as Ludo mentioned earlier in the thread, guile2.2-ssh is not present the first time you run "guix pull", so things get compiled for Guile 2.0. The second time you run "guix pull", guile2.2-ssh IS present in the available packages on the system (thanks to the first "guix pull"), so things get compiled for Guile 2.2. It's a bit round-about, but it worked for me. -- Chris [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-12 8:11 ` Chris Marusich @ 2017-05-18 12:32 ` ng0 0 siblings, 0 replies; 57+ messages in thread From: ng0 @ 2017-05-18 12:32 UTC (permalink / raw) To: Chris Marusich; +Cc: guix-devel Chris Marusich transcribed 2.2K bytes: > ng0 <ng0@pragmatique.xyz> writes: > > > ng0 transcribed 4.6K bytes: > >> With a normal setup this has lead to: > >> > >> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > >> ;;; WARNING: loading compiled file /home/ng0/.config/guix/latest/gnu/packages/xnee.go failed: > >> ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > >> guix pull: error: libtiff-CVE-2017-7593.patch: patch not found > >> > >> in the user profile and normal working conditions in the root profile. > >> > >> Recreating the account is no option and it is minimalistic, no build > >> software installed in profile. > >> -- > >> https://pragmatique.xyz > >> PGP: https://people.pragmatique.xyz/ng0/ > >> > > > > … and the fix is to delete the symlink and run guix pull. > > I also encountered this, and I fixed it simply by running "guix pull" a > second time. I believe this is because, as Ludo mentioned earlier in > the thread, guile2.2-ssh is not present the first time you run "guix > pull", so things get compiled for Guile 2.0. The second time you run > "guix pull", guile2.2-ssh IS present in the available packages on the > system (thanks to the first "guix pull"), so things get compiled for > Guile 2.2. It's a bit round-about, but it worked for me. > > -- > Chris I did not mention that I ran guix pull more than once and that /root/ guix in .config is symlinked to the /home/user guix .config... so deleting was the only option. -- https://pragmatique.xyz PGP: https://people.pragmatique.xyz/ng0/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-09 21:22 ` Heads-up: " Ludovic Courtès 2017-05-09 22:26 ` myglc2 @ 2017-05-14 13:50 ` Pjotr Prins 2017-05-14 15:35 ` Pjotr Prins 2017-05-14 21:28 ` Heads-up: transition to Guile 2.2 Ludovic Courtès 1 sibling, 2 replies; 57+ messages in thread From: Pjotr Prins @ 2017-05-14 13:50 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel On Tue, May 09, 2017 at 11:22:05PM +0200, Ludovic Court??s wrote: > Hello Guix! > > ludo@gnu.org (Ludovic Court??s) skribis: > > > There???s a problem though, called ???guix pull???. ~/.config/guix/latest > > currently contains 2.0 .go files. Thus after reconfiguring GuixSD to > > use Guix-for-2.2, running ???guix??? typically gives loads of warnings like: > > > > ;;; WARNING: loading compiled file /home/ludo/.config/guix/latest/guix/derivations.go failed: > > ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > > With commit 838ba73d6e49bd2b1f2d4ed9329b65cc4e8c1f54, ???guix pull??? builds > with the currently used Guile, be it 2.0 or 2.2. To achieve that, it > tries hard to pick 2.0 or 2.2 packages for the dependencies of Guix. I have just wasted a few hours trying to find a way to bootstrap the latest tree. And I got it to work haphazardly - that means I can't reproduce what I did. Starting from running 'guix pull' twice and essentially following the section 'Building GNU Guix from source (using Guix)' in https://gitlab.com/pjotrp/guix-notes/blob/master/INSTALL.org#building-gnu-guix-from-source-using-guix which used to work reliably. It all has to do with the guile upgrade. Even from a clean git clone it won't work as expected. Typical errors during build are Backtrace: GUILEC gnu/packages/fcitx.go Exception thrown while printing backtrace: GUILEC ERROR: gnu/packages/figlet.go In procedure public-lookup: Module named (system repl debug) does not exist But I got it somehow to build. guix now lacks a version number: ./pre-inst-env guix --version guile: warning: failed to install locale warning: failed to install locale: Invalid argument guix (GNU Guix) UNKNOWN probably because bootstrap never did the right thing. Bootstrap passes, but ./configure --localstatedir=/var complains with configure: error: C preprocessor "/lib/cpp" fails sanity check And during installation: ERROR: In procedure stat: ERROR: In procedure stat: No such file or directory: "/gnu/store/q5kdj7gpawi94pqd15x3wizjq0nx4zhx-python-2.7.13/share/man/man1/python.1" (I remember that one from earlier days, it is a missing symlink) In all, the system feels flaky at this point. I wish we had found a way of upgrading guile with backward compatibility. Maybe temporarily naming it guile2.2 with matching paths would have been better. Pj. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 13:50 ` Pjotr Prins @ 2017-05-14 15:35 ` Pjotr Prins 2017-05-14 16:13 ` Pjotr Prins 2017-05-14 21:28 ` Heads-up: transition to Guile 2.2 Ludovic Courtès 1 sibling, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-14 15:35 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel I rolled back all the way to March to get a reproducable stable system again. At least we can do that, unlike almost any other software distribution :). We'll be on guile 2.0 for the time being until we can get a reliable upgrade path. Maybe it is the combination with the major gcc update to 7.10 that makes things unstable. I could not figure it out, just see the result. Pj. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 15:35 ` Pjotr Prins @ 2017-05-14 16:13 ` Pjotr Prins 2017-05-14 16:28 ` Jan Nieuwenhuizen 0 siblings, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-14 16:13 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel I rolled back all the way to March to get a reproducable stable system again. At least we can do that, unlike almost any other software distribution :). We'll be on guile 2.0 for the time being until we can get a reliable upgrade path. Maybe it is the combination with the major gcc update to 7.10 that makes things unstable. I could not figure it out, just see the result. Pj. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 16:13 ` Pjotr Prins @ 2017-05-14 16:28 ` Jan Nieuwenhuizen 2017-05-14 17:29 ` pjotr.public12 0 siblings, 1 reply; 57+ messages in thread From: Jan Nieuwenhuizen @ 2017-05-14 16:28 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins writes: > I rolled back all the way to March to get a reproducable stable > system again. Ugh...I'm not sure what troubles you encountered. I have been using guile-2.2 for two years now; and have been "fighting" Guix's use of guile-2.0... Most troublesome is that some packages set GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH and mixing guile-2.0 and guile-2.2 packages that do so is still troublesome. It would be nice (TM) if we could find a way not to rely on setting those environment variables. Greetings, janneke -- Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 16:28 ` Jan Nieuwenhuizen @ 2017-05-14 17:29 ` pjotr.public12 2017-05-14 18:30 ` Creating a reliable bootstrap for building from source Pjotr Prins 0 siblings, 1 reply; 57+ messages in thread From: pjotr.public12 @ 2017-05-14 17:29 UTC (permalink / raw) To: Jan Nieuwenhuizen; +Cc: guix-devel On Sun, May 14, 2017 at 06:28:01PM +0200, Jan Nieuwenhuizen wrote: > Most troublesome is that some packages set GUILE_LOAD_PATH and > GUILE_LOAD_COMPILED_PATH and mixing guile-2.0 and guile-2.2 packages > that do so is still troublesome. It would be nice (TM) if we could > find a way not to rely on setting those environment variables. One thing I noticed was that gnutls was in the 2.2 path and json was in 2.0. Providing both paths did help compilation. It was one thing I did. But it does not feel quite right :) It appears to me that we shoud have a reproducable bootstrap path at every stage of the tree. I mean for building from the checked out git tree of guix. Pj. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Creating a reliable bootstrap for building from source 2017-05-14 17:29 ` pjotr.public12 @ 2017-05-14 18:30 ` Pjotr Prins 2017-05-14 21:32 ` Ludovic Courtès 0 siblings, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-14 18:30 UTC (permalink / raw) To: Jan Nieuwenhuizen, guix-devel Thinking about it, what I want to achieve is that we can take the latest git tree and bootstrap by building guix and packages. This should be easy, since I have guix running, but it is not. And the main trouble is that the underlying build packages can differ over time. I am looking at gcc versions and guile versions. I.e., we are building on shifting sands. How unguixy! The combination of 'guix pull' held a promise, were it not that pull is also iffy. Probably for pretty much the same reason. The bootstrap+configure scripts try to work that, but actually address a wider case. I.e. people who want to bootstrap in Debian etc. I don't think we need al that. I write Makefile.guix for my projects and they tend to be simple! Once you can assume Guix is there life gets simple as a developer - except when you try to bootstrap :0 The instruction I would like to write for others is: 1. Install the latest bootstrap-guix-from-source package after a guix pull 2. git clone guix && cd guix 3. run make -f Makefile.guix (no configure is needed in guix!) 4. ./pre-inst guix etc. etc. Now the bootstrap-guix-from-source package is easy to create and needs one single test: build guix from the git tree. It should have a dependency on the git tree itself, so it gets forced every time on the build farm. Once we have that we can even bootstrap using guix pack and such. I realise potluck could be an alternative, but a working bootstrap would make guix pull also reliable and we can test it effectively on the build farm. Pj. (unguixy, I like that. It applies to many deployment statements. The world is an unguixy place) ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-14 18:30 ` Creating a reliable bootstrap for building from source Pjotr Prins @ 2017-05-14 21:32 ` Ludovic Courtès 2017-05-15 1:20 ` David Pirotte ` (2 more replies) 0 siblings, 3 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-14 21:32 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins <pjotr.public12@thebird.nl> skribis: > The combination of 'guix pull' held a promise, were it not that pull is > also iffy. Probably for pretty much the same reason. > > The bootstrap+configure scripts try to work that, but actually > address a wider case. I.e. people who want to bootstrap in Debian etc. > I don't think we need al that. I write Makefile.guix for my projects > and they tend to be simple! Once you can assume Guix is there life > gets simple as a developer - except when you try to bootstrap :0 > > The instruction I would like to write for others is: > > 1. Install the latest bootstrap-guix-from-source package after a guix pull > 2. git clone guix && cd guix > 3. run make -f Makefile.guix > > (no configure is needed in guix!) > > 4. ./pre-inst guix etc. etc. I think there are two very different use cases. As a user I want something like ‘apt-get update’, which is what ‘guix pull’ tries to do. For Guix developers, I think it’s reasonable to have a traditional GNU build system. After all, Guix is also a regular software package that people can build from source with “./configure && make && make install”. My 2¢, Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-14 21:32 ` Ludovic Courtès @ 2017-05-15 1:20 ` David Pirotte 2017-05-15 13:27 ` Ludovic Courtès 2017-05-15 7:35 ` Pjotr Prins 2017-05-17 7:52 ` Pjotr Prins 2 siblings, 1 reply; 57+ messages in thread From: David Pirotte @ 2017-05-15 1:20 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1080 bytes --] Heya, > As a user I want something like ‘apt-get update’, which is what ‘guix > pull’ tries to do. For end-users, cool stuff would be: nguix [ guix-ncurse u [ update the aptitude cached list of all packages, [ installed or not... just package descriptions, nothing [ has been downloaded yet U [ mark as 'wish to update' g [ list the above marked for update packages, then fine tune [ using =, -, + ... g ok, download what I really selected to be updated and update... note that the most important aptitude ncurse menu is 'Cancel pending actions' :) or using emacs, 'à la magit' M-x guix-status u U ... > For Guix developers, I think it’s reasonable to have a traditional GNU > build system. After all, Guix is also a regular software package that > people can build from source with “./configure && make && make install”. If I could just grab guile-gnutls and “./configure && make && make install” then I could compile, play, use, learn, contribute with/to guix... Cheers, David [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-15 1:20 ` David Pirotte @ 2017-05-15 13:27 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-15 13:27 UTC (permalink / raw) To: David Pirotte; +Cc: guix-devel Hi David, David Pirotte <david@altosw.be> skribis: >> As a user I want something like ‘apt-get update’, which is what ‘guix >> pull’ tries to do. > > For end-users, cool stuff would be: > > nguix [ guix-ncurse > > u [ update the aptitude cached list of all packages, > [ installed or not... just package descriptions, nothing > [ has been downloaded yet > U [ mark as 'wish to update' > g [ list the above marked for update packages, then fine tune > [ using =, -, + ... > g ok, download what I really selected to be updated > and update... > > note that the most important aptitude ncurse menu is 'Cancel pending > actions' :) > > or using emacs, 'à la magit' > > M-x guix-status > u > U > ... How would that differ from what Emacs-Guix provides? >> For Guix developers, I think it’s reasonable to have a traditional GNU >> build system. After all, Guix is also a regular software package that >> people can build from source with “./configure && make && make install”. > > If I could just grab guile-gnutls and “./configure && make && make install” > then I could compile, play, use, learn, contribute with/to guix... David, if your distro does not provide a guile-gnutls package, you can always install Guix via the binary installation method: https://www.gnu.org/software/guix/manual/html_node/Binary-Installation.html HTH! Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-14 21:32 ` Ludovic Courtès 2017-05-15 1:20 ` David Pirotte @ 2017-05-15 7:35 ` Pjotr Prins 2017-05-15 13:28 ` Ludovic Courtès 2017-05-17 7:52 ` Pjotr Prins 2 siblings, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-15 7:35 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel On Sun, May 14, 2017 at 11:32:06PM +0200, Ludovic Court??s wrote: > Pjotr Prins <pjotr.public12@thebird.nl> skribis: > > > The combination of 'guix pull' held a promise, were it not that pull is > > also iffy. Probably for pretty much the same reason. > > > > The bootstrap+configure scripts try to work that, but actually > > address a wider case. I.e. people who want to bootstrap in Debian etc. > > I don't think we need al that. I write Makefile.guix for my projects > > and they tend to be simple! Once you can assume Guix is there life > > gets simple as a developer - except when you try to bootstrap :0 > > > > The instruction I would like to write for others is: > > > > 1. Install the latest bootstrap-guix-from-source package after a guix pull > > 2. git clone guix && cd guix > > 3. run make -f Makefile.guix > > > > (no configure is needed in guix!) > > > > 4. ./pre-inst guix etc. etc. > > I think there are two very different use cases. > > As a user I want something like 'apt-get update', which is what 'guix > pull' tries to do. Sure. But from my previous E-mail you can see we are effectively using pull to bootstrap the source tree build. > For Guix developers, I think it's reasonable to have a traditional GNU > build system. After all, Guix is also a regular software package that > people can build from source with './configure && make && make install'. My point is that we can simplify. I like simple. Simple is good. We can have both the configure and a simple Makefile.guix option. That is what I do with my projects. We do not need bootstrap, autoconf and configure on a running Guix system. We do need it for other distributions. Anyway, feel free to ignore this idea. Pj. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-15 7:35 ` Pjotr Prins @ 2017-05-15 13:28 ` Ludovic Courtès 2017-05-17 7:47 ` Pjotr Prins 0 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-05-15 13:28 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins <pjotr.public12@thebird.nl> skribis: > On Sun, May 14, 2017 at 11:32:06PM +0200, Ludovic Court??s wrote: >> Pjotr Prins <pjotr.public12@thebird.nl> skribis: >> >> > The combination of 'guix pull' held a promise, were it not that pull is >> > also iffy. Probably for pretty much the same reason. >> > >> > The bootstrap+configure scripts try to work that, but actually >> > address a wider case. I.e. people who want to bootstrap in Debian etc. >> > I don't think we need al that. I write Makefile.guix for my projects >> > and they tend to be simple! Once you can assume Guix is there life >> > gets simple as a developer - except when you try to bootstrap :0 >> > >> > The instruction I would like to write for others is: >> > >> > 1. Install the latest bootstrap-guix-from-source package after a guix pull >> > 2. git clone guix && cd guix >> > 3. run make -f Makefile.guix >> > >> > (no configure is needed in guix!) >> > >> > 4. ./pre-inst guix etc. etc. >> >> I think there are two very different use cases. >> >> As a user I want something like 'apt-get update', which is what 'guix >> pull' tries to do. > > Sure. But from my previous E-mail you can see we are effectively using > pull to bootstrap the source tree build. Sure. >> For Guix developers, I think it's reasonable to have a traditional GNU >> build system. After all, Guix is also a regular software package that >> people can build from source with './configure && make && make install'. > > My point is that we can simplify. I like simple. Simple is good. > > We can have both the configure and a simple Makefile.guix option. That > is what I do with my projects. > > We do not need bootstrap, autoconf and configure on a running Guix > system. We do need it for other distributions. I agree. build-aux/build-self.scm, which is what ‘guix pull’ runs to build Guix, is close to what you’re suggesting, IIUC: a pure-Guile build script. WDYT? Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-15 13:28 ` Ludovic Courtès @ 2017-05-17 7:47 ` Pjotr Prins 2017-05-19 8:58 ` Ludovic Courtès 0 siblings, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-17 7:47 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel On Mon, May 15, 2017 at 03:28:58PM +0200, Ludovic Court??s wrote: > >> For Guix developers, I think it's reasonable to have a traditional GNU > >> build system. After all, Guix is also a regular software package that > >> people can build from source with './configure && make && make install'. > > > > My point is that we can simplify. I like simple. Simple is good. > > > > We can have both the configure and a simple Makefile.guix option. That > > is what I do with my projects. > > > > We do not need bootstrap, autoconf and configure on a running Guix > > system. We do need it for other distributions. > > I agree. build-aux/build-self.scm, which is what ???guix pull??? runs to > build Guix, is close to what you???re suggesting, IIUC: a pure-Guile build > script. WDYT? It is interesting - especially the hoops jumping around guile versioning ;) - but it still looks like it invokes the traditional gnu-build-system. I think we can do without that too. Pj. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-17 7:47 ` Pjotr Prins @ 2017-05-19 8:58 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-19 8:58 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Pjotr Prins <pjotr.public12@thebird.nl> skribis: > On Mon, May 15, 2017 at 03:28:58PM +0200, Ludovic Court??s wrote: >> >> For Guix developers, I think it's reasonable to have a traditional GNU >> >> build system. After all, Guix is also a regular software package that >> >> people can build from source with './configure && make && make install'. >> > >> > My point is that we can simplify. I like simple. Simple is good. >> > >> > We can have both the configure and a simple Makefile.guix option. That >> > is what I do with my projects. >> > >> > We do not need bootstrap, autoconf and configure on a running Guix >> > system. We do need it for other distributions. >> >> I agree. build-aux/build-self.scm, which is what ???guix pull??? runs to >> build Guix, is close to what you???re suggesting, IIUC: a pure-Guile build >> script. WDYT? > > It is interesting - especially the hoops jumping around guile > versioning ;) - but it still looks like it invokes the traditional > gnu-build-system. No, (guix scripts pull) really just traverses the list of .scm files and compiles them. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Creating a reliable bootstrap for building from source 2017-05-14 21:32 ` Ludovic Courtès 2017-05-15 1:20 ` David Pirotte 2017-05-15 7:35 ` Pjotr Prins @ 2017-05-17 7:52 ` Pjotr Prins 2 siblings, 0 replies; 57+ messages in thread From: Pjotr Prins @ 2017-05-17 7:52 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel On Sun, May 14, 2017 at 11:32:06PM +0200, Ludovic Court??s wrote: > For Guix developers, I think it???s reasonable to have a traditional GNU > build system. After all, Guix is also a regular software package that > people can build from source with ???./configure && make && make install???. This is the procedure I have now for creating a reliable bootstrap from source: The safest route is by using guix environment after starting a clean shell screen -S guix-build # I tend to build in screen env -i /bin/bash --login --noprofile --norc ~/.guix-profile/bin/guix environment guix --ad-hoc help2man git strace \ pkg-config less vim binutils coreutils grep --no-grafts bash # you may want this shell In fact pick the most recent guix you have got, see 'ls /gnu/store/*guix*/bin/guix' and run that command. Use the --no-grafts switch if you have built packages that way before. Note that you can start guix by installing the binary tar ball, or copying it from another machine using the rather useful guix archive or [[https://www.gnu.org/software/guix/news/creating-bundles-with-guix-pack.html][guix pack]] commands. You may want to take a note of these running versions gcc --version guile --version Next in the source tree rm -rf autom4te.cache/ # to be sure make clean ./bootstrap ./configure --localstatedir=/var make clean # to be really sure time make It works reliably on all my setups :). Note that typically gcc is v4 or v5 and guile 2.0.x, but never the same. I am pleased with this until it stops working ... I think it should go in the manual and we should have an automated test on this procedure. Pj. -- ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 13:50 ` Pjotr Prins 2017-05-14 15:35 ` Pjotr Prins @ 2017-05-14 21:28 ` Ludovic Courtès 2017-05-15 7:26 ` Pjotr Prins 1 sibling, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-05-14 21:28 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Hi Pjotr, Pjotr Prins <pjotr.public12@thebird.nl> skribis: > I have just wasted a few hours trying to find a way to > bootstrap the latest tree. And I got it to work haphazardly - that > means I can't reproduce what I did. Oh. > Starting from running 'guix pull' twice and essentially following the section > 'Building GNU Guix from source (using Guix)' in > > https://gitlab.com/pjotrp/guix-notes/blob/master/INSTALL.org#building-gnu-guix-from-source-using-guix > > which used to work reliably. It all has to do with the guile upgrade. Even from > a clean git clone it won't work as expected. Apparently I cannot access that page without logging in. For developers, the instructions at <https://www.gnu.org/software/guix/manual/html_node/Building-from-Git.html> are still valid, AFAIK. > Typical errors during build are > > Backtrace: > GUILEC gnu/packages/fcitx.go > Exception thrown while printing backtrace: > GUILEC ERROR: gnu/packages/figlet.go > In procedure public-lookup: Module named (system repl debug) does > not exist Weird. Was it with Guile 2.0 or 2.2? What was on GUILE_LOAD_PATH? > But I got it somehow to build. guix now lacks a version number: > > ./pre-inst-env guix --version > guile: warning: failed to install locale > warning: failed to install locale: Invalid argument > guix (GNU Guix) UNKNOWN > > probably because bootstrap never did the right thing. Bootstrap passes, but That’s because build-aux/git-version-gen didn’t find ‘git’ in $PATH. > ./configure --localstatedir=/var > > complains with > > configure: error: C preprocessor "/lib/cpp" fails sanity check What does config.log say? > And during installation: > > ERROR: In procedure stat: > ERROR: In procedure stat: No such file or directory: > "/gnu/store/q5kdj7gpawi94pqd15x3wizjq0nx4zhx-python-2.7.13/share/man/man1/python.1" During installation of what? > In all, the system feels flaky at this point. I wish we had found a > way of upgrading guile with backward compatibility. Maybe temporarily > naming it guile2.2 with matching paths would have been better. IIUC this does not relate to ‘guix pull’ since you’re building from Git. FWIW I had been running Guix in my checkout with Guile 2.2 long before this ‘guix pull’ transition. It required making sure that all the 2.2 dependencies were in the environment (not the 2.0 dependencies), but apart from that that went fine. I’m afraid I don’t have enough info to debug the issues you mention here though. :-/ Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-14 21:28 ` Heads-up: transition to Guile 2.2 Ludovic Courtès @ 2017-05-15 7:26 ` Pjotr Prins 2017-05-15 15:48 ` Ludovic Courtès 0 siblings, 1 reply; 57+ messages in thread From: Pjotr Prins @ 2017-05-15 7:26 UTC (permalink / raw) To: Ludovic Court??s; +Cc: guix-devel Hi Ludo, On Sun, May 14, 2017 at 11:28:17PM +0200, Ludovic Court??s wrote: > > Starting from running 'guix pull' twice and essentially following the section > > 'Building GNU Guix from source (using Guix)' in > > > > https://gitlab.com/pjotrp/guix-notes/blob/master/INSTALL.org#building-gnu-guix-from-source-using-guix > > > > which used to work reliably. It all has to do with the guile upgrade. Even from > > a clean git clone it won't work as expected. > > Apparently I cannot access that page without logging in. For Sorry. I am migrating repositories from github and while gitlab imports even the issue trackers (cool!) it set repos to private by default. Go figure. Fixed access. But don't look at it now, I need to fix the text. > developers, the instructions at > <https://www.gnu.org/software/guix/manual/html_node/Building-from-Git.html> > are still valid, AFAIK. The good news is that I got a build of a recent guix with env -i /bin/bash --login --noprofile --norc ~/.guix-profile/bin/guix environment guix --ad-hoc help2man git strace pkg-config rm -rf autom4te.cache/ # to be sure make clean ./bootstrap ./configure --localstatedir=/var make clean # to be sure make which is *nice*. It is clear my environment is somewhat unstable - a combination of PATH pollution and (I think) recent tools mixed into the build process. And this is what my message is about, the tooling in my guix environment is old. Checking inside above environment gcc --version gcc (GCC) 5.4.0 guile --version guile (GNU Guile) 2.0.14 So, what is happening is that I am building a recent tree with an old toolset. This is exactly what I meant! I don't dare do a guix pull now, to avoid the tree build failing again(!). Heh. Everyone, I mean everyone, is building guix with different toolsets, i.e, combinations of tools and versions. This is wrong and unguixy. > > Typical errors during build are > > > > Backtrace: > > GUILEC gnu/packages/fcitx.go > > Exception thrown while printing backtrace: > > GUILEC ERROR: gnu/packages/figlet.go > > In procedure public-lookup: Module named (system repl debug) does > > not exist > > Weird. Was it with Guile 2.0 or 2.2? What was on GUILE_LOAD_PATH? I know, can't reproduce it now. > > But I got it somehow to build. guix now lacks a version number: > > > > ./pre-inst-env guix --version > > guile: warning: failed to install locale > > warning: failed to install locale: Invalid argument > > guix (GNU Guix) UNKNOWN > > > > probably because bootstrap never did the right thing. Bootstrap passes, but > > That???s because build-aux/git-version-gen didn???t find ???git??? in $PATH. Git was in the path, for sure. But obviously my system was unsettled. > > ./configure --localstatedir=/var > > > > complains with > > > > configure: error: C preprocessor "/lib/cpp" fails sanity check > > What does config.log say? It was a whole range of gcc 7.10 errors, looking for limit.h etc. Lost the log in anger ;) > > And during installation: > > > > ERROR: In procedure stat: > > ERROR: In procedure stat: No such file or directory: > > "/gnu/store/q5kdj7gpawi94pqd15x3wizjq0nx4zhx-python-2.7.13/share/man/man1/python.1" > > During installation of what? It was during profile path resolving of Guix. I happen to have this in a screen. The full trace is warning: collision encountered: /gnu/store/b11lvv9x75jgiiw7rpyb53vj8j57jrw6-mysql-5.7.17/share/man/man1/mysqltest.1.gz /gnu/store/vdvwj57w1rnay7khvi0c4wp05f35gqcl-mysql-5.6.25/share/man/man1/mysqltest.1.gz warning: arbitrarily choosing /gnu/store/b11lvv9x75jgiiw7rpyb53vj8j57jrw6-mysql-5.7.17/share/man/man1/mysqltest.1.gz Backtrace: In ice-9/boot-9.scm: 160: 17 [catch #t #<catch-closure 8cac60> ...] In unknown file: ?: 16 [apply-smob/1 #<catch-closure 8cac60>] In ice-9/boot-9.scm: 66: 15 [call-with-prompt prompt0 ...] In ice-9/eval.scm: 432: 14 [eval # #] In ice-9/boot-9.scm: 2404: 13 [save-module-excursion #<procedure 8ea7c0 at ice-9/boot-9.scm:4051:3 ()>] 4056: 12 [#<procedure 8ea7c0 at ice-9/boot-9.scm:4051:3 ()>] 1727: 11 [%start-stack load-stack #<procedure 8fcae0 at ice-9/boot-9.scm:4047:10 ()>] 1732: 10 [#<procedure 8fd6f0 ()>] In unknown file: ?: 9 [primitive-load "/gnu/store/v9h4yaza43hi1780piyvvjsn5ba43hbn-profile-builder"] In ./guix/build/profiles.scm: 133: 8 [build-profile "/gnu/store/2qnn7divxnh5phd1k8sq7g9p29y1vapc-profile" # ...] In unknown file: ?: 7 [hash-for-each #<procedure d3f3f0 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] ?: 6 [hash-for-each #<procedure b92b10 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] ?: 5 [hash-for-each #<procedure eabd80 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] ?: 4 [hash-for-each #<procedure f24720 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] In ./guix/build/union.scm: 110: 3 [union "/gnu/store/2qnn7divxnh5phd1k8sq7g9p29y1vapc-profile/share/man/man1/python.1" ...] In unknown file: ?: 2 [partition #<procedure file-is-directory? (file)> #] In ./guix/build/union.scm: 49: 1 [file-is-directory? "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1"] In unknown file: ?: 0 [stat "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1" ...] ERROR: In procedure stat: ERROR: In procedure stat: No such file or directory: "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1" builder for `/gnu/store/ssqb8qmdna28yjq2ggy5bxiy2wn5q1k7-profile.drv' failed with exit code 1 guix package: error: build failed: build of `/gnu/store/ssqb8qmdna28yjq2ggy5bxiy2wn5q1k7-profile.drv' failed but, lets not focus on that right now. > > In all, the system feels flaky at this point. I wish we had found a > > way of upgrading guile with backward compatibility. Maybe temporarily > > naming it guile2.2 with matching paths would have been better. > > IIUC this does not relate to ???guix pull??? since you???re building from Git. The tooling I am using to build from git is coming from a guix pull. > FWIW I had been running Guix in my checkout with Guile 2.2 long before > this ???guix pull??? transition. It required making sure that all the 2.2 > dependencies were in the environment (not the 2.0 dependencies), but > apart from that that went fine. > > I???m afraid I don???t have enough info to debug the issues you mention here > though. :-/ No need. What I am suggesting is that we create an environment with a recent and *tested* set of tools to build the source tree. If that build is reproducible with recent tooling it will be easy to hunt down bugs. Currently we can pull a guix environment, but point me where we have an automated build of that to prove that it is working. Tell me how *you* can recreate the exact same build environment that I am using. Above environment isolation feature is useful, but does not guarantee reproducible builds from source. The point is that we *can* do it. I suggest to create a guix-build package which is tested against every commit that updates guix itself on the build farm. We don't have to trigger for updated packages. Just for commits to the core. Do you get what I mean? I think it is fairly trivial to achieve, If you agree this is important I may even have a go at it at some point. Pj. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Heads-up: transition to Guile 2.2 2017-05-15 7:26 ` Pjotr Prins @ 2017-05-15 15:48 ` Ludovic Courtès 2017-05-15 20:24 ` Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] myglc2 0 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-05-15 15:48 UTC (permalink / raw) To: Pjotr Prins; +Cc: guix-devel Hi, Pjotr Prins <pjotr.public12@thebird.nl> skribis: > The good news is that I got a build of a recent guix with > > env -i /bin/bash --login --noprofile --norc > ~/.guix-profile/bin/guix environment guix --ad-hoc help2man git strace pkg-config > rm -rf autom4te.cache/ # to be sure > make clean > ./bootstrap > ./configure --localstatedir=/var > make clean # to be sure > make > > which is *nice*. It is clear my environment is somewhat unstable - a > combination of PATH pollution and (I think) recent tools mixed into the > build process. > > And this is what my message is about, the tooling in my guix environment is > old. Checking inside above environment > > gcc --version > gcc (GCC) 5.4.0 > > guile --version > guile (GNU Guile) 2.0.14 > > So, what is happening is that I am building a recent tree with an old > toolset. This is exactly what I meant! I don't dare do a guix pull > now, to avoid the tree build failing again(!). Heh. > > Everyone, I mean everyone, is building guix with different toolsets, i.e, > combinations of tools and versions. > > This is wrong and unguixy. Yes, I kinda agree, though again, we need to distinguish between developers and users (I know I know, the deficiencies of ‘guix pull’ gives users an incentive to do use the checkout/autoreconf/configure/make dance, but let’s put that aside for now.) As a developer, it’s important to be able to choose the tools that you use. For instance, to “port” Guix to Guile 2.2, I needed to build it and run it with 2.2, but of course I couldn’t force it to users before it was ready. Thus, I believe the normal ./configure && make approach makes sense in this developer context. As a user though, I clearly don’t want to worry about these shenanigans. I want to be able to get the latest Guix and package set, and I don’t care about what it involves behind the scenes. >> > ./configure --localstatedir=/var >> > >> > complains with >> > >> > configure: error: C preprocessor "/lib/cpp" fails sanity check >> >> What does config.log say? > > It was a whole range of gcc 7.10 errors, looking for limit.h etc. Lost the log in anger ;) Lack of limits.h, could it be that you had ‘gcc’ in your profile instead of ‘gcc-toolchain’ (the latter brings in the libc and Linux headers, including <limits.h>, while the former does not)? > It was during profile path resolving of Guix. I happen to have this in > a screen. The full trace is > > warning: collision encountered: /gnu/store/b11lvv9x75jgiiw7rpyb53vj8j57jrw6-mysql-5.7.17/share/man/man1/mysqltest.1.gz > /gnu/store/vdvwj57w1rnay7khvi0c4wp05f35gqcl-mysql-5.6.25/share/man/man1/mysqltest.1.gz > warning: arbitrarily choosing /gnu/store/b11lvv9x75jgiiw7rpyb53vj8j57jrw6-mysql-5.7.17/share/man/man1/mysqltest.1.gz > Backtrace: > In ice-9/boot-9.scm: > 160: 17 [catch #t #<catch-closure 8cac60> ...] > In unknown file: > ?: 16 [apply-smob/1 #<catch-closure 8cac60>] > In ice-9/boot-9.scm: > 66: 15 [call-with-prompt prompt0 ...] > In ice-9/eval.scm: > 432: 14 [eval # #] > In ice-9/boot-9.scm: > 2404: 13 [save-module-excursion #<procedure 8ea7c0 at ice-9/boot-9.scm:4051:3 ()>] > 4056: 12 [#<procedure 8ea7c0 at ice-9/boot-9.scm:4051:3 ()>] > 1727: 11 [%start-stack load-stack #<procedure 8fcae0 at ice-9/boot-9.scm:4047:10 ()>] > 1732: 10 [#<procedure 8fd6f0 ()>] > In unknown file: > ?: 9 [primitive-load "/gnu/store/v9h4yaza43hi1780piyvvjsn5ba43hbn-profile-builder"] > In ./guix/build/profiles.scm: > 133: 8 [build-profile "/gnu/store/2qnn7divxnh5phd1k8sq7g9p29y1vapc-profile" # ...] > In unknown file: > ?: 7 [hash-for-each #<procedure d3f3f0 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] > ?: 6 [hash-for-each #<procedure b92b10 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] > ?: 5 [hash-for-each #<procedure eabd80 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] > ?: 4 [hash-for-each #<procedure f24720 at ./guix/build/union.scm:143:21 (file dirs-with-file)> ...] > In ./guix/build/union.scm: > 110: 3 [union "/gnu/store/2qnn7divxnh5phd1k8sq7g9p29y1vapc-profile/share/man/man1/python.1" ...] > In unknown file: > ?: 2 [partition #<procedure file-is-directory? (file)> #] > In ./guix/build/union.scm: > 49: 1 [file-is-directory? "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1"] > In unknown file: > ?: 0 [stat "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1" ...] > > ERROR: In procedure stat: > ERROR: In procedure stat: No such file or directory: "/gnu/store/q6rbp7s542jkhrhz04hsp2i60gw0h4as-python-2.7.12/share/man/man1/python.1" > builder for `/gnu/store/ssqb8qmdna28yjq2ggy5bxiy2wn5q1k7-profile.drv' failed with exit code 1 > guix package: error: build failed: build of `/gnu/store/ssqb8qmdna28yjq2ggy5bxiy2wn5q1k7-profile.drv' failed > > but, lets not focus on that right now. Hmm that looks like a genuine bug. Could you email the details to bug-guix if possible, ideally with a simple way to reproduce it (like take commit XYZ, run “./pre-inst-env guix package -p new -i python …”)? > No need. What I am suggesting is that we create an environment with a recent > and *tested* set of tools to build the source tree. If that build is > reproducible with recent tooling it will be easy to hunt down bugs. Currently > we can pull a guix environment, but point me where we have an automated build > of that to prove that it is working. Tell me how *you* can recreate > the exact same build environment that I am using. Above environment > isolation feature is useful, but does not guarantee reproducible > builds from source. The point is that we *can* do it. > > I suggest to create a guix-build package which is tested against every commit > that updates guix itself on the build farm. We don't have to trigger for > updated packages. Just for commits to the core. > > Do you get what I mean? I think it is fairly trivial to achieve, If you agree > this is important I may even have a go at it at some point. Yeah, I get what you mean. Currently we have the ‘current-guix’ package, which is the ‘guix’ package built from the current Git checkout. I think it’s pretty much what you have in mind? It’s fully specified in a “guixy” way, which is to say that the ‘guix’ package specifies precisely the dependency graph. The GuixSD installation tests are the only things that use ‘current-guix’ right now. The future pull/channel command, though, will probably use something similar to ‘current-guix’, as opposed to the terrible dependency mixture that ‘guix pull’ uses. Thanks for your feedback, Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-15 15:48 ` Ludovic Courtès @ 2017-05-15 20:24 ` myglc2 2017-05-16 15:55 ` Ricardo Wurmus 0 siblings, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-15 20:24 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/15/2017 at 17:48 Ludovic Courtès writes: > Hi, > > Pjotr Prins <pjotr.public12@thebird.nl> skribis: > [...] >> Everyone, I mean everyone, is building guix with different toolsets, i.e, >> combinations of tools and versions. >> >> This is wrong and unguixy. > > Yes, I kinda agree, though again, we need to distinguish between > developers and users (I know I know, the deficiencies of ‘guix pull’ > gives users an incentive to do use the > checkout/autoreconf/configure/make dance, but let’s put that aside for > now.) I believe there will be many guix "users" that want to run from git checkout. They just may not know it, yet. They will want it not just because they are trying to get around the limitations of git pull. For example, even users that don't do development have occasion to... - select non-stock package config options - need/apply/use patches from guix developers - need/apply/use patches from package developers - need/apply/use some crazy stuff from a friend Furthermore, ISTM that current guix packaging is a rather nasty tease: Our user installs guix/guixSD, does 'guix pull' & 'guix-edit', and what do they get? READ-ONLY source in an editor that BEEPS when they TRY TO CHANGE IT :-( Right out of the box this seem contrary to the Guix promise of _freedom_ and _hackability_. Now, if our user thinks they really do want to try making a change, they first have to wade thru various and confusing config options and set guix up in a _non-standard_ way. This is currently a large hurdle and _far from liberating_. Now there are no doubt different "classes" of guix users that need to be accommodated. We should think about and agree on a model of what these classes are and the services that guix provides in each class. Maybe some of the discussions of channels, potluck, etc can also be fit into such a framework. Thinking about these issues I ended up wondering: why don't we use git checkout in "guix pull" for all classes of user? Then there won't be a big hurdle to get over when a user decides they want to try editing a source. In this approach, different user classes would be accommodated in the documentation structure and with a config option or two. As an optimization, compiled .go modules can be pulled to minimize user-side guix source compilation. ISTM there would be no downside. WDYT? - George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-15 20:24 ` Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] myglc2 @ 2017-05-16 15:55 ` Ricardo Wurmus 2017-05-16 20:56 ` Maxim Cournoyer ` (2 more replies) 0 siblings, 3 replies; 57+ messages in thread From: Ricardo Wurmus @ 2017-05-16 15:55 UTC (permalink / raw) To: myglc2; +Cc: guix-devel myglc2 <myglc2@gmail.com> writes: > I believe there will be many guix "users" that want to run from git > checkout. They just may not know it, yet. They will want it not just > because they are trying to get around the limitations of git pull. For > example, even users that don't do development have occasion to... > > - select non-stock package config options > > - need/apply/use patches from guix developers > > - need/apply/use patches from package developers > > - need/apply/use some crazy stuff from a friend For those things I believe it to be better to use the package rewriting framework, i.e. *adding* package variants that have additional patches or modified configuration options. Using the git checkout directly comes with too many disadvantages for users who are not developers. Git’s UI is famously weird, and there hardly is anyone who really loves it. Using the git checkout also requires the use of “make clean-go” whenever the ABI changes, and occasionally even necessitates re-bootstrapping, or in the case of upgrading to Guile 2.2 re-configuration. > Furthermore, ISTM that current guix packaging is a rather nasty tease: > Our user installs guix/guixSD, does 'guix pull' & 'guix-edit', and what > do they get? > > READ-ONLY source in an editor that BEEPS when they TRY TO CHANGE IT :-( > > Right out of the box this seem contrary to the Guix promise of _freedom_ > and _hackability_. True, “guix edit” could do better, e.g. create a new package variant in a user module that inherits from the given package and puts the cursor in the right spot to make changes right there. Upon saving, the package could be used right away with GUIX_PACKAGE_PATH. I think that a first step towards improving the experience with “guix pull” is to build Guix continuously on Hydra and tell “guix pull” to download that. Users would no longer have to wait for compilation on their local machines, removing a big incentive to go with a git checkout. Maybe we should do this first to stop the worst problems, buying us a bit more time to implement channels. -- Ricardo GPG: BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC https://elephly.net ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-16 15:55 ` Ricardo Wurmus @ 2017-05-16 20:56 ` Maxim Cournoyer 2017-05-18 13:54 ` Katherine Cox-Buday 2017-05-17 12:45 ` Ludovic Courtès 2017-05-17 16:06 ` myglc2 2 siblings, 1 reply; 57+ messages in thread From: Maxim Cournoyer @ 2017-05-16 20:56 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel, myglc2 On Tue, May 16, 2017 at 8:55 AM, Ricardo Wurmus <rekado@elephly.net> wrote: > > myglc2 <myglc2@gmail.com> writes: > >> I believe there will be many guix "users" that want to run from git >> checkout. They just may not know it, yet. They will want it not just >> because they are trying to get around the limitations of git pull. For >> example, even users that don't do development have occasion to... >> >> - select non-stock package config options >> >> - need/apply/use patches from guix developers >> >> - need/apply/use patches from package developers >> >> - need/apply/use some crazy stuff from a friend > > For those things I believe it to be better to use the package rewriting > framework, i.e. *adding* package variants that have additional patches > or modified configuration options. > > Using the git checkout directly comes with too many disadvantages for > users who are not developers. Git’s UI is famously weird, and there > hardly is anyone who really loves it. > > Using the git checkout also requires the use of “make clean-go” whenever > the ABI changes, and occasionally even necessitates re-bootstrapping, or > in the case of upgrading to Guile 2.2 re-configuration. > >> Furthermore, ISTM that current guix packaging is a rather nasty tease: >> Our user installs guix/guixSD, does 'guix pull' & 'guix-edit', and what >> do they get? >> >> READ-ONLY source in an editor that BEEPS when they TRY TO CHANGE IT :-( >> >> Right out of the box this seem contrary to the Guix promise of _freedom_ >> and _hackability_. > > True, “guix edit” could do better, e.g. create a new package variant in > a user module that inherits from the given package and puts the cursor > in the right spot to make changes right there. Upon saving, the package > could be used right away with GUIX_PACKAGE_PATH. > > I think that a first step towards improving the experience with “guix > pull” is to build Guix continuously on Hydra and tell “guix pull” to > download that. Users would no longer have to wait for compilation on > their local machines, removing a big incentive to go with a git > checkout. Maybe we should do this first to stop the worst problems, > buying us a bit more time to implement channels. +1 ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-16 20:56 ` Maxim Cournoyer @ 2017-05-18 13:54 ` Katherine Cox-Buday 2017-05-18 15:08 ` Ludovic Courtès 0 siblings, 1 reply; 57+ messages in thread From: Katherine Cox-Buday @ 2017-05-18 13:54 UTC (permalink / raw) To: Maxim Cournoyer; +Cc: guix-devel, myglc2 Maxim Cournoyer <maxim.cournoyer@gmail.com> writes: >> I think that a first step towards improving the experience with “guix >> pull” is to build Guix continuously on Hydra and tell “guix pull” to >> download that. Users would no longer have to wait for compilation on >> their local machines, removing a big incentive to go with a git >> checkout. Maybe we should do this first to stop the worst problems, >> buying us a bit more time to implement channels. > > +1 +1. I have recently been considering setting up a mirror so that my various machines running Guix don't all have to compile the same thing. If pull worked like this, I probably wouldn't have to. One question: for packages I really care about, how would I get the latest/greatest? guix pull; guix package --fallback -u foo? -- Katherine ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-18 13:54 ` Katherine Cox-Buday @ 2017-05-18 15:08 ` Ludovic Courtès 0 siblings, 0 replies; 57+ messages in thread From: Ludovic Courtès @ 2017-05-18 15:08 UTC (permalink / raw) To: Katherine Cox-Buday; +Cc: guix-devel, myglc2, Maxim Cournoyer Hi, Katherine Cox-Buday <cox.katherine.e@gmail.com> skribis: > One question: for packages I really care about, how would I get the > latest/greatest? guix pull; guix package --fallback -u foo? Yes, that should work. Normally you won’t even need --fallback, which papers over issues with our infrastructure, which should be fixed now. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-16 15:55 ` Ricardo Wurmus 2017-05-16 20:56 ` Maxim Cournoyer @ 2017-05-17 12:45 ` Ludovic Courtès 2017-05-17 17:54 ` myglc2 2017-05-17 16:06 ` myglc2 2 siblings, 1 reply; 57+ messages in thread From: Ludovic Courtès @ 2017-05-17 12:45 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel, myglc2 Ricardo Wurmus <rekado@elephly.net> skribis: > I think that a first step towards improving the experience with “guix > pull” is to build Guix continuously on Hydra and tell “guix pull” to > download that. Users would no longer have to wait for compilation on > their local machines, removing a big incentive to go with a git > checkout. Maybe we should do this first to stop the worst problems, > buying us a bit more time to implement channels. That’s probably what we’ll do next. But remember that users will still have to compute the derivation for that Guix, which in turn should allow them to get the corresponding substitute, and computing that derivation is currently relatively costly since you need to compile or interpret a subset of the Guix code. Ludo’. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-17 12:45 ` Ludovic Courtès @ 2017-05-17 17:54 ` myglc2 0 siblings, 0 replies; 57+ messages in thread From: myglc2 @ 2017-05-17 17:54 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel On 05/17/2017 at 14:45 Ludovic Courtès writes: > Ricardo Wurmus <rekado@elephly.net> skribis: > >> I think that a first step towards improving the experience with “guix >> pull” is to build Guix continuously on Hydra and tell “guix pull” to >> download that. Users would no longer have to wait for compilation on >> their local machines, removing a big incentive to go with a git >> checkout. Maybe we should do this first to stop the worst problems, >> buying us a bit more time to implement channels. > > That’s probably what we’ll do next. But remember that users will still > have to compute the derivation for that Guix, which in turn should allow > them to get the corresponding substitute, and computing that derivation > is currently relatively costly since you need to compile or interpret a > subset of the Guix code. > > Ludo’. This hints at the weirdly "re-entrant nature" of guix. And I mean that in the most friendly way possible ;-) I just wish I understood this aspect of guix better. Do we have a diagram? Could we produce one? I sure would like to see it, or even help make it. Any suggestions along this line would be welcome. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-16 15:55 ` Ricardo Wurmus 2017-05-16 20:56 ` Maxim Cournoyer 2017-05-17 12:45 ` Ludovic Courtès @ 2017-05-17 16:06 ` myglc2 2017-05-17 17:46 ` myglc2 2 siblings, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-17 16:06 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel On 05/16/2017 at 17:55 Ricardo Wurmus writes: > myglc2 <myglc2@gmail.com> writes: > >> I believe there will be many guix "users" that want to run from git >> checkout. They just may not know it, yet. They will want it not just >> because they are trying to get around the limitations of git pull. For >> example, even users that don't do development have occasion to... >> >> - select non-stock package config options >> >> - need/apply/use patches from guix developers >> >> - need/apply/use patches from package developers >> >> - need/apply/use some crazy stuff from a friend > > For those things I believe it to be better to use the package rewriting > framework, i.e. *adding* package variants that have additional patches > or modified configuration options. I don't follow you. Are you talking about (guix) Defining Packages ... -- Scheme Procedure: package-input-rewriting REPLACEMENTS [REWRITE-NAME] ... or something else? > Using the git checkout directly comes with too many disadvantages for > users who are not developers. Git’s UI is famously weird, and there > hardly is anyone who really loves it. Agreed. But I am not saying you should force guix users to learn git. I mean you should leverage git to make guix better. For example, Homebrew (https://github.com/Homebrew) users don't know anything about git. > Using the git checkout also requires the use of “make clean-go” whenever > the ABI changes, and occasionally even necessitates re-bootstrapping, or > in the case of upgrading to Guile 2.2 re-configuration. These are shortcomings in how guix uses git, not problems with git itself. Changes in the way guix uses git can overcome these. >> Furthermore, ISTM that current guix packaging is a rather nasty tease: >> Our user installs guix/guixSD, does 'guix pull' & 'guix-edit', and what >> do they get? >> >> READ-ONLY source in an editor that BEEPS when they TRY TO CHANGE IT :-( >> >> Right out of the box this seem contrary to the Guix promise of _freedom_ >> and _hackability_. > > True, “guix edit” could do better, e.g. create a new package variant in > a user module that inherits from the given package and puts the cursor > in the right spot to make changes right there. Upon saving, the package > could be used right away with GUIX_PACKAGE_PATH. OK, you are jumping to an implementation that uses GUIX_PACKAGE_PATH. I am saying you should consider whether an implementation of guix-edit based on git may be better. Confession: I don't use GUIX_PACKAGE_PATH and probably never will: The GUIX_PACKAGE_PATH as described in the doc has multiple issues. The fact that it is mentioned 7 times in guix.texi is one indication of the problem. But the killer is the inherent problem of consistency between guix and code on the GUIX_PACKAGE_PATH. Someone trying to use GUIX_PACKAGE_PATH to share work with someone else is in for a word or hurt. IMO a better alternative is git submodules and private git branches. > I think that a first step towards improving the experience with “guix > pull” is to build Guix continuously on Hydra and tell “guix pull” to > download that. Users would no longer have to wait for compilation on > their local machines, removing a big incentive to go with a git > checkout. Maybe we should do this first to stop the worst problems, > buying us a bit more time to implement channels. I have been actively using guix pull and git pull for the last year. My "hillbilly impression" is that the problem with hydra that it is almost always either - "ahead" of the user (e.g., files that the user needs are no longer in hydra's store) or - "behind" the user (e.g. a developer that has just pulled someone else's commit, which aren't built yet). Can't the "ahead" problem be fixed by just saving everything hydra has ever built? Disks are cheap aren't they? As regards the "behind" problem, can't this be fixed by having 'guix pull' deliver only the git commits that are completely built? - George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-17 16:06 ` myglc2 @ 2017-05-17 17:46 ` myglc2 2017-05-17 23:45 ` Leo Famulari 0 siblings, 1 reply; 57+ messages in thread From: myglc2 @ 2017-05-17 17:46 UTC (permalink / raw) To: Ricardo Wurmus; +Cc: guix-devel Oops, sent before done, please see corrections ... On 05/17/2017 at 12:06 myglc2 writes: > On 05/16/2017 at 17:55 Ricardo Wurmus writes: > >> myglc2 <myglc2@gmail.com> writes: >> >>> I believe there will be many guix "users" that want to run from git >>> checkout. They just may not know it, yet. They will want it not just >>> because they are trying to get around the limitations of git pull. For >>> example, even users that don't do development have occasion to... >>> >>> - select non-stock package config options >>> >>> - need/apply/use patches from guix developers >>> >>> - need/apply/use patches from package developers >>> >>> - need/apply/use some crazy stuff from a friend >> >> For those things I believe it to be better to use the package rewriting >> framework, i.e. *adding* package variants that have additional patches >> or modified configuration options. > > I don't follow you. Are you talking about (guix) Defining Packages ... > > -- Scheme Procedure: package-input-rewriting REPLACEMENTS > [REWRITE-NAME] > > ... or something else? > >> Using the git checkout directly comes with too many disadvantages for >> users who are not developers. Git’s UI is famously weird, and there >> hardly is anyone who really loves it. > > Agreed. But I am not saying you should force guix users to learn git. I > mean you should leverage git to make guix better. For example, Homebrew > (https://github.com/Homebrew) users don't know anything about git. > >> Using the git checkout also requires the use of “make clean-go” whenever >> the ABI changes, and occasionally even necessitates re-bootstrapping, or >> in the case of upgrading to Guile 2.2 re-configuration. > > These are shortcomings in how guix uses git, not problems with git > itself. Changes in the way guix uses git can overcome these. > >>> Furthermore, ISTM that current guix packaging is a rather nasty tease: >>> Our user installs guix/guixSD, does 'guix pull' & 'guix-edit', and what >>> do they get? >>> >>> READ-ONLY source in an editor that BEEPS when they TRY TO CHANGE IT :-( >>> >>> Right out of the box this seem contrary to the Guix promise of _freedom_ >>> and _hackability_. >> >> True, “guix edit” could do better, e.g. create a new package variant in >> a user module that inherits from the given package and puts the cursor >> in the right spot to make changes right there. Upon saving, the package >> could be used right away with GUIX_PACKAGE_PATH. > > OK, you are jumping to an implementation that uses GUIX_PACKAGE_PATH. I > am saying you should consider whether an implementation of guix-edit > based on git may be better. > > Confession: I don't use GUIX_PACKAGE_PATH and probably never will: The > GUIX_PACKAGE_PATH as described in the doc has multiple issues. The fact > that it is mentioned 7 times in guix.texi is one indication of the > problem. But the killer is the inherent problem of consistency between > guix and code on the GUIX_PACKAGE_PATH. Someone trying to use > GUIX_PACKAGE_PATH to share work with someone else is in for a word or > hurt. > > IMO a better alternative is git submodules and private git branches. > >> I think that a first step towards improving the experience with “guix >> pull” is to build Guix continuously on Hydra and tell “guix pull” to >> download that. Users would no longer have to wait for compilation on >> their local machines, removing a big incentive to go with a git >> checkout. Maybe we should do this first to stop the worst problems, >> buying us a bit more time to implement channels. Are you saying that users currently use the git checkout so they can "stay put" on an old commit? Are you saying that the version delivered by guix pull should be delayed WRT the most current guix git repo master commit to allow hydra to complete the build? If so +1 > I have been actively using guix pull and git pull for the last year. My > "hillbilly impression" is that the problem with hydra that it is almost > always either [...] - behind: user guix version is old and no longer in hydra's store - ahead: user just did 'guix pull' but hydra hasn't build it. I think you addressed this above - new-commit: a developer has done git pull and hydra hasn't looked at it yet - patch: a developer applies a patch from another developer ISTM these can be addressed ... - behind: save everything hydra builds, or at least the last few installation images. Can't we just accomplish this by never doing "guix gc" on hydra? - new-commit: Here we want hydra to build every commit that lands in the guix git repo, prioritizing some branches (e.g. master) over others. An approach that splits hydra's resources between building for ahead and new-commit branches would be very nice to have, EH? ;-) WDYT? - George ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] 2017-05-17 17:46 ` myglc2 @ 2017-05-17 23:45 ` Leo Famulari 0 siblings, 0 replies; 57+ messages in thread From: Leo Famulari @ 2017-05-17 23:45 UTC (permalink / raw) To: myglc2; +Cc: guix-devel On Wed, May 17, 2017 at 01:46:16PM -0400, myglc2 wrote: > ISTM these can be addressed ... > > - behind: save everything hydra builds, or at least the last few > installation images. Can't we just accomplish this by never doing > "guix gc" on hydra? We need more storage! > - new-commit: Here we want hydra to build every commit that lands in the > guix git repo, prioritizing some branches (e.g. master) over others. We need more computational power, especially in non-Intel-compatible architectures (ARM 32 and 64-bit, and MIPS). Also, if we did something like this, we would not want to build from every commit. Perhaps every push. And only for master; branches like core-updates tend to collect untested patches for a while before we start trying to build the branch. There's no point trying to build every package from branches in that state. ^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: ‘guix pull’ vs. transition to Guile 2.2 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès 2017-04-23 14:09 ` Jan Nieuwenhuizen 2017-05-09 21:22 ` Heads-up: " Ludovic Courtès @ 2017-05-12 5:41 ` Chris Marusich 2 siblings, 0 replies; 57+ messages in thread From: Chris Marusich @ 2017-05-12 5:41 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 2545 bytes --] ludo@gnu.org (Ludovic Courtès) writes: > Hello Guix! > > ludo@gnu.org (Ludovic Courtès) skribis: > >> As of commit 608e42e7c92114497e7908980424288079acee1e, Guix builds with >> Guile 2.2 (to be released sometime within the next 24 hours) and the >> whole test suite passes. >> >> All the dependencies of Guix except Guile-SSH (optional; use for >> offloading and for ‘guix copy’) are already compatible with Guile 2.2. > > With the attached patch, the ‘guix’ package is built against Guile 2.2. > I’m running it on my GuixSD machine, and it works like a charm! > > There’s a problem though, called “guix pull”. ~/.config/guix/latest > currently contains 2.0 .go files. Thus after reconfiguring GuixSD to > use Guix-for-2.2, running ‘guix’ typically gives loads of warnings like: > > ;;; WARNING: loading compiled file > /home/ludo/.config/guix/latest/guix/derivations.go failed: > ;;; ERROR: In procedure load-thunk-from-memory: No such file or directory > > The fix is for ‘guix pull’ to build with Guile 2.2 when that’s what > we’re running. For that, build-self.scm must be sure it can get the > ‘guile2.2-ssh’ package when we’re on 2.2, or it will fail to compile the > new Guix. However, ‘guile2.2-ssh’ appeared a day ago, so it’s missing > from most installations… > > In short, ‘guix pull’ is broken in a way that may practically prevent it > from handling the 2.0-to-2.2 transition. The risk is that ‘guix pull’ > will fail to upgrade, preventing users from upgrading Guix altogether. > To work around that, people will have to use a Git checkout of Guix. Of > course that’s what many of us already do, but still. > > Maybe the upcoming release is a good time to make that transition: at > least people installing GuixSD or Guix from that release will already be > on 2.2 and won’t have problems from there on. > > Thoughts? Ideas? > > We all know it, but it’s really really time to fix ‘guix pull’… For what it's worth, I ran guix pull on my GuixSD machine today (as root and as my normal user). Everything seems to work just fine. I'm currently running 'guix system reconfigure', but since substitutes aren't available, it's building a lot of stuff from source, so who knows how long it'll take. I'll let you know if I encounter any problems. I've also run guix pull (again, as root and also as my normal user) on my Ubuntu machine, and again everything seems fine. So far so good! :-) -- Chris [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply [flat|nested] 57+ messages in thread
end of thread, other threads:[~2017-05-19 8:58 UTC | newest] Thread overview: 57+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-03-15 16:13 Ready for Guile 2.2! Ludovic Courtès 2017-03-15 20:33 ` Pjotr Prins 2017-03-15 20:41 ` Ludovic Courtès 2017-04-20 12:35 ` Ludovic Courtès 2017-04-20 13:10 ` Andy Wingo 2017-04-20 15:21 ` Maxim Cournoyer 2017-04-21 16:05 ` Joshua Branson 2017-04-22 22:20 ` Ludovic Courtès 2017-04-21 21:03 ` Ludovic Courtès 2017-04-24 1:31 ` Maxim Cournoyer 2017-04-21 21:14 ` Ludovic Courtès 2017-03-31 16:34 ` Ludovic Courtès 2017-04-22 22:34 ` ‘guix pull’ vs. transition to Guile 2.2 Ludovic Courtès 2017-04-23 14:09 ` Jan Nieuwenhuizen 2017-04-27 13:25 ` Ludovic Courtès 2017-05-09 21:22 ` Heads-up: " Ludovic Courtès 2017-05-09 22:26 ` myglc2 2017-05-10 12:05 ` Ludovic Courtès 2017-05-10 17:11 ` myglc2 2017-05-11 0:40 ` myglc2 2017-05-11 8:29 ` Ludovic Courtès 2017-05-11 8:50 ` Vincent Legoll 2017-05-11 20:53 ` Ludovic Courtès 2017-05-11 11:53 ` myglc2 2017-05-11 17:48 ` ng0 2017-05-11 18:17 ` ng0 2017-05-11 20:49 ` Adonay Felipe Nogueira 2017-05-12 8:11 ` Chris Marusich 2017-05-18 12:32 ` ng0 2017-05-14 13:50 ` Pjotr Prins 2017-05-14 15:35 ` Pjotr Prins 2017-05-14 16:13 ` Pjotr Prins 2017-05-14 16:28 ` Jan Nieuwenhuizen 2017-05-14 17:29 ` pjotr.public12 2017-05-14 18:30 ` Creating a reliable bootstrap for building from source Pjotr Prins 2017-05-14 21:32 ` Ludovic Courtès 2017-05-15 1:20 ` David Pirotte 2017-05-15 13:27 ` Ludovic Courtès 2017-05-15 7:35 ` Pjotr Prins 2017-05-15 13:28 ` Ludovic Courtès 2017-05-17 7:47 ` Pjotr Prins 2017-05-19 8:58 ` Ludovic Courtès 2017-05-17 7:52 ` Pjotr Prins 2017-05-14 21:28 ` Heads-up: transition to Guile 2.2 Ludovic Courtès 2017-05-15 7:26 ` Pjotr Prins 2017-05-15 15:48 ` Ludovic Courtès 2017-05-15 20:24 ` Rethinking guix pull [was Re: Heads-up: transition to Guile 2.2] myglc2 2017-05-16 15:55 ` Ricardo Wurmus 2017-05-16 20:56 ` Maxim Cournoyer 2017-05-18 13:54 ` Katherine Cox-Buday 2017-05-18 15:08 ` Ludovic Courtès 2017-05-17 12:45 ` Ludovic Courtès 2017-05-17 17:54 ` myglc2 2017-05-17 16:06 ` myglc2 2017-05-17 17:46 ` myglc2 2017-05-17 23:45 ` Leo Famulari 2017-05-12 5:41 ` ‘guix pull’ vs. transition to Guile 2.2 Chris Marusich
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).