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:
@@ -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) :
|
||||
|
||||
Reference in New Issue
Block a user