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 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"
# Alternative: use system lua headers if available
for STAGING in staging_dir/target-*; do for STAGING in staging_dir/target-*; do
if [ -d "$STAGING" ]; then if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" mkdir -p "$STAGING/usr/include"
# Copy from build_dir if lua was built # Copy ALL header files from the directory
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true cp -v "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true
fi fi
done 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 else
echo "❌ $STAGING/usr/include/lua.h NOT FOUND" 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 "⚠️ 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 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"
# Alternative: use system lua headers if available
for STAGING in staging_dir/target-*; do for STAGING in staging_dir/target-*; do
if [ -d "$STAGING" ]; then if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" mkdir -p "$STAGING/usr/include"
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true # Copy ALL header files from the directory
cp "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true
fi fi
done 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 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"
# Alternative: use system lua headers if available
for STAGING in staging_dir/target-*; do for STAGING in staging_dir/target-*; do
if [ -d "$STAGING" ]; then if [ -d "$STAGING" ]; then
mkdir -p "$STAGING/usr/include" mkdir -p "$STAGING/usr/include"
find build_dir -name "lua.h" -exec cp {} "$STAGING/usr/include/" \; 2>/dev/null || true # Copy ALL header files from the directory
cp "$LUA_BUILD_DIR"/*.h "$STAGING/usr/include/" 2>/dev/null || true
fi fi
done 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