Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
196 lines
6.4 KiB
Markdown
196 lines
6.4 KiB
Markdown
# Problemes de Compilation & Solutions
|
|
|
|
> **Languages:** [English](../../DOCS/archive/BUILD_ISSUES.md) | Francais | [中文](../../DOCS-zh/archive/BUILD_ISSUES.md)
|
|
|
|
**Version:** 1.0.0
|
|
**Derniere mise a jour:** 2025-12-28
|
|
**Statut:** Actif
|
|
|
|
## Probleme Actuel: Aucun IPK Genere sur GitHub Actions
|
|
|
|
### Cause Racine
|
|
|
|
Le **SDK** OpenWrt ne peut pas compiler les dependances principales de LuCI (`lucihttp`, `cgi-io`) car il lui manque les en-tetes de developpement `ubus` necessaires. Lors de la compilation des packages SecuBox, le SDK essaie de compiler toutes les dependances depuis les sources, ce qui echoue avec:
|
|
|
|
```
|
|
ERROR: package/feeds/luci/lucihttp failed to build.
|
|
ubus_include_dir-NOTFOUND
|
|
```
|
|
|
|
### Pourquoi Cela Fonctionne Localement
|
|
|
|
Localement, vous avez probablement l'une de ces configurations:
|
|
1. **Arbre de compilation OpenWrt complet** - Possede tous les en-tetes et peut tout compiler
|
|
2. **ImageBuilder** - Utilise des packages pre-compiles, ne compile pas depuis les sources
|
|
3. **Dependances pre-installees** - lucihttp/cgi-io existent deja
|
|
|
|
### Pourquoi Cela Echoue sur GitHub Actions
|
|
|
|
GitHub Actions utilise le **SDK OpenWrt** qui:
|
|
- Peut compiler des packages avec du code compile
|
|
- Ne peut pas compiler certains packages principaux de LuCI (en-tetes manquants)
|
|
- Essaie de reconstruire toutes les dependances depuis les sources
|
|
|
|
## Solutions
|
|
|
|
### Option 1: Utiliser OpenWrt ImageBuilder (Recommande)
|
|
|
|
**Ideal pour:** Creer des images firmware avec SecuBox pre-installe
|
|
|
|
ImageBuilder utilise des packages pre-compiles et ne necessite pas de compilation:
|
|
|
|
```yaml
|
|
# Nouveau workflow utilisant ImageBuilder
|
|
- name: Download ImageBuilder
|
|
run: |
|
|
wget https://downloads.openwrt.org/releases/${VERSION}/targets/${TARGET}/${SUBTARGET}/openwrt-imagebuilder-*.tar.xz
|
|
tar xf openwrt-imagebuilder-*.tar.xz
|
|
|
|
- name: Add custom packages
|
|
run: |
|
|
mkdir -p imagebuilder/packages/custom
|
|
cp *.ipk imagebuilder/packages/custom/
|
|
|
|
- name: Build image
|
|
run: |
|
|
cd imagebuilder
|
|
make image PACKAGES="luci luci-app-secubox luci-app-*-dashboard"
|
|
```
|
|
|
|
**Avantages:**
|
|
- Aucun probleme de compilation
|
|
- Cree des images firmware completes
|
|
- Compilations rapides (utilise des binaires)
|
|
|
|
**Inconvenients:**
|
|
- Necessite de specifier l'appareil cible
|
|
- Pas adapte pour les compilations de packages multi-architecture
|
|
|
|
### Option 2: Utiliser le Systeme de Compilation OpenWrt Complet
|
|
|
|
**Ideal pour:** Controle complet, kernels personnalises, ou quand vous devez modifier des packages principaux
|
|
|
|
Cloner et compiler OpenWrt complet:
|
|
|
|
```yaml
|
|
- name: Clone OpenWrt
|
|
run: |
|
|
git clone https://github.com/openwrt/openwrt.git
|
|
cd openwrt
|
|
./scripts/feeds update -a
|
|
./scripts/feeds install -a
|
|
|
|
- name: Add SecuBox packages
|
|
run: |
|
|
cp -r ../luci-app-* openwrt/package/
|
|
|
|
- name: Build
|
|
run: |
|
|
cd openwrt
|
|
make defconfig
|
|
make -j$(nproc)
|
|
```
|
|
|
|
**Avantages:**
|
|
- Peut tout compiler
|
|
- Controle complet sur la compilation
|
|
- Peut modifier les packages principaux
|
|
|
|
**Inconvenients:**
|
|
- Tres lent (1-2 heures par architecture)
|
|
- Necessite un espace disque important (30-50Go)
|
|
- Configuration complexe
|
|
|
|
### Option 3: Depot de Packages Uniquement (Alternative)
|
|
|
|
**Ideal pour:** Distribuer des packages que les utilisateurs installent sur des systemes OpenWrt existants
|
|
|
|
Creer un flux de packages personnalise:
|
|
|
|
```bash
|
|
# Sur votre serveur/GitHub Pages
|
|
mkdir -p packages/${ARCH}/secubox
|
|
cp *.ipk packages/${ARCH}/secubox/
|
|
scripts/ipkg-make-index packages/${ARCH}/secubox > Packages
|
|
gzip -c Packages > Packages.gz
|
|
```
|
|
|
|
Les utilisateurs ajoutent dans `/etc/opkg/customfeeds.conf`:
|
|
```
|
|
src/gz secubox https://yourdomain.com/packages/${ARCH}/secubox
|
|
```
|
|
|
|
**Avantages:**
|
|
- Pas de compilation necessaire (distribue les sources)
|
|
- Les utilisateurs compilent localement ou utilisent des binaires
|
|
- Mises a jour faciles
|
|
|
|
**Inconvenients:**
|
|
- Les utilisateurs doivent installer manuellement
|
|
- Ne fournit pas d'images firmware
|
|
|
|
### Option 4: Corriger la Compilation SDK (Tentative Actuelle)
|
|
|
|
Le workflow actuel tente des contournements:
|
|
1. Telecharger les index de packages
|
|
2. Configurer le SDK pour preferer les binaires (CONFIG_BUILDBOT=y)
|
|
3. Solution de repli vers le packaging direct si la compilation echoue
|
|
|
|
**Statut:** Experimental, peut ne pas fonctionner de maniere fiable
|
|
|
|
**Avantages:**
|
|
- Conserve la structure de workflow existante
|
|
- Compilations multi-architecture
|
|
|
|
**Inconvenients:**
|
|
- Fragile, depend des particularites du SDK
|
|
- Peut casser avec les mises a jour OpenWrt
|
|
- Non officiellement supporte
|
|
|
|
## Approche Recommandee
|
|
|
|
### Pour la Distribution de Packages
|
|
Utiliser l'**Option 3** (Depot de Packages) combinee avec l'**Option 1** (ImageBuilder pour les firmwares exemples):
|
|
|
|
1. **Distribuer les packages source** via les releases GitHub
|
|
2. **Fournir des .ipk pre-compiles** pour les architectures courantes (x86-64, ARM)
|
|
3. **Creer des firmwares exemples** avec ImageBuilder pour les appareils populaires
|
|
4. **Documenter l'installation** pour les utilisateurs qui veulent installer sur OpenWrt existant
|
|
|
|
### Etapes d'Implementation
|
|
|
|
1. **Creer un workflow de flux de packages** (remplace la compilation SDK actuelle)
|
|
2. **Ajouter un workflow ImageBuilder** pour les firmwares exemples (ESPRESSObin, x86-64, etc.)
|
|
3. **Mettre a jour le README** avec les instructions d'installation
|
|
4. **Tagger les releases** avec les sources et les binaires
|
|
|
|
## Prochaines Etapes
|
|
|
|
Pour implementer la solution recommandee:
|
|
|
|
```bash
|
|
# 1. Creer un nouveau workflow pour ImageBuilder
|
|
cp .github/workflows/build-secubox-images.yml .github/workflows/build-imagebuilder.yml
|
|
# Editer pour utiliser ImageBuilder au lieu de la compilation complete
|
|
|
|
# 2. Mettre a jour le workflow de compilation de packages pour creer un flux au lieu de compiler
|
|
# (Conserver la distribution des sources, sauter la compilation)
|
|
|
|
# 3. Mettre a jour la documentation
|
|
# Ajouter INSTALL.md avec des instructions pour differents scenarios
|
|
```
|
|
|
|
## Contournement Temporaire
|
|
|
|
Jusqu'a l'implementation de la solution appropriee, les utilisateurs peuvent:
|
|
|
|
1. **Telecharger les sources** depuis GitHub
|
|
2. **Compiler localement** en utilisant local-build.sh (necessite la configuration du SDK)
|
|
3. **Ou utiliser les compilations firmware existantes** (quand disponibles)
|
|
|
|
## References
|
|
|
|
- SDK OpenWrt: https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk
|
|
- ImageBuilder OpenWrt: https://openwrt.org/docs/guide-user/additional-software/imagebuilder
|
|
- Flux de Packages: https://openwrt.org/docs/guide-developer/feeds
|