v0.7.8 - Fully static builds implemented with musl-gcc

This commit is contained in:
Your Name
2025-10-11 10:51:03 -04:00
parent d449513861
commit ecd7095123
23 changed files with 3801 additions and 89 deletions

View File

@@ -31,24 +31,20 @@ if ! command -v docker &> /dev/null; then
exit 1
fi
# Check if Docker daemon is running (try with and without sudo)
if docker info &> /dev/null; then
DOCKER_CMD="docker"
elif sudo docker info &> /dev/null; then
echo "Note: Using sudo for Docker commands (user not in docker group)"
echo "To avoid sudo, run: sudo usermod -aG docker $USER && newgrp docker"
# Check if Docker daemon is running
if ! docker info &> /dev/null; then
echo "ERROR: Docker daemon is not running or user not in docker group"
echo ""
DOCKER_CMD="sudo docker"
else
echo "ERROR: Docker daemon is not running"
echo ""
echo "Please start Docker:"
echo "Please start Docker and ensure you're in the docker group:"
echo " - sudo systemctl start docker"
echo " - sudo usermod -aG docker $USER && newgrp docker"
echo " - Or start Docker Desktop"
echo ""
exit 1
fi
DOCKER_CMD="docker"
echo "✓ Docker is available and running"
echo ""
@@ -139,28 +135,34 @@ echo "Step 3: Verifying static binary"
echo "=========================================="
echo ""
echo "File information:"
file "$BUILD_DIR/$OUTPUT_NAME"
echo "Checking for dynamic dependencies:"
if LDD_OUTPUT=$(timeout 5 ldd "$BUILD_DIR/$OUTPUT_NAME" 2>&1); then
if echo "$LDD_OUTPUT" | grep -q "not a dynamic executable"; then
echo "✓ Binary is fully static (no dynamic dependencies)"
TRULY_STATIC=true
elif echo "$LDD_OUTPUT" | grep -q "statically linked"; then
echo "✓ Binary is statically linked"
TRULY_STATIC=true
else
echo "⚠ WARNING: Binary may have dynamic dependencies:"
echo "$LDD_OUTPUT"
TRULY_STATIC=false
fi
else
# ldd failed or timed out - check with file command instead
if file "$BUILD_DIR/$OUTPUT_NAME" | grep -q "statically linked"; then
echo "✓ Binary is statically linked (verified with file command)"
TRULY_STATIC=true
else
echo "⚠ Could not verify static linking (ldd check failed)"
TRULY_STATIC=false
fi
fi
echo ""
echo "File size: $(ls -lh "$BUILD_DIR/$OUTPUT_NAME" | awk '{print $5}')"
echo ""
echo "Checking for dynamic dependencies:"
LDD_OUTPUT=$(ldd "$BUILD_DIR/$OUTPUT_NAME" 2>&1)
if echo "$LDD_OUTPUT" | grep -q "not a dynamic executable"; then
echo "✓ Binary is fully static (no dynamic dependencies)"
TRULY_STATIC=true
elif echo "$LDD_OUTPUT" | grep -q "statically linked"; then
echo "✓ Binary is statically linked"
TRULY_STATIC=true
else
echo "⚠ WARNING: Binary may have dynamic dependencies:"
echo "$LDD_OUTPUT"
TRULY_STATIC=false
fi
echo ""
# Test if binary runs
echo "Testing binary execution:"
if "$BUILD_DIR/$OUTPUT_NAME" --version 2>&1 | head -5; then
@@ -186,12 +188,3 @@ fi
echo ""
echo "✓ Build complete!"
echo ""
echo "To use the binary:"
echo " $BUILD_DIR/$OUTPUT_NAME --port 8888"
echo ""
echo "To verify portability, test on different Linux distributions:"
echo " - Alpine Linux"
echo " - Ubuntu/Debian"
echo " - CentOS/RHEL"
echo " - Arch Linux"
echo ""