guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Heads-up: transition to Guile 2.2


From: Pjotr Prins
Subject: Re: Heads-up: transition to Guile 2.2
Date: Mon, 15 May 2017 09:26:26 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]