mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-24 21:42:22 +02:00
[eric] make Windows install + boot way faster: splash window so it's not frozen on startup, swap MCP node_modules for tiny esbuild bundles
(138MB → 7MB), pre-compile python bytecode, parallelize Widevine, never silently quit
This commit is contained in:
@@ -106,16 +106,54 @@ else
|
||||
echo "WARNING: Claude binary not found at $CLAUDE_BIN"
|
||||
fi
|
||||
|
||||
# Clean up build artifacts to reduce size
|
||||
# Clean up build artifacts to reduce size. Drop test packages and any
|
||||
# stale __pycache__/.pyc from the upstream Python tarball — we want our
|
||||
# own freshly-compiled bytecode (next step), not whatever the upstream
|
||||
# build happened to ship.
|
||||
echo "Cleaning up..."
|
||||
find "$PYTHON_ENV_DIR" -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
||||
find "$PYTHON_ENV_DIR" -name "*.pyc" -delete 2>/dev/null || true
|
||||
find "$PYTHON_ENV_DIR" -type d -name "tests" -exec rm -rf {} + 2>/dev/null || true
|
||||
find "$PYTHON_ENV_DIR" -type d -name "test" -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
# Strip parts of the Python distribution we provably don't use at runtime.
|
||||
# Each removal here has been individually verified — see the audit notes in
|
||||
# the project plan. Doing this BEFORE compileall would also work, but doing
|
||||
# it after means the dirs are already definitely-not-imported (compileall
|
||||
# would have surfaced any backend code that touches them).
|
||||
#
|
||||
# Conservative on purpose. NOT removing pip/, babel/locale-data/, pygments
|
||||
# lexers, or PIL — each had at least one weak import-evidence trail.
|
||||
echo "Stripping unused Python distribution files..."
|
||||
# C headers — only needed when building C extensions, never at runtime.
|
||||
rm -rf "$PYTHON_ENV_DIR/include"
|
||||
# IDLE editor + Tk GUI toolkit — embedded headless backend has no UI.
|
||||
rm -rf "$PYTHON_ENV_DIR/lib/python3.13/idlelib"
|
||||
rm -rf "$PYTHON_ENV_DIR/lib/python3.13/tkinter"
|
||||
# Pip bootstrap module — backend never installs packages at runtime.
|
||||
rm -rf "$PYTHON_ENV_DIR/lib/python3.13/ensurepip"
|
||||
# Educational drawing examples that ship with stdlib — never imported.
|
||||
rm -rf "$PYTHON_ENV_DIR/lib/python3.13/turtledemo"
|
||||
# Man pages / desktop-integration files — embedded Python doesn't read these.
|
||||
rm -rf "$PYTHON_ENV_DIR/share"
|
||||
|
||||
# Pre-compile bytecode so cold backend startup skips the parse+compile
|
||||
# step on every imported .py. Worth ~5-10s on Windows under Defender
|
||||
# (parsing Python source is parser-bound; loading .pyc is just bytes).
|
||||
# Concurrency capped at 4 — `-j 0` (all cores) is fine on dev boxes
|
||||
# but unstable on small CI runners. Failures on individual files are
|
||||
# survivable (compileall continues on SyntaxError-tagged files used by
|
||||
# version-shim packages); a non-zero exit here would rather be visible
|
||||
# than silent so we don't `|| true` the whole thing — but missing .pyc
|
||||
# is non-fatal at runtime, so a hard fail isn't warranted either.
|
||||
echo "Pre-compiling bytecode..."
|
||||
"$PYTHON_BIN" -m compileall -q -j 4 "$PYTHON_ENV_DIR/lib" || \
|
||||
echo "WARNING: some files failed to compile; runtime will fall back to in-memory compile."
|
||||
|
||||
TOTAL_SIZE=$(du -sh "$PYTHON_ENV_DIR" | cut -f1)
|
||||
PYC_COUNT=$(find "$PYTHON_ENV_DIR" -name '*.pyc' -type f | wc -l | tr -d ' ')
|
||||
echo ""
|
||||
echo "=== Python Environment Ready ==="
|
||||
echo "Location: $PYTHON_ENV_DIR"
|
||||
echo "Size: $TOTAL_SIZE"
|
||||
echo "Size: $TOTAL_SIZE ($PYC_COUNT .pyc files)"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user