Re: sbuild on hurd-amd64...

Samuel Thibault <[email protected]>
Newsgroups gmane.linux.debian.ports.hurd
Organization I am not organized
Message-ID <aLw3eq-m94FDsDm5@begin>
Johannes Schauer Marin Rodrigues, le sam. 06 sept. 2025 13:38:17 +0200, a ecrit:
> Quoting Samuel Thibault (2025-09-06 07:52:42)
> > Johannes Schauer Marin Rodrigues, le sam. 06 sept. 2025 03:08:50 +0200, a ecrit:
> > > > > Also, can we tell mmdebstrap to use the normal chroot instead of
> > > > > fakechroot? chroot() is not a privileged operation in the Hurd.
> > > > Oh, I wasn't aware of that!
> > > 
> > > Yes. If you have privileges to chroot(), you can just use --mode=root.
> > 
> > But currently none of the expected ways work as non-root:
> > 
> > $ mmdebstrap --mode=root --variant=required --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg '' foo.tar.gz 'deb http://deb.debian.org/debian-ports unreleased main' 'deb http://deb.debian.org/debian-ports/ unstable main'
> > E: need to be root
> 
> Would/should the above work as the non-root user on hurd?

Well, I don't know the exact intention of --mode=root :)

What I was understanding is that it is a mode that uses an actual root
uid, not faking root.

But I also read that it uses chroot, which is what we'd want to use on
the Hurd, but along with an additionnal fakeroot-hurd, which would
rather be the fakeroot mode.

> > with additionnal fakeroot-hurd:
> > $ fakeroot-hurd mmdebstrap --mode=root --variant=required --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg '' foo.tar.gz 'deb http://deb.debian.org/debian-ports unreleased main' 'deb http://deb.debian.org/debian-ports/ unstable main' 
> > Undefined subroutine &main::SYS_capget called at /usr/bin/mmdebstrap line 6081.
> > /bin/fakeauth: Error 255 for child 23498
> > /bin/settrans: Error 255 for child 23497
> 
> This is because in Linux it is possible to be uid 0 but still not be able to
> mount anything. The above uses the capget and later the prctl syscalls to
> figure out whether mounting is possible or not.
> 
> We can do multiple things here:
> 
>  * it seems there is no capget on hurd, so mmdebstrap should not even attempt
>    this codepath on hurd

Yes.

>  * instead, maybe a different check can/should be performed on hurd but i
>    don't know enough hurd to implement this

I don't think there is any check need: you can always mount something
the hurd. The translator will run under the user identity, simply.

> > $ mmdebstrap --mode=fakeroot --variant=required --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg '' foo.tar.gz 'deb http://deb.debian.org/debian-ports unreleased main' 'deb http://deb.debian.org/debian-ports/ unstable main' 
> > E: need working fakechroot binary
> > 
> > on GNU/Hurd it should be using chroot instead of using the fragile
> > fakechroot. I had tried to create a hurdish fakechroot that just calls
> > chroot(), but apparently mmdebstrap is expecting various fakechroot
> > environment variables, I didn't easily manage to find out what.
> 
> Instead of you creating a fakechroot for hurd which is close enough to the
> fakechroot on linux, lets instead fix mmdebstrap to do the right thing on
> hurd out-of-the-box. I'll gladly accept patches!

I don't really know where one would tell mmdebstrap to just use chroot.

> I can easily implement the --skip=... options mentioned above but I'll need
> help with adding hurd-specific things.

I don't think there is really much hurd-specific. Really I believe it's
just about calling fakeroot-hurd and chroot, just like you would use
fakeroot + chroot on linux.

Samuel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.