From 39ca4af68372b81a57fa0225de6d14543eb8d8b1 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Sat, 3 Jan 2026 08:52:32 +0100 Subject: [PATCH] fix(ci): copy all Lua headers from source directory to fix lualib.h error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhanced Lua header installation in SDK to copy ALL .h files from the Lua source directory, not just search for lua.h individually. Changes: - Primary: Copy all *.h files from feeds/packages/lang/lua/src/lua-*/ - Fallback 1: Find directory with lua.h in build_dir and copy ALL headers - Fallback 2: Search for lua.h, lualib.h, lauxlib.h individually - Added verification for all 3 critical headers This fixes the lualib.h missing error that occurred even when lua.h was successfully found and installed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .github/workflows/build-openwrt-packages.yml | 53 ++++++++++---- secubox-tools/local-build.sh | 72 +++++++++++++++----- 2 files changed, 97 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build-openwrt-packages.yml b/.github/workflows/build-openwrt-packages.yml index d4ea8cbd..8f9e860d 100644 --- a/.github/workflows/build-openwrt-packages.yml +++ b/.github/workflows/build-openwrt-packages.yml @@ -562,26 +562,55 @@ jobs: fi done else - echo "⚠️ Lua source not found in feeds, trying alternative method..." + echo "⚠️ Lua source not found in feeds, trying alternative methods..." - # Alternative: use system lua headers if available - for STAGING in staging_dir/target-*; do - if [ -d "$STAGING" ]; then - mkdir -p "$STAGING/usr/include" - # Copy from build_dir if lua was built - find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true - fi - done + # Alternative 1: Search for Lua headers in build_dir + LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1) + + if [ -n "$LUA_BUILD_DIR" ]; then + echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR" + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + # Copy ALL header files from the directory + cp -v "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true + fi + done + else + # Alternative 2: Use system Lua headers as last resort + echo "Searching for system Lua headers..." + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + + # Try to find lua headers anywhere in the SDK + find . -type f \( -name "lua.h" -o -name "lualib.h" -o -name "lauxlib.h" \) \ + -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true + fi + done + fi fi # Verify headers are installed echo "" echo "Verifying Lua headers installation:" for STAGING in staging_dir/target-*; do - if [ -f "$STAGING/usr/include/lua.h" ]; then - echo "✅ $STAGING/usr/include/lua.h found" + HEADERS_FOUND=0 + for HEADER in lua.h lualib.h lauxlib.h; do + if [ -f "$STAGING/usr/include/$HEADER" ]; then + echo "✅ $STAGING/usr/include/$HEADER" + HEADERS_FOUND=$((HEADERS_FOUND + 1)) + else + echo "❌ $STAGING/usr/include/$HEADER NOT FOUND" + fi + done + + if [ $HEADERS_FOUND -eq 3 ]; then + echo "✅ All required Lua headers installed for $(basename $STAGING)" else - echo "❌ $STAGING/usr/include/lua.h NOT FOUND" + echo "⚠️ Warning: Missing some Lua headers in $(basename $STAGING)" fi done diff --git a/secubox-tools/local-build.sh b/secubox-tools/local-build.sh index 295424b8..6f54ddfb 100755 --- a/secubox-tools/local-build.sh +++ b/secubox-tools/local-build.sh @@ -507,15 +507,35 @@ FEEDS fi done else - print_warn "Lua source not found in feeds, trying alternative method..." + print_warn "Lua source not found in feeds, trying alternative methods..." - # Alternative: use system lua headers if available - for STAGING in staging_dir/target-*; do - if [ -d "$STAGING" ]; then - mkdir -p "$STAGING/usr/include" - find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true - fi - done + # Alternative 1: Search for Lua headers in build_dir + LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1) + + if [ -n "$LUA_BUILD_DIR" ]; then + echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR" + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + # Copy ALL header files from the directory + cp "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true + fi + done + else + # Alternative 2: Use system Lua headers as last resort + echo "Searching for system Lua headers..." + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + + # Try to find lua headers anywhere in the SDK + find . -type f \( -name "lua.h" -o -name "lualib.h" -o -name "lauxlib.h" \) \ + -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true + fi + done + fi fi # Verify headers are installed @@ -1117,15 +1137,35 @@ setup_openwrt_feeds() { fi done else - print_warning "Lua source not found in feeds, trying alternative method..." + print_warning "Lua source not found in feeds, trying alternative methods..." - # Alternative: use system lua headers if available - for STAGING in staging_dir/target-*; do - if [ -d "$STAGING" ]; then - mkdir -p "$STAGING/usr/include" - find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true - fi - done + # Alternative 1: Search for Lua headers in build_dir + LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1) + + if [ -n "$LUA_BUILD_DIR" ]; then + echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR" + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + # Copy ALL header files from the directory + cp "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true + fi + done + else + # Alternative 2: Use system Lua headers as last resort + echo "Searching for system Lua headers..." + + for STAGING in staging_dir/target-*; do + if [ -d "$STAGING" ]; then + mkdir -p "$STAGING/usr/include" + + # Try to find lua headers anywhere in the SDK + find . -type f \( -name "lua.h" -o -name "lualib.h" -o -name "lauxlib.h" \) \ + -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true + fi + done + fi fi # Verify headers are installed