Subject: Re: bug#50568: Missing source code

From: "pelzflorian (Florian Pelz)" <[email-masked]>
Date: Tue, 21 Sep 2021 18:34:35 +0200

On Tue, Sep 21, 2021 at 12:28:50PM +0200, pelzflorian (Florian Pelz) wrote:
> On Mon, Sep 20, 2021 at 09:25:27AM +0200, Ludovic Courtès wrote:
> > To test it, you can first start the new daemon, along these lines:
> > 
> >   sudo herd stop guix-daemon
> >   sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
> 
> No, going back one generation and guix gc -D’ing the
> /gnu/store/*hello-2.10* after adding web.archive.org to /etc/hosts
> again, I for some reason get a
> 
> florian@florianacer ~$ bzcat /var/log/guix/drvs/wy/24jyd0mm2jlgpzsxxlip03df065g35-hello-2.10.tar.gz.drv.bz2
> error: failed to run download program '/home/florian/src/guix/scripts/guix': Keine Berechtigung
> 
> (Keine Berechtigung is German for Permission denied) but it does not
> matter, since the reconfigure and reboot works when and only when
> adding web.archive.org to /etc/hosts.
> 
> Actually I will later take another look at this, because the manual
> says ./pre-inst-env guix-daemon should work.

There is no regression.  Without the web.archive.org patch,
`guix install hello' via

sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild

always shows the same error, regardless of whether I misdirected DNS
lookups or not.  The patch is not at fault.  Though I don’t know why.

sudo -E strace -f ./pre-inst-env guix-daemon --build-users-group=guixbuild

shows

[pid  1854] execve("/home/florian/src/guix/scripts/guix", ["guix", "perform-download", "/gnu/store/wy24jyd0mm2jlgpzsxxli"..., "/gnu/store/hbdalsf5lpf01x4dcknwx"...], 0x1d8f9a0 /* 80 vars */) = -1 EACCES (Keine Berechtigung)

<https://pubs.opengroup.org/onlinepubs/9699919799/> says:
> The exec functions shall fail if:
> …
> [EACCES]
>     The new process image file is not a regular file and the implementation does not support execution of files of its type.
> The exec functions, except for fexecve(), shall fail if:
> [EACCES]
>     Search permission is denied for a directory listed in the new process image file's path prefix, or the new process image file denies execution permission.

I run:
florian@florianacer ~$ ls -ahl /home/florian/src/guix/scripts/guix
-r-xr-xr-x 1 florian users 2,0K 21. Sep 07:30 /home/florian/src/guix/scripts/guix
florian@florianacer ~$ ls -ahl /home/florian/src/guix | grep scripts
drwxr-xr-x  2 florian users 4,0K 21. Sep 07:30 scripts/
florian@florianacer ~$ lsattr /home/florian/src/guix/scripts/guix
--------------e----- /home/florian/src/guix/scripts/guix
florian@florianacer ~ [env]$ cat test-execv.c
#include <unistd.h>

int main ()
{
  const char *const argv[] =
    {
      "guix", "perform-download",
      "/gnu/store/wy24jyd0mm2jlgpzsxxlip03df065g35-hello-2.10.tar.gz.drv",
      "/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz.lock",
      NULL
    };

  execv ("/home/florian/src/guix/scripts/guix", (char *const *) argv);

  return 0;
}
florian@florianacer ~ [env]$ gcc test-execv.c -o test-execv
florian@florianacer ~ [env]$ LC_ALL=en_US.utf8 ~/test-execv

Starting download of /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz.lock
From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz...
following redirection to `https://ftp.wayne.edu/gnu/hello/hello-2.10.tar.gz'...
In procedure open-file: Read-only file system: "/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz.lock"
[and more expected failures …]

Whatever.  It is not important.

Regards,
Florian