fix(ci): copy all Lua headers from source directory to fix lualib.h error

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 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-01-03 08:52:32 +01:00
parent 59c3e0dd53
commit 39ca4af683
2 changed files with 97 additions and 28 deletions

View File

@ -562,26 +562,55 @@ jobs:
fi fi
done done
else 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 # Alternative 1: Search for Lua headers in build_dir
for STAGING in staging_dir/target-*; do LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1)
if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" if [ -n "$LUA_BUILD_DIR" ]; then
# Copy from build_dir if lua was built echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR"
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true
fi for STAGING in staging_dir/target-*; do
done 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 fi
# Verify headers are installed # Verify headers are installed
echo "" echo ""
echo "Verifying Lua headers installation:" echo "Verifying Lua headers installation:"
for STAGING in staging_dir/target-*; do for STAGING in staging_dir/target-*; do
if [ -f "$STAGING/usr/include/lua.h" ]; then HEADERS_FOUND=0
echo "✅ $STAGING/usr/include/lua.h found" 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 else
echo "❌ $STAGING/usr/include/lua.h NOT FOUND" echo "⚠️ Warning: Missing some Lua headers in $(basename $STAGING)"
fi fi
done done

View File

@ -507,15 +507,35 @@ FEEDS
fi fi
done done
else 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 # Alternative 1: Search for Lua headers in build_dir
for STAGING in staging_dir/target-*; do LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1)
if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" if [ -n "$LUA_BUILD_DIR" ]; then
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR"
fi
done 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 fi
# Verify headers are installed # Verify headers are installed
@ -1117,15 +1137,35 @@ setup_openwrt_feeds() {
fi fi
done done
else 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 # Alternative 1: Search for Lua headers in build_dir
for STAGING in staging_dir/target-*; do LUA_BUILD_DIR=$(find build_dir -type f -name "lua.h" -printf '%h\n' 2>/dev/null | head -1)
if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" if [ -n "$LUA_BUILD_DIR" ]; then
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true echo "Found Lua headers in build_dir at: $LUA_BUILD_DIR"
fi
done 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 fi
# Verify headers are installed # Verify headers are installed