feat(build): add podman container support for non-arch linux distributions

Add automatic detection and relaunching of build scripts in an Arch Linux container via podman when running on non-Arch distributions (Fedora, Ubuntu, Debian, etc.).

Key changes:
- Implement host_is_arch() function to detect if running on Arch Linux by checking both pacman availability and /etc/os-release
- When non-Arch host is detected, scripts automatically pull docker.io/library/archlinux:latest and relaunch themselves in rootful podman container with --privileged
- Mount repository at same absolute path inside container so WORK_DIR and out/ directories work transparently
- Set up persistent pacman cache volume (fws-pacman-cache) between runs
- Auto-chown output files back to host user after build completes
- Update pacman config to disable landlock sandbox in containers (similar to WSL workaround)
- Run full pacman -Syu upgrade in container before installing archiso to avoid partial upgrade issues
- Add comprehensive documentation in README about Fedora/non-Arch setup
- Update .gitignore to exclude pkgbuilds/ directory
- Add environnement.md documentation file
This commit is contained in:
2026-06-17 11:05:59 +02:00
parent de9647a00d
commit 2420bf2404
8 changed files with 293 additions and 32 deletions
+35 -1
View File
@@ -2,7 +2,7 @@
**FWS** est une distribution Linux live/installable basée sur **Arch Linux**, livrée sous forme d'ISO bootable BIOS/UEFI. L'installateur graphique est **en cours de migration de Calamares vers Anaconda** (Calamares retiré au commit 05ae9c3, intégration d'Anaconda en cours — voir le chantier dédié).
Le projet est conçu pour être **construit depuis Windows via WSL** (les scripts détectent Git Bash et basculent automatiquement dans WSL), mais fonctionne aussi directement depuis une Arch Linux native.
Le projet est conçu pour être **construit depuis Windows via WSL** (les scripts détectent Git Bash et basculent automatiquement dans WSL), mais fonctionne aussi directement depuis une **Arch Linux native** ou depuis **toute distribution non-Arch (Fedora, Ubuntu…) via une bascule automatique dans un conteneur Arch podman**.
---
@@ -107,6 +107,40 @@ Les scripts détectent l'absence de WSL et s'exécutent en local. Il faut être
---
### Côté Fedora / Linux non-Arch (conteneur podman)
Sur une distribution **qui n'est pas Arch** (Fedora, Ubuntu, Debian…), les scripts
détectent l'hôte non-Arch et **se relancent automatiquement dans un conteneur Arch**
via podman. Tu n'as qu'à installer podman, puis lancer les scripts normalement.
```bash
# Fedora
sudo dnf install -y podman
# Debian / Ubuntu
sudo apt install -y podman
# Puis, à la racine du repo, exactement comme sur Arch :
./setup-aur.sh
./build.sh
```
Détails utiles :
- **podman rootful obligatoire** : les scripts préfixent `sudo podman` (rootless ne
gère pas les mounts/chroot de `mkarchiso`). `sudo` peut demander ton mot de passe.
- L'image utilisée est `docker.io/library/archlinux:latest`, pull explicite à chaque
run (le tag `latest` n'est pas re-résolu sinon).
- Le dépôt est monté **au même chemin absolu** dans le conteneur : l'ISO (`out/`) et
`local-repo/` reviennent directement sur l'hôte (re-`chown` automatique vers toi).
- Le cache pacman est conservé entre les runs dans le volume `fws-pacman-cache`.
- SELinux enforcing (Fedora) est géré par `--privileged` — rien à configurer.
> Pour forcer l'exécution **locale** (si tu es déjà sur Arch et que pacman est là),
> la bascule ne se déclenche pas : la détection exige `pacman` **et** un
> `ID`/`ID_LIKE` « arch » dans `/etc/os-release`.
---
## Démarrage rapide
Depuis **Git Bash sur Windows** (à la racine du repo) :