Subject: Re: bug#77296: guix fails tests on aarch64 after rootless daemon patches

From: Ludovic Courtès <[email-masked]>
Date: Mon, 31 Mar 2025 10:34:32 +0200

Hi Efraim,

Efraim Flashner <[email-masked]> skribis:

> I bumped the guix package locally and tried to build it on several
> architectures. x86_64 and i686 passed, aarch64 failed.  The rest are
> still building.

The issue is:

--8<---------------cut here---------------start------------->8---
guix build: error: while setting up the build environment: cannot set loopback interface flags: Operation not permitted

[...]

command "make" "check" failed with status 2
build process 6 exited with status 256
builder for `/gnu/store/8vpl8gv7nmvlpghk9vmx4xs5z3c8dw8j-guix-1.4.0-35.a9239a7.drv' failed with exit code 1
@ build-failed /gnu/store/8vpl8gv7nmvlpghk9vmx4xs5z3c8dw8j-guix-1.4.0-35.a9239a7.drv - 1 builder for `/gnu/store/8vpl8gv7nmvlpghk9vmx4xs5z3c8dw8j-guix-1.4.0-35.a9239a7.drv' failed with exit code 1
--8<---------------cut here---------------end--------------->8---

… coming from this bit in ‘build.cc’:

        if (!fixedOutput) {
            /* Initialise the loopback interface. */
            AutoCloseFD fd(socket(PF_INET, SOCK_DGRAM, IPPROTO_IP));
            if (fd == -1) throw SysError("cannot open IP socket");

            struct ifreq ifr;
            strcpy(ifr.ifr_name, "lo");
            ifr.ifr_flags = IFF_UP | IFF_LOOPBACK | IFF_RUNNING;
            if (ioctl(fd, SIOCSIFFLAGS, &ifr) == -1)
                throw SysError("cannot set loopback interface flags");

            fd.close();
        }

I don’t see why this would be architecture-dependent but I’ll
investigate.

Thanks,
Ludo’.