No description
The hook's guard reported "no tcl dir under usr/lib". What sqlite had created instead was a directory literally named `zipfs:` <pkgdir>/sqlite/zipfs:/lib/tcl/tcl_library/ The generated Makefile explains itself: # TCLLIBDIR = where to install the tcl plugin. If this is empty, it TCLLIBDIR = //zipfs:/lib/tcl/tcl_library/sqlite3.53.4 sqlite asks tcl where its library lives and installs the plugin beside it. In tcl 8.6 that was a real directory. tcl 9 ships its library INSIDE the executable, in a zipfs mount, so the answer is a path only tcl can open -- and sqlite used it as a filesystem path, creating a directory whose name contains a colon. This is the deferred "libtcl8.6 versus our tcl 9.0" item in its final form: not a version number to update but a change in what tcl considers a path. TCLLIBDIR now points at a real directory, versioned from tclsh. --- FR --- Le garde du hook signalait « no tcl dir under usr/lib ». Ce que sqlite avait créé était un répertoire littéralement nommé `zipfs:` <pkgdir>/sqlite/zipfs:/lib/tcl/tcl_library/ Le Makefile généré s'explique lui-même : # TCLLIBDIR = where to install the tcl plugin. If this is empty, it TCLLIBDIR = //zipfs:/lib/tcl/tcl_library/sqlite3.53.4 sqlite demande à tcl où vit sa bibliothèque et installe le greffon à côté. En tcl 8.6 c'était un vrai répertoire. tcl 9 livre sa bibliothèque DANS l'exécutable, en montage zipfs : la réponse est un chemin que seul tcl sait ouvrir, et sqlite l'a traité comme un chemin de fichiers, créant un répertoire dont le nom contient deux points. C'est l'élément différé « libtcl8.6 contre notre tcl 9.0 » dans sa forme finale : non pas un numéro de version à mettre à jour, mais un changement de ce que tcl appelle un chemin. TCLLIBDIR vise désormais un vrai répertoire, sa version lue depuis tclsh. 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.