diff --git a/build-dist-windows.sh b/build-dist-windows.sh index 53e4873..2340cd3 100644 --- a/build-dist-windows.sh +++ b/build-dist-windows.sh @@ -276,14 +276,51 @@ for sdist in "$WHEEL_DIR"/*.tar.gz; do rm -rf "$TMPDIR" 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 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 "*.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 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) echo " Installed $WHEEL_COUNT packages"