Commit Graph

15 Commits

Author SHA1 Message Date
fde18de048 Add nodogsplash package for firmware builds 2025-12-29 18:56:29 +01:00
3e1da58d73 feat(build): Add support for luci-theme-* packages in local-build.sh
Extended the local build script to support both luci-app-* and luci-theme-*
package patterns, enabling builds of theme packages like luci-theme-secubox.

Changes:
- Updated validate_makefiles() to validate both package types
- Extended copy_packages() to copy both luci-app-* and luci-theme-* packages
- Modified configure_packages() to enable both package types in .config
- Updated build_packages() to build both package types
- Enhanced collect_artifacts() to find and collect theme packages
- Added luci-theme-* pattern support in argument parsing
- Updated firmware build to copy both package types to OpenWrt

Tested with: ./local-build.sh build luci-theme-secubox
Result: Successfully built luci-theme-secubox-0.4.0-r1.apk

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:26:50 +01:00
aa24441da4 fix(tools): Remove hanging dependency installation loop
- Removed manual installation loop for individual dependencies that caused hangs
- Dependencies now handled via 'feeds install -a' and .config settings
- lucihttp and cgi-io disabled in .config (compilation failures)
- SecuBox packages are PKGARCH:=all (scripts), don't need compiled deps

Fixes interactive prompts and ^C hangs during build process.
2025-12-28 11:21:19 +01:00
49b0fa4e31 feat: Change default OpenWrt version from 24.10 to 25.12
Make OpenWrt 25.12.0-rc1 the default version across all build systems.

Changes:

1. secubox-tools/local-build.sh
   - Default: 24.10.5 → 25.12.0-rc1
   - Comment updated: "25.12.0-rc1 (default), 24.10.5 (stable LTS)"

2. .github/workflows/build-openwrt-packages.yml
   - Input default: 24.10.5 → 25.12.0-rc1
   - Env fallback: 24.10.5 → 25.12.0-rc1

3. .github/workflows/build-secubox-images.yml
   - Input default: 24.10.5 → 25.12.0-rc1
   - Env fallback: 24.10.5 → 25.12.0-rc1
   - Comment updated

4. DOCS/MODULE_STATUS.md + docs/module-status.md
   - Supported versions order updated:
     - 25.12.0-rc1 (latest, primary target)
     - 24.10.5 (LTS, stable)
     - 23.05.5 (legacy support)

Rationale:
- OpenWrt 25.12 uses new APK package format (Alpine-based)
- Better alignment with latest OpenWrt development
- 24.10.5 remains available as stable LTS option
- All workflows support both versions

Users can still override with:
- Environment variable: OPENWRT_VERSION=24.10.5
- Workflow input when manually triggering builds
- Command line: ./local-build.sh build --version 24.10.5

Package formats:
- 25.12.0-rc1 and SNAPSHOT: .apk (Alpine apk)
- 24.10.5 and earlier: .ipk (opkg)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 11:16:25 +01:00
e78b723dd7 fix(tools): Prevent lucihttp compilation failure in local-build.sh
Applied same fix as GitHub Actions workflow to local build script.

Problem:
- lucihttp and cgi-io fail to compile in SDK environment
- Missing lua.h headers cause: ninja: build stopped: subcommand failed
- Our SecuBox packages are PKGARCH:=all (scripts only), don't need these

Changes to secubox-tools/local-build.sh:

1. Removed lucihttp and cgi-io from build loop
   - Only build: lua, liblua, rpcd (essentials that work)
   - Skip: lucihttp, cgi-io (fail with missing lua.h)

2. Added configuration to disable problematic packages
   - Explicitly disable in .config:
     # CONFIG_PACKAGE_lucihttp is not set
     # CONFIG_PACKAGE_cgi-io is not set

3. Enabled use of pre-built packages from feeds
   - CONFIG_DEVEL=y
   - CONFIG_FEED_packages=y
   - CONFIG_FEED_luci=y

4. Updated dependency installation
   - Install lucihttp/cgi-io from feeds (for metadata)
   - But disable compilation to prevent SDK failures

Result:
- Local builds will no longer fail with "ninja: build stopped"
- SDK uses pre-built dependencies instead of compiling
- SecuBox packages (pure scripts) build successfully

This matches the fix in .github/workflows/build-openwrt-packages.yml

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 11:13:35 +01:00
a995b81e97 fix(ci): add ninja-build to dependencies in all build workflows
- Add ninja-build to package build workflow (build-openwrt-packages.yml)
- Add ninja-build to image build workflow (build-secubox-images.yml)
- Update secubox-tools/README.md with ninja-build dependency
- Update secubox-tools/local-build.sh dependency check and install instructions
- Ninja is required by OpenWrt build system for some compilation tasks

This resolves missing ninja errors in GitHub Actions builds.
2025-12-28 03:25:32 +01:00
c1669b0840 feat: Add support for .apk package format (OpenWrt 25.12+)
OpenWrt 25.12.0-rc1 introduced a major change: switching from opkg
to apk (Alpine Package Manager). This commit adds full support for
building both package formats based on the OpenWrt version.

**Package Build Workflow (.github/workflows/build-openwrt-packages.yml):**
- Added automatic version detection for package format
- 25.12+ and SNAPSHOT → .apk format
- 24.10 and earlier → .ipk format
- Updated feeds configuration to use correct branch (openwrt-25.12, openwrt-24.10, etc.)
- Modified artifact collection to handle both .apk and .ipk files
- Updated build summary to show package format
- Added PKG_EXT environment variable to track format across workflow steps
- Updated dependency download to handle both APKINDEX.tar.gz and Packages formats
- Skip dependency downloads for RC versions (repos may not be stable)

**Local Build Script (secubox-tools/local-build.sh):**
- Added package format detection based on OPENWRT_VERSION
- Updated feeds.conf generation to select correct branch dynamically
- Modified build_packages() to detect and build correct package format
- Updated collect_artifacts() to collect both .apk and .ipk files
- Updated SHA256SUMS generation for both formats
- Export PKG_EXT variable for use across functions

**Documentation:**
- CLAUDE.md: Added package format support details
- README.md: Updated compatibility table with package format column
- Added note explaining apk vs ipk distinction

**Key Changes:**
- Backwards compatible: existing workflows continue to work for .ipk
- Future-proof: ready for OpenWrt 25.12 stable release
- Automatic detection: no manual configuration needed
- Comprehensive: covers all build scenarios (GitHub Actions, local builds)

Tested scenarios:
- OpenWrt 24.10.5 → builds .ipk 
- OpenWrt 25.12.0-rc1 → builds .apk 
- SNAPSHOT → builds .apk 

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 08:16:10 +01:00
c1dd6a95ff feat: Add OpenWrt 25.12.0-rc1 and 24.10.5 to build workflows
Updated GitHub Actions workflows and build scripts to support the
latest OpenWrt versions:

- Added 25.12.0-rc1 (latest release candidate) for testing
- Added 24.10.5 (latest stable release)
- Changed default version from 23.05.5 to 24.10.5

Changes:
- .github/workflows/build-secubox-images.yml: Added new versions, updated default
- .github/workflows/build-openwrt-packages.yml: Added new versions, updated default
- secubox-tools/local-build.sh: Updated default version and added comment
- CLAUDE.md: Updated documentation with supported versions
- README.md: Updated build instructions and compatibility table
- secubox-tools/README.md: Updated environment variables documentation

The 25.12.0-rc1 includes major changes:
- Switch from opkg to apk package manager
- Integration of attended Sysupgrade into default LuCI
- Wi-Fi scripts converted to ucode
- Support for 160+ new devices (2180+ total)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 08:07:12 +01:00
8b5337f120 feat: add complete SecuBox package suite to firmware builds
Include all 13 SecuBox packages in firmware image builds, organized by
category. Previously only 7 packages were included, missing the central
hub and several key components.

Added Packages:
- luci-app-secubox (Central hub - CRITICAL)
- luci-app-auth-guardian (Authentication system)
- luci-app-bandwidth-manager (QoS & quotas)
- luci-app-cdn-cache (CDN proxy cache)
- luci-app-media-flow (Media traffic detection)
- luci-app-vhost-manager (Virtual host manager)

Complete Package List (13 total):

Core Control (2):
- luci-app-secubox - Central hub
- luci-app-system-hub - System control center

Security & Monitoring (2):
- luci-app-crowdsec-dashboard - CrowdSec security
- luci-app-netdata-dashboard - System monitoring

Network Intelligence (2):
- luci-app-netifyd-dashboard - Deep packet inspection
- luci-app-network-modes - Network mode configuration

VPN & Access Control (3):
- luci-app-wireguard-dashboard - WireGuard VPN
- luci-app-client-guardian - NAC & captive portal
- luci-app-auth-guardian - Authentication system

Bandwidth & Traffic (2):
- luci-app-bandwidth-manager - QoS & quotas
- luci-app-media-flow - Media traffic detection

Performance & Services (2):
- luci-app-cdn-cache - CDN proxy cache
- luci-app-vhost-manager - Virtual host manager

Impact:
- Firmware images now include complete SecuBox security suite
- All modules accessible immediately after flashing
- No need to install packages separately
- Consistent feature set across all firmware builds

Changes:
- local-build.sh: Updated firmware configuration
- build-secubox-images.yml: Updated GitHub Actions workflow

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-25 06:43:52 +01:00
804b93a4ff fix: create tmp directories to prevent opkg lock file errors
During firmware image creation, opkg tries to create a lock file in the
staging root filesystem's /tmp directory, but this directory doesn't
always exist, causing the build to fail at the final packaging stage.

Error:
  opkg_conf_load: Could not create lock file
  .../root.orig-mvebu//tmp/opkg.lock: No such file or directory
  ERROR: target/linux failed to build

Solution:
- Create tmp directories in all staging root filesystems before build
- Apply fix in both parallel and single-threaded build paths
- Use wildcard patterns to catch all target architectures

Changes:
- local-build.sh: Create tmp dirs before and during retry
- build-secubox-images.yml: Create tmp dirs in workflow
- .gitignore: Ignore build artifacts (openwrt/, local-feed/, .vscode/)

This ensures the build can complete the final image packaging step
successfully, generating the firmware images.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 18:03:13 +01:00
3a2150d822 fix: disable GDB in toolchain to resolve build failures
The firmware builds were failing during toolchain compilation due to
GDB (GNU debugger) missing testsuite/Makefile. This is a known issue
with OpenWrt's GDB toolchain component.

Error:
  Missing testsuite/Makefile
  make[7]: *** [Makefile:1992: subdir_do] Error 1
  ERROR: toolchain/gdb failed to build

Solution:
- Disable GDB in toolchain with '# CONFIG_GDB is not set'
- GDB is not needed for building firmware images
- Only useful for on-device debugging (can be installed separately)
- Enable BUILD_LOG for better debugging

This fix applies to both:
- Local firmware builds (local-build.sh)
- GitHub Actions firmware builds (build-secubox-images.yml)

Impact:
- Toolchain will compile successfully
- Firmware images will be generated
- Build time remains the same (1-2 hours for full build)
- No impact on firmware functionality

Tested with:
- OpenWrt 23.05.5
- Target: mvebu/cortexa72 (MOCHAbin)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 17:26:58 +01:00
51ef704058 feat: add diagnostics and debug command for firmware builds
Add comprehensive diagnostics when firmware images aren't generated and
a new debug-firmware command to troubleshoot build configuration without
running the full build process.

New Features:
- debug-firmware command to check configuration and available profiles
- Enhanced diagnostic output when no firmware images are found:
  * Shows all files in target directory
  * Lists available targets that were built
  * Scans build log for errors
  * Analyzes file types in target directory
  * Provides actionable troubleshooting steps

The debug-firmware command shows:
- Device configuration (target, subtarget, profile)
- Current .config settings
- Whether device profile is properly configured
- Available device profiles for the target
- Build output directory contents
- Suggestions for next steps

Usage:
  ./secubox-tools/local-build.sh debug-firmware mochabin

This helps identify configuration issues before running the lengthy
build process again.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 17:07:56 +01:00
6da042505e feat: add firmware image building to local build script
Add comprehensive firmware building functionality to local-build.sh,
replicating the GitHub Actions firmware build workflow. Users can now
build complete OpenWrt firmware images with SecuBox pre-installed
locally, in addition to building packages.

New Features:
- New 'build-firmware' command to build complete firmware images
- Support for GlobalScale devices (ESPRESSObin, Sheeva64, MOCHAbin)
- Device profile definitions with automatic target/subtarget configuration
- Automatic OpenWrt source download and caching
- Device-specific package configuration (10G for MOCHAbin, WiFi for Ultra)
- Firmware configuration with same settings as GitHub Actions workflow:
  * CONFIG_TARGET_PER_DEVICE_ROOTFS=y for image generation
  * Explicit PROFILE parameter in make commands
  * Device profile verification before building
- Artifact collection with firmware images, packages, and checksums
- Build time tracking and verbose logging
- 'clean-all' command to remove OpenWrt source (saves ~20GB)

Device Profiles:
- espressobin-v7 (mvebu/cortexa53)
- espressobin-ultra (mvebu/cortexa53 with WiFi)
- sheeva64 (mvebu/cortexa53)
- mochabin (mvebu/cortexa72 with 10G networking)
- x86-64 (x86/64 generic PC)

Usage:
  ./secubox-tools/local-build.sh build-firmware mochabin
  ./secubox-tools/local-build.sh build-firmware espressobin-v7

Output:
  Firmware images placed in build/firmware/<device>/
  - *.img.gz, *sysupgrade.bin, *factory.bin files
  - SHA256SUMS checksums
  - BUILD_INFO.txt with build details
  - packages/ directory with SecuBox .ipk files

Documentation:
- Updated README.md with firmware building examples
- Added device profiles and environment variables
- Added example workflows for firmware building
- Distinguished between package building (SDK) and firmware building (full source)

Technical Details:
- Uses full OpenWrt source (not SDK) for firmware builds
- Configures feeds identically to GitHub Actions workflow
- Includes same configuration fixes for image generation
- Verifies device profile selection before lengthy build
- Supports parallel and single-threaded builds with automatic retry
- Downloads and caches OpenWrt source for reuse

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 16:31:12 +01:00
29c9ee04b3 fix: correct Makefile include paths for SDK and image builds
Fix critical build failure in GitHub Actions workflows and local build script.
The issue was that LuCI package Makefiles reference ../../luci.mk which doesn't
exist when packages are copied to SDK or OpenWrt build environments.

Changes:
- build-openwrt-packages.yml: Auto-fix Makefile paths after package copy
- build-secubox-images.yml: Auto-fix Makefile paths for image builds
- local-build.sh: Complete rewrite to use feed-based architecture
  * Packages installed as local feed instead of direct copy
  * Automatic Makefile path correction (../../luci.mk → $(TOPDIR)/feeds/luci/luci.mk)
  * Skip dependency resolution with NO_DEPS=1 for arch-independent packages
  * Single package build support throughout the pipeline

This fixes the "No such file or directory: ../../luci.mk" error that prevented
all package and firmware image builds from succeeding.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 14:02:31 +01:00
c739104bca feat: add local build tool that replicates GitHub Actions workflows
- Add local-build.sh: comprehensive local build system
  - Validates packages (Makefiles, JSON, JavaScript, shell scripts)
  - Downloads and caches OpenWrt SDK
  - Builds .ipk packages locally
  - Supports multiple architectures (x86-64, ARM, MIPS)
  - Collects artifacts with SHA256 checksums

- Update CLAUDE.md with local build documentation
  - Add Local Build section with usage examples
  - Update Development Workflow to include local testing
  - List supported architectures and environment variables

- Update secubox-tools/README.md
  - Add comprehensive local-build.sh documentation
  - Update workflow examples to include local building
  - Add dependencies and installation instructions

Benefits:
- Test builds locally before CI/CD
- Faster development iteration
- Reduced GitHub Actions usage
- Offline development support

Usage:
  ./secubox-tools/local-build.sh validate
  ./secubox-tools/local-build.sh build
  ./secubox-tools/local-build.sh build luci-app-<name>
  ./secubox-tools/local-build.sh build --arch <arch>
  ./secubox-tools/local-build.sh full

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 11:37:26 +01:00