No description
libxslt reported configure: error: Package requirements (python-3.14) were not met: Package 'python-3.14' not found with python 3.14.7 installed and /usr/lib/pkgconfig/python-3.14.pc present. The chain, none of whose links resembles the others: binutils installs libiberty.a into /usr/lib64, because s390x's default MULTILIB_OSDIRNAME is lib64, creating that path as a REAL directory. meson chooses its default libdir by inspecting the system, and 64-bit plus a real /usr/lib64 means lib64 -- a symlink does not count, which is why Arch never sees this and arch-meson passes no --libdir at all. pkgconf is a meson package, so it installed there and COMPILED IN /usr/lib64/pkgconfig as its search path. Every .pc in the distribution is in /usr/lib/pkgconfig. Fixed at all three levels: binutils pinned to --libdir=/usr/lib, the chroot's arch-meson wrapper pins --libdir lib as a backstop, and the ARTEFACT check -- which said "no Debian multiarch libdir anywhere", truthfully and uselessly -- now also counts paths under usr/lib64. --- FR --- libxslt annonçait configure: error: Package requirements (python-3.14) were not met: Package 'python-3.14' not found avec python 3.14.7 installé et /usr/lib/pkgconfig/python-3.14.pc bien présent. La chaîne, dont aucun maillon ne ressemble aux autres : binutils dépose libiberty.a dans /usr/lib64, le MULTILIB_OSDIRNAME par défaut de s390x, et crée donc ce chemin comme VRAI répertoire. meson choisit son libdir par défaut en inspectant le système : 64 bits plus un vrai /usr/lib64 donne lib64 — un lien ne compte pas, d'où le fait qu'Arch ne voit jamais cela et qu'arch-meson ne passe aucun --libdir. pkgconf étant un paquet meson, il s'y est installé et a COMPILÉ /usr/lib64/pkgconfig comme chemin de recherche. Or tous les .pc de la distribution sont dans /usr/lib/pkgconfig. Corrigé aux trois niveaux : binutils épinglé à --libdir=/usr/lib, l'enveloppe arch-meson du chroot épingle --libdir lib en filet, et le test ARTEFACT — qui répondait « aucun libdir multiarch Debian », véridiquement et inutilement — compte désormais aussi les chemins sous usr/lib64. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .github/workflows | ||
| arch-kernel | ||
| boot | ||
| patches | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| CODEOWNERS | ||
| Containerfile | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| TODO.md | ||
Arch Linux s390x
A port of Arch Linux to IBM s390x mainframe architecture with systemd support.
Boots a full Arch Linux system on IBM mainframes (or QEMU s390x emulation) using a hybrid build: cross-compilation for the kernel, native s390x compilation on z/VM for userspace.
Quick Start
make container # build dev container (first time)
cp .env.example .env # configure z/VM access
make all # build kernel + initramfs + systemd
make test-systemd # boot it
What Works
- Arch Linux kernel 6.18.6-arch1 with Arch patches, cross-compiled
- Initramfs via modified mkinitcpio
- Static busybox built natively on z/VM, 2.3MB
- Root filesystem with ext4, switch_root to real rootfs
- Systemd as PID 1
Pacman, bash, and GNU coreutils are not yet ported.
Build System
The build uses two tiers:
Cross-compilation (x86_64 host): Kernel is built in a Fedora 43 container with s390x-linux-gnu-gcc. Initramfs is generated with a patched mkinitcpio that handles cross-architecture binary injection.
Native compilation (s390x z/VM): Busybox and systemd must be built on real s390x hardware. The z/VM system runs RHEL 9.6 with GCC 11.5.0. Scripts handle SSH deployment and retrieval automatically via .env configuration.