- Update remote-build-pi.sh to use new naming - Rewrite build-runtime-tarball.sh for pyenv-free world (system Python) - Removed pyenv references, now just tarballs the venv Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
71 lines
2.9 KiB
Bash
Executable File
71 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Build Stegasoo Pi venv Tarball
|
|
# Run this ON THE PI after a successful from-source build
|
|
#
|
|
# Creates: stegasoo-rpi-venv-arm64.tar.zst (~40-50MB)
|
|
# Contains: venv with all dependencies (uses system Python 3.11+)
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
INSTALL_DIR="${INSTALL_DIR:-/opt/stegasoo}"
|
|
OUTPUT_FILE="${1:-$HOME/stegasoo-rpi-venv-arm64.tar.zst}"
|
|
|
|
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
|
echo -e "${GREEN}║ Stegasoo Pi venv Tarball Builder ║${NC}"
|
|
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
|
echo ""
|
|
|
|
# Verify we're on ARM64
|
|
ARCH=$(uname -m)
|
|
if [[ "$ARCH" != "aarch64" ]]; then
|
|
echo -e "${RED}Error: This script must be run on ARM64 (aarch64)${NC}"
|
|
echo "Current architecture: $ARCH"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify venv exists
|
|
if [[ ! -d "$INSTALL_DIR/venv" ]]; then
|
|
echo -e "${RED}Error: venv not found at $INSTALL_DIR/venv${NC}"
|
|
echo "Run a from-source build first: ./rpi/setup.sh --no-prebuilt"
|
|
exit 1
|
|
fi
|
|
|
|
# Step 1: Clean caches from venv
|
|
echo -e "${GREEN}[1/2]${NC} Cleaning caches from venv..."
|
|
VENV_SIZE_BEFORE=$(du -sh "$INSTALL_DIR/venv" | cut -f1)
|
|
find "$INSTALL_DIR/venv/" -type d -name '__pycache__' -exec rm -rf {} + 2>/dev/null || true
|
|
find "$INSTALL_DIR/venv/" -type d -name 'tests' -exec rm -rf {} + 2>/dev/null || true
|
|
find "$INSTALL_DIR/venv/" -type d -name 'test' -exec rm -rf {} + 2>/dev/null || true
|
|
find "$INSTALL_DIR/venv/" -type f -name '*.pyc' -delete 2>/dev/null || true
|
|
VENV_SIZE_AFTER=$(du -sh "$INSTALL_DIR/venv" | cut -f1)
|
|
echo " venv: $VENV_SIZE_BEFORE -> $VENV_SIZE_AFTER"
|
|
|
|
# Step 2: Create tarball
|
|
echo -e "${GREEN}[2/2]${NC} Creating tarball..."
|
|
cd "$INSTALL_DIR"
|
|
tar -cf - venv/ | zstd -19 -T0 > "$OUTPUT_FILE"
|
|
|
|
# Summary
|
|
FINAL_SIZE=$(ls -lh "$OUTPUT_FILE" | awk '{print $5}')
|
|
echo ""
|
|
echo -e "${GREEN}════════════════════════════════════════════════════════════════${NC}"
|
|
echo -e " Output: ${YELLOW}$OUTPUT_FILE${NC}"
|
|
echo -e " Size: ${YELLOW}$FINAL_SIZE${NC}"
|
|
echo -e "${GREEN}════════════════════════════════════════════════════════════════${NC}"
|
|
echo ""
|
|
echo "To pull to your host machine:"
|
|
echo " scp $(whoami)@$(hostname).local:$OUTPUT_FILE ./"
|
|
echo ""
|
|
echo "To use in setup.sh, place at:"
|
|
echo " rpi/stegasoo-rpi-venv-arm64.tar.zst"
|
|
echo ""
|
|
echo "Or upload to GitHub releases for automatic download."
|