# 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