No description
Three stage-2 builds -- brotli, libseccomp, meson -- stopped on /usr/bin/python: No module named build and building python-build means running `python -m build`. Its dependencies are the same cycle: packaging and pyproject-hooks are flit_core-backed, installing a wheel wants python-installer, and none of the six exist yet. On the host the cycle was already broken -- apt had python3-build -- so stage 1 never met it. Breaking it there again is not possible: apt has no python3-flit-core at all, so the backend all six need cannot be installed on the host by any means. Arch had already solved it, in the PKGBUILDs: `_bootstrap=1` selects a vendored builder that needs none of the six. That is upstream's supported path through exactly this situation, and it replaced a half-written alternative here -- three bespoke hooks calling `python -m flit_core.wheel` and unzipping into $pkgdir -- which would have reimplemented what the PKGBUILD already does properly. --- FR --- Trois constructions d'étage 2 — brotli, libseccomp, meson — se sont arrêtées sur /usr/bin/python: No module named build et bâtir python-build suppose d'exécuter `python -m build`. Ses dépendances sont le même cycle : packaging et pyproject-hooks passent par flit_core, installer une roue demande python-installer, et aucun des six n'existe encore. Sur l'hôte le cycle était déjà rompu — apt fournissait python3-build — donc l'étage 1 ne l'a jamais rencontré. Le rompre à nouveau là est impossible : apt n'a aucun python3-flit-core, donc le moteur dont les six ont besoin ne peut être installé sur l'hôte par aucun moyen. Arch l'avait déjà résolu, dans les PKGBUILD : `_bootstrap=1` sélectionne un constructeur embarqué qui n'a besoin d'aucun des six. C'est la voie prévue en amont pour exactement cette situation, et elle a remplacé une solution à demi écrite ici — trois hooks sur mesure appelant `python -m flit_core.wheel` puis dézippant dans $pkgdir — qui aurait réimplémenté ce que le PKGBUILD fait déjà correctement. 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.