perf: reduce Windows portable build size by ~80MB
Some checks failed
Lint & Test / test (push) Failing after 28s
Some checks failed
Lint & Test / test (push) Failing after 28s
Strip unnecessary files from site-packages: - Remove pip, setuptools, pythonwin (not needed at runtime) - OpenCV: remove unused extra modules and data - numpy: remove tests, f2py, typing stubs - Remove all .dist-info directories and .pyi type stubs - Remove winsdk type stubs
This commit is contained in:
@@ -276,14 +276,51 @@ for sdist in "$WHEEL_DIR"/*.tar.gz; do
|
|||||||
rm -rf "$TMPDIR"
|
rm -rf "$TMPDIR"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove dist-info, caches, tests to reduce size
|
# ── Reduce package size ────────────────────────────────────────
|
||||||
|
echo " Cleaning up to reduce size..."
|
||||||
|
|
||||||
|
# Remove caches, tests, docs, type stubs
|
||||||
find "$SITE_PACKAGES" -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
find "$SITE_PACKAGES" -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
||||||
find "$SITE_PACKAGES" -type d -name tests -exec rm -rf {} + 2>/dev/null || true
|
find "$SITE_PACKAGES" -type d -name tests -exec rm -rf {} + 2>/dev/null || true
|
||||||
find "$SITE_PACKAGES" -type d -name test -exec rm -rf {} + 2>/dev/null || true
|
find "$SITE_PACKAGES" -type d -name test -exec rm -rf {} + 2>/dev/null || true
|
||||||
|
find "$SITE_PACKAGES" -type d -name "*.dist-info" -exec rm -rf {} + 2>/dev/null || true
|
||||||
|
find "$SITE_PACKAGES" -name "*.pyi" -delete 2>/dev/null || true
|
||||||
|
|
||||||
|
# Remove pip and setuptools (not needed at runtime)
|
||||||
|
rm -rf "$SITE_PACKAGES"/pip "$SITE_PACKAGES"/pip-* 2>/dev/null || true
|
||||||
|
rm -rf "$SITE_PACKAGES"/setuptools "$SITE_PACKAGES"/setuptools-* "$SITE_PACKAGES"/pkg_resources 2>/dev/null || true
|
||||||
|
rm -rf "$SITE_PACKAGES"/_distutils_hack 2>/dev/null || true
|
||||||
|
|
||||||
|
# Remove pythonwin GUI IDE (ships with pywin32 but not needed)
|
||||||
|
rm -rf "$SITE_PACKAGES"/pythonwin 2>/dev/null || true
|
||||||
|
|
||||||
|
# OpenCV: remove unused extra modules and data (~40MB savings)
|
||||||
|
CV2_DIR="$SITE_PACKAGES/cv2"
|
||||||
|
if [ -d "$CV2_DIR" ]; then
|
||||||
|
# Keep only the core .pyd and python wrapper
|
||||||
|
find "$CV2_DIR" -name "*.pyd" ! -name "cv2*" -delete 2>/dev/null || true
|
||||||
|
rm -rf "$CV2_DIR/data" "$CV2_DIR/gapi" "$CV2_DIR/misc" "$CV2_DIR/utils" 2>/dev/null || true
|
||||||
|
rm -rf "$CV2_DIR/typing_stubs" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# numpy: remove tests, f2py, typing stubs
|
||||||
|
rm -rf "$SITE_PACKAGES/numpy/tests" "$SITE_PACKAGES/numpy/*/tests" 2>/dev/null || true
|
||||||
|
rm -rf "$SITE_PACKAGES/numpy/f2py" 2>/dev/null || true
|
||||||
|
rm -rf "$SITE_PACKAGES/numpy/typing" 2>/dev/null || true
|
||||||
|
rm -rf "$SITE_PACKAGES/numpy/_pyinstaller" 2>/dev/null || true
|
||||||
|
|
||||||
|
# Pillow: remove unused image plugins' test data
|
||||||
|
rm -rf "$SITE_PACKAGES/PIL/tests" 2>/dev/null || true
|
||||||
|
|
||||||
|
# winsdk: remove type stubs and unused namespaces
|
||||||
|
find "$SITE_PACKAGES/winsdk" -name "*.pyi" -delete 2>/dev/null || true
|
||||||
|
|
||||||
# Remove wled_controller if it got installed
|
# Remove wled_controller if it got installed
|
||||||
rm -rf "$SITE_PACKAGES"/wled_controller* "$SITE_PACKAGES"/wled*.dist-info 2>/dev/null || true
|
rm -rf "$SITE_PACKAGES"/wled_controller* "$SITE_PACKAGES"/wled*.dist-info 2>/dev/null || true
|
||||||
|
|
||||||
|
CLEANED_SIZE=$(du -sh "$SITE_PACKAGES" | cut -f1)
|
||||||
|
echo " Site-packages after cleanup: $CLEANED_SIZE"
|
||||||
|
|
||||||
WHEEL_COUNT=$(ls "$WHEEL_DIR"/*.whl 2>/dev/null | wc -l)
|
WHEEL_COUNT=$(ls "$WHEEL_DIR"/*.whl 2>/dev/null | wc -l)
|
||||||
echo " Installed $WHEEL_COUNT packages"
|
echo " Installed $WHEEL_COUNT packages"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user