secubox-openwrt/docs/archive/build-issues.md
CyberMind-FR ef936f1295 docs: Add GitHub Pages documentation site structure
Created comprehensive documentation site using MkDocs Material theme
for GitHub Pages deployment. Moved version sync scripts to secubox-tools.

## Documentation Site (18 new files)

Created docs/ directory with complete documentation:

**Main Pages:**
- index.md - Home page with navigation cards and module overview
- quick-start.md - Quick start guide
- documentation-index.md - Documentation index

**Development Guides:**
- development-guidelines.md - Complete development reference (1857 lines)
- code-templates.md - Working examples and patterns (1405 lines)
- module-implementation-guide.md - Step-by-step workflow (901 lines)

**Reference Documentation:**
- claude.md - Build system and RPCD architecture (553 lines)
- validation-guide.md - Validation workflows (518 lines)
- permissions-guide.md - Permission guidelines (248 lines)
- luci-development-reference.md - LuCI development (1196 lines)

**Module Information:**
- module-status.md - 15 module status (896 lines)
- feature-regeneration-prompts.md - AI prompts (2084 lines)
- todo-analyse.md - Roadmap and tasks (1080 lines)

**Archive (4 files):**
- archive/index.md - Archive index
- archive/build-issues.md - Build troubleshooting
- archive/completion-report.md - Project milestones
- archive/module-enable-disable-design.md - Feature design

**Styling:**
- stylesheets/extra.css - SecuBox custom CSS

## Scripts Reorganization (2 files moved)

Moved version sync utilities to secubox-tools:
- scripts/sync_module_versions.py → secubox-tools/sync_module_versions.py
- scripts/sync_module_versions.sh → secubox-tools/sync_module_versions.sh

## Site Features

- Material theme with dark/light mode
- Responsive design with navigation tabs
- Live search and syntax highlighting
- Custom SecuBox branding (indigo/violet gradients)
- 12,780+ lines of comprehensive documentation

Summary:
- 21 files changed (+12,780 lines)
- 18 new documentation pages
- 2 scripts relocated
- Ready for GitHub Pages deployment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 21:57:29 +01:00

5.4 KiB

Build Issues & Solutions

Version: 1.0.0 Last Updated: 2025-12-28 Status: Active

Current Problem: No IPK Generated on GitHub Actions

Root Cause

The OpenWrt SDK cannot compile LuCI core dependencies (lucihttp, cgi-io) because it lacks the necessary ubus development headers. When building SecuBox packages, the SDK tries to compile all dependencies from source, which fails with:

ERROR: package/feeds/luci/lucihttp failed to build.
ubus_include_dir-NOTFOUND

###Why This Works Locally

Locally, you likely have one of these setups:

  1. Full OpenWrt build tree - Has all headers and can compile everything
  2. ImageBuilder - Uses pre-compiled packages, doesn't compile from source
  3. Pre-installed dependencies - lucihttp/cgi-io already exist

Why It Fails on GitHub Actions

GitHub Actions uses the OpenWrt SDK which:

  • Can compile packages with compiled code
  • Cannot compile certain LuCI core packages (missing headers)
  • Tries to rebuild all dependencies from source

Solutions

Best for: Creating firmware images with SecuBox pre-installed

ImageBuilder uses pre-compiled packages and doesn't require compilation:

# New workflow using 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"    

Pros:

  • No compilation issues
  • Creates complete firmware images
  • Fast builds (uses binaries)

Cons:

  • Requires specifying target device
  • Not suitable for multi-architecture package builds

Option 2: Use Full OpenWrt Build System

Best for: Complete control, custom kernels, or when you need to modify core packages

Clone and build complete OpenWrt:

- 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)    

Pros:

  • Can compile everything
  • Full control over build
  • Can modify core packages

Cons:

  • Very slow (1-2 hours per architecture)
  • Requires significant disk space (30-50GB)
  • Complex configuration

Option 3: Package-Only Repository (Alternative)

Best for: Distributing packages that users install on existing OpenWrt systems

Create a custom package feed:

# On your server/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

Users add to /etc/opkg/customfeeds.conf:

src/gz secubox https://yourdomain.com/packages/${ARCH}/secubox

Pros:

  • No build needed (distribute sources)
  • Users compile locally or use binaries
  • Easy updates

Cons:

  • Users need to manually install
  • Doesn't provide firmware images

Option 4: Fix SDK Build (Current Attempt)

The current workflow attempts workarounds:

  1. Download package indices
  2. Configure SDK to prefer binaries (CONFIG_BUILDBOT=y)
  3. Fallback to direct packaging if compile fails

Status: Experimental, may not work reliably

Pros:

  • Keeps existing workflow structure
  • Multi-architecture builds

Cons:

  • Fragile, depends on SDK quirks
  • May break with OpenWrt updates
  • Not officially supported

For Package Distribution

Use Option 3 (Package Repository) combined with Option 1 (ImageBuilder for sample firmwares):

  1. Distribute source packages via GitHub releases
  2. Provide pre-built .ipk for common architectures (x86-64, ARM)
  3. Create sample firmwares with ImageBuilder for popular devices
  4. Document installation for users who want to install on existing OpenWrt

Implementation Steps

  1. Create package feed workflow (replaces current SDK build)
  2. Add ImageBuilder workflow for sample firmwares (ESPRESSObin, x86-64, etc.)
  3. Update README with installation instructions
  4. Tag releases with both source and binaries

Next Steps

To implement the recommended solution:

# 1. Create new workflow for ImageBuilder
cp .github/workflows/build-secubox-images.yml .github/workflows/build-imagebuilder.yml
# Edit to use ImageBuilder instead of full build

# 2. Update package build workflow to create feed instead of compiling
# (Keep source distribution, skip compilation)

# 3. Update documentation
# Add INSTALL.md with instructions for different scenarios

Temporary Workaround

Until the proper solution is implemented, users can:

  1. Download source from GitHub
  2. Build locally using local-build.sh (requires SDK setup)
  3. Or use existing firmware builds (when available)

References