[PATCH 00/94] Porting Gentoo to the Hurd
Sam James <[email protected]>
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
[Announcement accompanies https://www.gentoo.org/news/2026/04/01/gentoo-hurd.html]
The year is 2026 and Gentoo is perhaps ready for an advanced kernel:
the GNU Hurd.
crossdev support came first and then I couldn't help myself with going
further :)
All of this has been committed over the last ~2.5 weeks but bringing
it here as both a formal announcement and as a promise to (eventually)
post the new profiles here, but didn't want to do that too early.
Scripts to build a working image that can be booted in QEMU can be
found at https://codeberg.org/thesamesam/gentoo-hurd (will move that to
Gentoo infra).
There's plenty to do yet, see TODO in that repo for a start, but it's
gone further than I thought it would in the beginning.
The project has been a good outlet to relax and I hope others will
find some joy in it too. There's no pressure to move quickly and that's
part of the reward from working on this: "we get there when we get there".
The Hurd has many interesting properties, and a surprising amount Just Works;
you can say many thing about the Hurd, but I defy you to say it's in any way
boring.
Acknowledgements:
* dilfridge, csfore, nekobit, and navi: for the help, encouragement,
and contributions so far.
* GNU Hurd community: for patiently answering questions.
* Debian GNU/Hurd and Guix: for being a source of work to borrow!
* those who led or contributed to prior efforts to port Gentoo to the Hurd:
* https://web.archive.org/web/20100109161805/http://www.mundurat.net/ggh/
* https://web.archive.org/web/20060103233551/http://hurd.rustedhalo.net/about.php
* https://github.com/matijaskala/hurd
* https://github.com/trofi/gentoo-hurd (https://trofi.github.io/posts/208-crossdev-and-gnu-hurd.html)
* https://github.com/alexxy/gentoo-hurd
A new Gentoo project has been established (https://wiki.gentoo.org/wiki/Project:Hurd),
with an IRC channel too (#gentoo-hurd).
Enjoy, have fun with it, and be prepared for it to be a bit bumpy.
Andreas K. Hüttel (12):
sys-libs/glibc: minor adaptions for hurd
profiles, hurd, amd64: use lib64
sys-libs/glibc: minor adaptions for hurd
sys-libs/glibc: more hurd fixes
sys-libs/glibc: more hurd fixes, now amd64
sys-libs/glibc: hurd linkage patch now in gentoo patchset
sys-libs/glibc: add hurd -march=native workaround
sys-power/libacpica: Adapt to creative variable names in Makefile
sys-kernel/rumpkernel: Fix installation libdir
dev-util/mig: improve dependencies
net-libs/libtirpc: fix build for hurd
app-text/opensp: fix build with Hurd
Christopher Fore (2):
cmake.eclass: Add Hurd support
profiles/default/hurd: Mask debuginfod
Hyland B. (1):
sys-kernel/rumpkernel: new package, add 0_p20250111_p6, add 9999
Ionen Wolkens (1):
sys-apps/util-linux: use kernel_Hurd rather than *-gnu
Sam James (77):
sys-kernel/gnumach: new package, add 1.8, 1.8_p20260224, 9999
sys-kernel/hurd: new package, add 0.9, 0.9_p20251029, 9999
sys-libs/glibc: prepare for GNU Hurd
sys-kernel/gnumach: drop 1.8
dev-util/mig: drop 1.8
sys-kernel/hurd: drop 0.9
meson.eclass: recognise *-gnu as GNU Hurd
x11-libs/libpciaccess: add static-libs for GNU Hurd
dev-lang/perl: recognise *-gnu as GNU Hurd
sys-apps/util-linux: adapt to GNU Hurd
sys-process/psmisc: port to GNU Hurd
virtual/logger: allow net-misc/inetutils[syslogd]
app-misc/screen: fix pty.h patch for GNU Hurd
sys-kernel/gnumach: update DESCRIPTION
sys-kernel/gnumach: replace -ggdb* with -g, not -g1
sys-libs/glibc: avoid -g3 on Hurd
sys-kernel/hurd: fix headers-only condition
sys-kernel/hurd: make libxkbcommon support optional
sys-libs/glibc: link to Hurd userland libraries
sys-apps/util-linux: fix CHOST check
sys-kernel/hurd: fix build w/ glibc-2.43
profiles: add kernel_Hurd
sys-apps/shadow: port to GNU Hurd
sys-process/procps: port to GNU Hurd
dev-debug/gdb: port to GNU Hurd
sys-apps/openrc: port to GNU Hurd
app-misc/screen: fix Hurd build (PATH_MAX)
sys-apps/sysvinit: port to Hurd
profiles: move Hurd masks to base/
sys-apps/portage: only depend on sandbox on linux
virtual/tmpfiles: don't require anything on non-Linux
sys-kernel/hurd: add USE=custom-cflags
sys-devel/crossdev: add 20260318
dev-libs/elfutils: port to Hurd
sys-apps/util-linux: port Hurd changes to live ebuild
app-shells/bash: fix PIPESIZE when cross-compiled to Hurd
profiles: add initial GNU Hurd profiles
profiles/default/hurd: set BRANDING_OS_*
profiles/default/hurd: mask USE=epoll
profiles/default/hurd: mask USE=eventfd
profiles/default/hurd: remove virtual/dev-manager from @system
dev-python/mypy: make dev-python/psutil an optfeature
sys-libs/glibc: fix symlink for x86 ld.so on Hurd
Revert "sys-libs/glibc: fix symlink for x86 ld.so on Hurd"
profiles/default/hurd: drop -openmp
app-arch/libarchive: fixup deps for Hurd
sys-libs/glibc: add extra Hurd patches
sys-libs/glibc: rebase Hurd patches (and reformat)
app-arch/unzip: port to Hurd
sys-kernel/hurd: disable _FORTIFY_SOURCE
sys-kernel/hurd: wire up rumpkernel support
sys-block/parted: add USE=static-libs, for Hurd
sys-kernel/hurd: wire up parted (for rump?)
sys-kernel/rumpkernel: don't assume x86
sys-kernel/rumpkernel: add missing dependencies
sys-kernel/rumpkernel: update comments for previous changes
sys-kernel/hurd: arrange to install libshouldbeinlibc for cross-*
sys-kernel/hurd: fix automagic xkb
sys-devel/crossdev: add 20260326
sys-kernel/hurd: build libirqhelp in cross minimal build
sys-libs/libacpica: new package, add 0_pre20220331_p6, 9999
sys-kernel/hurd: wire up sys-libs/libacpica support
sys-kernel/rumpkernel: rename 0_p -> 0_pre
sys-power/libacpica: rename from sys-libs/libacpica
profiles: mask sys-power/libacpica on non-Hurd
sys-kernel/hurd: improve comment wrt parted/rumpdisk
sys-kernel/hurd: add patch for libports assertion
sys-kernel/hurd: add commentary wrt cross hacks
sys-kernel/rumpkernel: add commentary wrt upstream situation
sys-kernel/rumpkernel: drop stale TODOs
sys-kernel/hurd: fix libdir for cross-*
go-env.eclass: support Hurd in GOOS
multilib.eclass: convert musl check to case statement
multilib.eclass: handle multilib on Hurd in multilib_env
Revert "multilib.eclass: handle multilib on Hurd in multilib_env"
app-arch/unzip: fix Hurd build
sys-kernel/hurd: don't pass -a to openrc-init
Swagtoy (1):
games-roguelike/nethack: GNU Hurd fixes; lex dependency
app-arch/libarchive/libarchive-3.8.6.ebuild | 9 +-
.../unzip/files/unzip-6.0-c99-configure.patch | 64 ++++++
app-arch/unzip/unzip-6.0_p29-r2.ebuild | 100 +++++++++
...creen-4.9.1-add-missing-pty.h-header.patch | 2 +-
.../files/screen-4.9.1-hurd-path-max.patch | 41 ++++
app-misc/screen/screen-4.9.1-r2.ebuild | 3 +-
app-shells/bash/bash-5.3_p9.ebuild | 16 ++
.../bash/bash-5.4_alpha_pre20251202.ebuild | 16 ++
app-shells/bash/bash-9999.ebuild | 16 ++
app-text/opensp/files/opensp-1.5.2-hurd.patch | 48 +++++
app-text/opensp/opensp-1.5.2-r10.ebuild | 3 +-
dev-debug/gdb/gdb-17.1.ebuild | 4 +
dev-debug/gdb/gdb-9999.ebuild | 4 +
dev-lang/perl/perl-5.42.0.ebuild | 5 +-
dev-libs/elfutils/elfutils-0.194-r2.ebuild | 161 ++++++++++++++
.../elfutils/files/elfutils-0.194-hurd.patch | 101 +++++++++
dev-python/mypy/mypy-1.19.1-r2.ebuild | 129 +++++++++++
dev-util/mig/Manifest | 1 -
dev-util/mig/mig-1.8.ebuild | 46 ----
dev-util/mig/mig-1.8_p20231217.ebuild | 12 +-
dev-util/mig/mig-9999.ebuild | 12 +-
eclass/cmake.eclass | 1 +
eclass/go-env.eclass | 1 +
eclass/meson.eclass | 1 +
eclass/multilib.eclass | 26 ++-
.../files/nethack-3.6.7-hurd-tparm.patch | 15 ++
...k-3.6.7-no-define-warn-unused-result.patch | 17 ++
.../files/nethack-3.6.7-path-max.patch | 15 ++
.../nethack/nethack-3.6.7-r1.ebuild | 159 ++++++++++++++
.../files/libtirpc-1.3.7-hurd-client.patch | 50 +++++
.../libtirpc/files/libtirpc-1.3.7-hurd.patch | 82 +++++++
.../files/libtirpc-1.3.7-nonlinux.patch | 107 ++++++++++
net-libs/libtirpc/libtirpc-1.3.7-r2.ebuild | 9 +-
profiles/base/make.defaults | 2 +-
profiles/base/package.mask | 8 +
profiles/base/use.mask | 1 +
.../alpha => default/hurd/amd64/23.0}/eapi | 0
.../default/hurd/amd64/23.0/make.defaults | 10 +
.../default/{linux => hurd}/amd64/23.0/parent | 0
.../{arch/alpha => default/hurd/amd64}/eapi | 0
profiles/default/hurd/amd64/package.mask | 10 +
profiles/default/hurd/amd64/package.use.mask | 18 ++
profiles/default/{linux => hurd}/amd64/parent | 0
profiles/{arch/alpha => default/hurd}/eapi | 0
profiles/default/hurd/make.defaults | 66 ++++++
profiles/default/hurd/package.mask | 15 ++
profiles/default/hurd/package.use | 35 +++
profiles/default/hurd/package.use.force | 6 +
profiles/default/hurd/package.use.mask | 79 +++++++
profiles/default/hurd/packages | 15 ++
profiles/default/hurd/packages.build | 41 ++++
profiles/default/hurd/use.force | 6 +
profiles/default/hurd/use.mask | 27 +++
.../alpha => default/hurd/x86/23.0}/eapi | 0
.../alpha => default/hurd/x86/23.0/i686}/eapi | 0
.../default/hurd/x86/23.0/i686/make.defaults | 6 +
.../{linux => hurd}/x86/23.0/i686/parent | 0
.../{linux/alpha => hurd/x86}/23.0/parent | 0
.../{arch/alpha => default/hurd/x86}/eapi | 0
profiles/default/hurd/x86/make.defaults | 8 +
profiles/default/hurd/x86/package.mask | 10 +
profiles/default/hurd/x86/package.use.mask | 22 ++
profiles/default/{linux => hurd}/x86/parent | 0
profiles/desc/kernel.desc | 3 +-
profiles/embedded/make.defaults | 2 +-
profiles/package.mask | 1 -
profiles/profiles.desc | 6 +
sys-apps/openrc/openrc-0.63-r1.ebuild | 11 +-
sys-apps/openrc/openrc-9999.ebuild | 11 +-
sys-apps/portage/portage-3.0.72-r1.ebuild | 8 +-
sys-apps/portage/portage-3.0.77-r1.ebuild | 8 +-
sys-apps/portage/portage-3.0.77-r3.ebuild | 8 +-
sys-apps/portage/portage-3.0.77.ebuild | 8 +-
sys-apps/portage/portage-9999.ebuild | 8 +-
sys-apps/shadow/shadow-4.14.8-r1.ebuild | 4 +-
sys-apps/shadow/shadow-4.14.8-r2.ebuild | 4 +-
sys-apps/shadow/shadow-4.14.8.ebuild | 4 +-
sys-apps/shadow/shadow-4.19.2.ebuild | 2 +-
sys-apps/shadow/shadow-4.19.3.ebuild | 9 +-
sys-apps/sysvinit/sysvinit-3.15.ebuild | 8 +-
...1.3.ebuild => util-linux-2.41.3-r1.ebuild} | 15 ++
sys-apps/util-linux/util-linux-9999.ebuild | 15 ++
sys-block/parted/parted-3.6-r2.ebuild | 6 +-
sys-devel/crossdev/Manifest | 2 +
sys-devel/crossdev/crossdev-20260318.ebuild | 46 ++++
sys-devel/crossdev/crossdev-20260326.ebuild | 46 ++++
sys-kernel/gnumach/Manifest | 1 +
.../gnumach/gnumach-1.8_p20260224.ebuild | 106 +++++++++
sys-kernel/gnumach/gnumach-9999.ebuild | 106 +++++++++
.../anope => sys-kernel/gnumach}/metadata.xml | 0
sys-kernel/hurd/Manifest | 1 +
.../files/hurd-0.9_p20251029-glibc-2.43.patch | 82 +++++++
..._p20251029-libports-iterate-refcount.patch | 21 ++
.../hurd-0.9_p20251029-openrc-init-no-a.patch | 10 +
.../files/hurd-0.9_p20251029-rump-link.patch | 20 ++
sys-kernel/hurd/hurd-0.9_p20251029.ebuild | 202 ++++++++++++++++++
sys-kernel/hurd/hurd-9999.ebuild | 201 +++++++++++++++++
sys-kernel/hurd/metadata.xml | 24 +++
sys-kernel/rumpkernel/Manifest | 1 +
...0_p20250111_p6-bsd-own-mk-no-sysroot.patch | 35 +++
.../rumpkernel}/metadata.xml | 0
.../rumpkernel-0_pre20250111_p6.ebuild | 199 +++++++++++++++++
sys-kernel/rumpkernel/rumpkernel-9999.ebuild | 199 +++++++++++++++++
.../glibc-2.43-hurd-CLOCK_MONOTONIC.patch | 100 +++++++++
.../files/glibc-2.43-hurd-ldconfig.patch | 45 ++++
.../files/glibc-2.43-hurd-link-helpers.patch | 34 +++
sys-libs/glibc/glibc-2.42-r5.ebuild | 161 +++++++++-----
sys-libs/glibc/glibc-2.43.ebuild | 193 ++++++++++++-----
sys-libs/glibc/glibc-9999.ebuild | 192 ++++++++++++-----
sys-power/libacpica/Manifest | 1 +
.../libacpica-0_pre20220331_p6.ebuild | 57 +++++
sys-power/libacpica/libacpica-9999.ebuild | 57 +++++
.../libacpica}/metadata.xml | 0
.../procps/files/procps-4.0.6-hurd.patch | 140 ++++++++++++
sys-process/procps/procps-4.0.6.ebuild | 21 ++
sys-process/psmisc/psmisc-23.7.ebuild | 6 +-
...{logger-0-r2.ebuild => logger-0-r3.ebuild} | 3 +-
...files-0-r5.ebuild => tmpfiles-0-r6.ebuild} | 10 +-
.../libpciaccess/libpciaccess-0.18.1.ebuild | 17 +-
119 files changed, 3842 insertions(+), 299 deletions(-)
create mode 100644 app-arch/unzip/files/unzip-6.0-c99-configure.patch
create mode 100644 app-arch/unzip/unzip-6.0_p29-r2.ebuild
create mode 100644 app-misc/screen/files/screen-4.9.1-hurd-path-max.patch
create mode 100644 app-text/opensp/files/opensp-1.5.2-hurd.patch
create mode 100644 dev-libs/elfutils/elfutils-0.194-r2.ebuild
create mode 100644 dev-libs/elfutils/files/elfutils-0.194-hurd.patch
create mode 100644 dev-python/mypy/mypy-1.19.1-r2.ebuild
delete mode 100644 dev-util/mig/mig-1.8.ebuild
create mode 100644 games-roguelike/nethack/files/nethack-3.6.7-hurd-tparm.patch
create mode 100644 games-roguelike/nethack/files/nethack-3.6.7-no-define-warn-unused-result.patch
create mode 100644 games-roguelike/nethack/files/nethack-3.6.7-path-max.patch
create mode 100644 games-roguelike/nethack/nethack-3.6.7-r1.ebuild
create mode 100644 net-libs/libtirpc/files/libtirpc-1.3.7-hurd-client.patch
create mode 100644 net-libs/libtirpc/files/libtirpc-1.3.7-hurd.patch
create mode 100644 net-libs/libtirpc/files/libtirpc-1.3.7-nonlinux.patch
copy profiles/{arch/alpha => default/hurd/amd64/23.0}/eapi (100%)
create mode 100644 profiles/default/hurd/amd64/23.0/make.defaults
copy profiles/default/{linux => hurd}/amd64/23.0/parent (100%)
copy profiles/{arch/alpha => default/hurd/amd64}/eapi (100%)
create mode 100644 profiles/default/hurd/amd64/package.mask
create mode 100644 profiles/default/hurd/amd64/package.use.mask
copy profiles/default/{linux => hurd}/amd64/parent (100%)
copy profiles/{arch/alpha => default/hurd}/eapi (100%)
create mode 100644 profiles/default/hurd/make.defaults
create mode 100644 profiles/default/hurd/package.mask
create mode 100644 profiles/default/hurd/package.use
create mode 100644 profiles/default/hurd/package.use.force
create mode 100644 profiles/default/hurd/package.use.mask
create mode 100644 profiles/default/hurd/packages
create mode 100644 profiles/default/hurd/packages.build
create mode 100644 profiles/default/hurd/use.force
create mode 100644 profiles/default/hurd/use.mask
copy profiles/{arch/alpha => default/hurd/x86/23.0}/eapi (100%)
copy profiles/{arch/alpha => default/hurd/x86/23.0/i686}/eapi (100%)
create mode 100644 profiles/default/hurd/x86/23.0/i686/make.defaults
copy profiles/default/{linux => hurd}/x86/23.0/i686/parent (100%)
copy profiles/default/{linux/alpha => hurd/x86}/23.0/parent (100%)
copy profiles/{arch/alpha => default/hurd/x86}/eapi (100%)
create mode 100644 profiles/default/hurd/x86/make.defaults
create mode 100644 profiles/default/hurd/x86/package.mask
create mode 100644 profiles/default/hurd/x86/package.use.mask
copy profiles/default/{linux => hurd}/x86/parent (100%)
rename sys-apps/util-linux/{util-linux-2.41.3.ebuild => util-linux-2.41.3-r1.ebuild} (97%)
create mode 100644 sys-devel/crossdev/crossdev-20260318.ebuild
create mode 100644 sys-devel/crossdev/crossdev-20260326.ebuild
create mode 100644 sys-kernel/gnumach/Manifest
create mode 100644 sys-kernel/gnumach/gnumach-1.8_p20260224.ebuild
create mode 100644 sys-kernel/gnumach/gnumach-9999.ebuild
copy {acct-group/anope => sys-kernel/gnumach}/metadata.xml (100%)
create mode 100644 sys-kernel/hurd/Manifest
create mode 100644 sys-kernel/hurd/files/hurd-0.9_p20251029-glibc-2.43.patch
create mode 100644 sys-kernel/hurd/files/hurd-0.9_p20251029-libports-iterate-refcount.patch
create mode 100644 sys-kernel/hurd/files/hurd-0.9_p20251029-openrc-init-no-a.patch
create mode 100644 sys-kernel/hurd/files/hurd-0.9_p20251029-rump-link.patch
create mode 100644 sys-kernel/hurd/hurd-0.9_p20251029.ebuild
create mode 100644 sys-kernel/hurd/hurd-9999.ebuild
create mode 100644 sys-kernel/hurd/metadata.xml
create mode 100644 sys-kernel/rumpkernel/Manifest
create mode 100644 sys-kernel/rumpkernel/files/rumpkernel-0_p20250111_p6-bsd-own-mk-no-sysroot.patch
copy {acct-group/anope => sys-kernel/rumpkernel}/metadata.xml (100%)
create mode 100644 sys-kernel/rumpkernel/rumpkernel-0_pre20250111_p6.ebuild
create mode 100644 sys-kernel/rumpkernel/rumpkernel-9999.ebuild
create mode 100644 sys-libs/glibc/files/glibc-2.43-hurd-CLOCK_MONOTONIC.patch
create mode 100644 sys-libs/glibc/files/glibc-2.43-hurd-ldconfig.patch
create mode 100644 sys-libs/glibc/files/glibc-2.43-hurd-link-helpers.patch
create mode 100644 sys-power/libacpica/Manifest
create mode 100644 sys-power/libacpica/libacpica-0_pre20220331_p6.ebuild
create mode 100644 sys-power/libacpica/libacpica-9999.ebuild
copy {acct-group/anope => sys-power/libacpica}/metadata.xml (100%)
create mode 100644 sys-process/procps/files/procps-4.0.6-hurd.patch
rename virtual/logger/{logger-0-r2.ebuild => logger-0-r3.ebuild} (87%)
rename virtual/tmpfiles/{tmpfiles-0-r5.ebuild => tmpfiles-0-r6.ebuild} (66%)
--
2.53.0