Version: 1.0.0 Last Updated: 2025-12-28 Status: Active
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:
GitHub Actions uses the OpenWrt SDK which:
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:
Cons:
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:
Cons:
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:
Cons:
The current workflow attempts workarounds:
Status: Experimental, may not work reliably
Pros:
Cons:
Use Option 3 (Package Repository) combined with Option 1 (ImageBuilder for sample firmwares):
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
Until the proper solution is implemented, users can: