[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Setting up a Hurd build node
From: |
Ricardo Wurmus |
Subject: |
Re: Setting up a Hurd build node |
Date: |
Wed, 08 May 2019 00:12:12 +0200 |
User-agent: |
mu4e 1.2.0; emacs 26.2 |
Ludovic Courtès <address@hidden> writes:
> Hello,
>
> Ricardo Wurmus <address@hidden> skribis:
>
>> I just built Guix in a Debian GNU/Hurd VM and wanted to set it up as a
>> build node. I applied a patch to use the i586-gnu bootstrap binaries
>> from my previous attempt in late 2018, which are published at
>> https://berlin.guixsd.org/guix/bootstrap/i586-gnu/20180908/. These were
>> built with the old patched glibc 2.23. (The patch to add the bootstrap
>> binaries is 3.5MB in size because it includes the statically linked
>> binaries, so I’m not attaching it here.)
>
> I think we should fix our cross-compiled bootstrap Guile so we can
> finally upload bootstrap binaries to ftp.gnu.org:
>
> https://issues.guix.info/issue/34427
> https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00364.html
The new cross-compiled bootstrap Guile is 2.2; for older architectures
it’s 2.0.
I made it work simply by changing all references to “2.0” in “raw-build”
of (gnu packages bootstrap) to “2.2” because the bootstrap Guile really
is version 2.2. Prior to that the bootstrap Guile would segfault.
>> address@hidden:~/guix-1.0.0# ./pre-inst-env guix-daemon
>> --build-users-group=guixbuild --disable-chroot &
>> address@hidden:~/guix-1.0.0# ./pre-inst-env guix build -S hello
>> madvise failed: Function not implemented
>
> This warning comes from Guile; it’s fixed in our guile 2.2 package and
> upstream.
>
>> The following derivation will be built:
>> /gnu/store/qihk8cf98xqc7q577wb2nc5axy2ryp8m-hello-2.10.tar.gz.drv
>> error: cannot kill processes for uid `999': Operation not permitted
>> guix build: error: cannot kill processes for uid `999': failed with exit
>> code 1
>
> EPERM comes from ‘waitpid’; weird!
>
>> Uid 999 belongs to guixbuilder01. (The gid for the guixbuild group is
>> also 999.)
I punted by running the daemon with only “guix-daemon --disable-chroot”,
no build users group at all. Of course, perform-download doesn’t like
that we’re downloading things as root, so I disabled the assertion…
>> I also tried building “hello”, but I only get the message
>>
>> madvise failed: Function not implemented
>>
>> printed endlessly. (This is probably harmless, but nothing else
>> happens.)
>
> Looks like the bootstrap Guile is broken somehow.
I replaced the bootstrap binaries with more recent ones. I also had to
disable set-thread-name (because the Hurd doesn’t have it) and took a
step back to build something simpler:
/pre-inst-env guix build -e '(@@ (gnu packages commencement)
gnu-make-boot0))'
This eventually calls
/gnu/store/dqlhjyvg0n8v1kdvwfpliqy46n7kpjqb-bootstrap-binaries-0/bin/tar
cvfa \
/gnu/store/p278mqb3aa0xrkrrw4rg1fxbb19hbdyh-make-4.2.1.tar.xz \
address@hidden --owner=root --group=root --sort=name \
make-4.2.1
which segfaults. Turns out that it doesn’t segfault after removing
address@hidden from the arguments.
Weird! This is all very familiar, because that’s where I stopped when I
last tried all of this. I gave up when I couldn’t figure out why tar
segfaulted.
--
Ricardo