No description
libevent: mv: cannot stat '<pkgdir>/usr/share/doc': No such file or directory pam: rm: cannot remove '.../Linux-PAM/*.pdf': No such file or directory Both are hooks I wrote in this session, and both stopped a build in exactly the way this port has documented eight times: the documentation build was disabled and its install was left in place. Turning EVENT__DOXYGEN off does not stop package() moving usr/share/doc into the libevent-doc split; -Ddocs=disabled does not stop pam deleting PDFs it no longer produces. fakeroot was the first one I made myself. This makes three, so the rule is worth stating instead of rediscovering: after disabling documentation anywhere, search package() for share/doc, man, and the split arrays before believing the hook is finished. pam's rm becomes tolerant rather than deleted -- on a machine with the DocBook stack the PDFs are real, and the comment above the line says why they must go: they are not reproducible. --- FR --- libevent: mv: cannot stat '<pkgdir>/usr/share/doc': No such file or directory pam: rm: cannot remove '.../Linux-PAM/*.pdf': No such file or directory Deux hooks que j'ai écrits dans cette session, et deux arrêts de construction de la façon exacte que ce portage a documentée huit fois : la construction de la documentation désactivée, son installation laissée en place. Éteindre EVENT__DOXYGEN n'empêche pas package() de déplacer usr/share/doc vers le sous-paquet libevent-doc ; -Ddocs=disabled n'empêche pas pam de supprimer des PDF qu'il ne produit plus. fakeroot fut le premier de ma main. Cela en fait trois : la règle mérite d'être énoncée plutôt que redécouverte — après avoir désactivé une documentation, chercher dans package() share/doc, man, et les tableaux de sous-paquets avant de croire le hook terminé. Le rm de pam devient tolérant plutôt que supprimé : sur une machine dotée de la pile DocBook les PDF existent, et le commentaire au-dessus dit pourquoi ils doivent partir — ils ne sont pas reproductibles. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .github/workflows | ||
| arch-kernel | ||
| boot | ||
| patches | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| CODEOWNERS | ||
| Containerfile | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| RELAIS.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.