Files
tkinter_player/install_32bit.sh
ske087 9c42b38c4b Fix 32-bit bcrypt ELFCLASS64 error and enhance installation
- Enhanced install_32bit.sh with clean virtual environment creation
- Added --force-reinstall and --clear flags for proper isolation
- Improved download_32bit_libs.sh with explicit armv7l targeting
- Added troubleshoot_32bit.sh for diagnosing 32-bit issues
- Better architecture verification and error messages
- Comprehensive package testing after installation

Fixes ELFCLASS64 error on 32-bit systems by ensuring proper
architecture isolation and clean package installation.
2025-09-11 10:15:25 +03:00

108 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Dedicated Offline Installer for 32-bit Raspberry Pi OS (armv7l)
# Ensures clean installation with proper architecture isolation
set -e
echo "================================="
echo " TKINTER PLAYER 32-BIT INSTALL "
echo "================================="
# 1. Check architecture
ARCH=$(uname -m)
echo "Architecture: $ARCH"
if [ "$ARCH" != "armv7l" ]; then
echo "ERROR: This script is for 32-bit Raspberry Pi OS (armv7l) only!"
echo "Current architecture: $ARCH"
exit 1
fi
# 2. Check library folder
LIBS_FOLDER="req_libraries_32bit"
if [ ! -d "$LIBS_FOLDER" ]; then
echo "ERROR: $LIBS_FOLDER not found!"
echo "Please download 32-bit libraries first."
exit 1
fi
echo "Library folder: $LIBS_FOLDER"
WHEEL_COUNT=$(ls $LIBS_FOLDER/*.whl | wc -l)
echo "Wheel files: $WHEEL_COUNT"
# 3. Show key 32-bit packages
echo ""
echo "32-bit packages to install:"
if ls $LIBS_FOLDER/bcrypt*.whl >/dev/null 2>&1; then
BCRYPT_FILE=$(basename $(ls $LIBS_FOLDER/bcrypt*.whl | head -1))
echo " BCRYPT: $BCRYPT_FILE"
fi
echo ""
# 4. Clean existing virtual environment
if [ -d ".venv" ]; then
echo "Removing existing .venv to ensure clean installation..."
rm -rf .venv
fi
# 5. Create fresh virtual environment
echo "Creating fresh virtual environment..."
python3 -m venv .venv --clear
# 6. Activate environment
echo "Activating virtual environment..."
source .venv/bin/activate
# 7. Ensure we're using the virtual environment
echo "Python location: $(which python)"
echo "Pip location: $(which pip)"
# 8. Upgrade pip
echo "Upgrading pip..."
pip install --upgrade pip
# 9. Install packages with forced 32-bit isolation
echo ""
echo "Installing 32-bit packages (completely isolated)..."
pip install --no-index --no-deps --force-reinstall --find-links $LIBS_FOLDER/ $LIBS_FOLDER/*.whl
# 10. Verify 32-bit installation
echo ""
echo "Verifying 32-bit installation..."
python3 -c "
import sys
print(f'Python executable: {sys.executable}')
print(f'Architecture: $(uname -m)')
try:
import bcrypt
print('✅ bcrypt imported successfully')
# Test bcrypt functionality
password = b'test'
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
if bcrypt.checkpw(password, hashed):
print('✅ bcrypt functionality test passed')
else:
print('❌ bcrypt functionality test failed')
except Exception as e:
print(f'❌ bcrypt import/test failed: {e}')
try:
import requests
print('✅ requests imported successfully')
except Exception as e:
print(f'❌ requests failed: {e}')
try:
import vlc
print('✅ python-vlc imported successfully')
except Exception as e:
print(f'❌ python-vlc failed: {e}')
"
echo ""
echo "✅ 32-bit installation completed!"
echo ""
echo "Next steps:"
echo "1. source .venv/bin/activate"
echo "2. ./run_app.sh"