Add local Pillow build support and update 32-bit download script for ARMhf compatibility

This commit is contained in:
2025-09-11 13:36:57 +03:00
parent ad4d71e0b6
commit 21722c5c85
8 changed files with 72 additions and 9 deletions

29
build_pillow_local.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/bash
# Build Pillow from source and place wheel in req_libraries_32bit
set -e
echo "======================================="
echo " BUILD PILLOW FROM SOURCE (32-bit) "
echo "======================================="
# Ensure virtual environment is activated
echo "Activating .venv..."
source .venv/bin/activate
# Find Pillow source tar.gz
PILLOW_SRC=$(ls req_libraries_32bit/Pillow-*.tar.gz 2>/dev/null | head -1)
if [ -z "$PILLOW_SRC" ]; then
echo "❌ Pillow source distribution not found in req_libraries_32bit."
exit 1
fi
echo "Building Pillow from source: $PILLOW_SRC"
pip wheel "$PILLOW_SRC" -w req_libraries_32bit
if ls req_libraries_32bit/pillow*.whl >/dev/null 2>&1; then
echo "✅ Pillow wheel built successfully!"
echo "You can now install it offline with ./install_32bit.sh."
else
echo "❌ Pillow wheel build failed. Check build dependencies."
fi

View File

@@ -22,12 +22,25 @@ echo " Target architecture: linux_armv7l"
echo ""
# Download with explicit 32-bit ARM platform targeting
echo "🔄 Downloading with forced 32-bit architecture..."
echo "🔄 Downloading with forced 32-bit architecture (armv7l and armhf)..."
# Download for armv7l (wheels only)
pip download -r requirements.txt -d req_libraries_32bit/ \
--platform linux_armv7l \
--only-binary=:all: \
--python-version 311 \
--abi cp311
--abi cp311 || true
# Download for armhf (wheels only)
pip download -r requirements.txt -d req_libraries_32bit/ \
--platform linux_armhf \
--only-binary=:all: \
--python-version 311 \
--abi cp311 || true
# Download Pillow as source if wheel is not available
echo "🔄 Downloading Pillow source distribution for local build..."
pip download Pillow -d req_libraries_32bit/ --no-binary=:all: || true
echo ""
echo "📊 Download results:"
@@ -46,21 +59,26 @@ if [ "$WHEEL_COUNT" -gt 0 ]; then
echo " ⚠️ Architecture unclear"
fi
fi
if ls req_libraries_32bit/pillow*.whl >/dev/null 2>&1; then
PILLOW_FILE=$(basename $(ls req_libraries_32bit/pillow*.whl | head -1))
echo " 🖼️ PILLOW: $PILLOW_FILE"
if [[ "$PILLOW_FILE" == *"armv7l"* ]]; then
echo " ✅ Correct 32-bit architecture"
fi
elif ls req_libraries_32bit/Pillow-*.tar.gz >/dev/null 2>&1; then
PILLOW_SRC=$(basename $(ls req_libraries_32bit/Pillow-*.tar.gz | head -1))
echo " 🖼️ PILLOW source: $PILLOW_SRC"
echo " ⚠️ No wheel available for 32-bit ARM. Will need to build locally."
fi
echo ""
echo "✅ 32-bit libraries download completed!"
echo ""
echo "📋 Next steps:"
echo " 1. Copy this folder to your 32-bit Raspberry Pi"
echo " 2. Run: ./install_32bit.sh"
echo " 3. If Pillow wheel is missing, run: ./build_pillow_local.sh (see instructions below)"
else
echo "❌ No wheel files downloaded"
echo ""

View File

@@ -8,16 +8,25 @@ echo " TKINTER PLAYER OFFLINE INSTALL"
echo "================================="
# 1. Check architecture
# Detect architecture, treating armhf and armv7l as 32-bit
ARCH=$(uname -m)
echo "Architecture: $ARCH"
if lscpu | grep -qi 'armhf'; then
ARCH_TYPE="armhf"
else
ARCH_TYPE="$ARCH"
fi
echo "Architecture: $ARCH_TYPE"
# 2. Select library folder
if [ "$ARCH" = "armv7l" ]; then
# Use 32-bit libraries for armv7l or armhf
if [ "$ARCH_TYPE" = "armv7l" ] || [ "$ARCH_TYPE" = "armhf" ]; then
LIBS_FOLDER="req_libraries_32bit"
echo "Using: 32-bit libraries"
elif [ "$ARCH" = "aarch64" ]; then
echo "Using: 32-bit libraries (armv7l/armhf)"
elif [ "$ARCH_TYPE" = "aarch64" ]; then
LIBS_FOLDER="req_libraries"
echo "Using: 64-bit libraries"
echo "Using: 64-bit libraries (aarch64)"
else
LIBS_FOLDER="req_libraries"
echo "Using: default libraries"

Binary file not shown.

Binary file not shown.

Binary file not shown.

7
requirements.txt Normal file
View File

@@ -0,0 +1,7 @@
python-vlc
Pillow
pyautogui
requests
bcrypt
setuptools
wheel