diff --git a/zenmap/install_scripts/windows/build.sh b/zenmap/install_scripts/windows/build.sh index bd1013d7a..a3244bcd1 100644 --- a/zenmap/install_scripts/windows/build.sh +++ b/zenmap/install_scripts/windows/build.sh @@ -31,35 +31,76 @@ pip3 install . #MULTILINE_COMMENT # make the zenmap package -makepkg-mingw -RdfL +#makepkg-mingw -RdfL # make the minimal msys2 environment -styrene -p . -o "$BUILDDIR" styrene.cfg --no-exe --no-zip +#styrene -p . -o "$BUILDDIR" styrene.cfg --no-exe --no-zip +PACKAGEDIR=$BUILDDIR/zenmap-w64 +PYTHONLIB=$(ls -d $PACKAGEDIR/mingw64/lib/python3.*) # Clean up unused Python modules -rm -rf "$BUILDDIR/**/*.opt-?.pyc" -rm -rf "$BUILDDIR/distutils/" -rm -rf "$BUILDDIR/pydoc_data/" -rm -rf "$BUILDDIR/ctypes/" -rm -rf "$BUILDDIR/asyncio/" -rm -rf "$BUILDDIR/multiprocessing/" -rm -rf "$BUILDDIR/html/" -rm -rf "$BUILDDIR/msilib/" -rm -rf "$BUILDDIR/venv/" -rm -rf "$BUILDDIR/xmlrpc/" -rm -rf "$BUILDDIR/concurrent/" -rm -rf "$BUILDDIR/json/" -rm -rf "$BUILDDIR/config-3.*/" -rm -rf "$BUILDDIR/zoneinfo/" +shopt -s globstar +rm -rf "$PYTHONLIB"/distutils/ +rm -rf "$PYTHONLIB"/pydoc_data/ +rm -rf "$PYTHONLIB"/ctypes/ +rm -rf "$PYTHONLIB"/asyncio/ +rm -rf "$PYTHONLIB"/multiprocessing/ +rm -rf "$PYTHONLIB"/html/ +rm -rf "$PYTHONLIB"/curses/ +rm -rf "$PYTHONLIB"/ensurepip/ +rm -rf "$PYTHONLIB"/idlelib/ +rm -rf "$PYTHONLIB"/lib2to3/ +rm -rf "$PYTHONLIB"/msilib/ +rm -rf "$PYTHONLIB"/venv/ +rm -rf "$PYTHONLIB"/xmlrpc/ +rm -rf "$PYTHONLIB"/concurrent/ +rm -rf "$PYTHONLIB"/json/ +rm -rf "$PYTHONLIB"/test/ +rm -rf "$PYTHONLIB"/tkinter/ +rm -rf "$PYTHONLIB"/turtledemo/ +rm -rf "$PYTHONLIB"/wsgiref/ +rm -rf "$PYTHONLIB"/Tools/ +rm -rf "$PYTHONLIB"/config-3.*/ +rm -rf "$PYTHONLIB"/zoneinfo/ +# Remove some of the larger unused items +rm "$PYTHONLIB"/_pydecimal.py +rm "$PYTHONLIB"/turtle.py +rm "$PYTHONLIB"/lib-dynload/_decimal.*.pyd +rm "$PYTHONLIB"/lib-dynload/_testcapi.*.pyd +rm -rf "$PYTHONLIB"/site-packages/**/*libxml2* + +# Remove compiled bytecode, recompile in legacy locations, allowing for removal of source. +# See PEP-3147 +find "$PYTHONLIB" -depth \( -name 'zenmap*' -o -name 'radialnet' \) -prune -o -name __pycache__ -exec rm -rf '{}' \; +# Exit code not reliable +"$BUILDDIR/zenmap-w64/mingw64/bin/python.exe" -m compileall -b -x 'zenmapGUI|zenmapCore|radialnet' "$PYTHONLIB" || true + +# Remove source if compiled is available, except for Zenmap itself: +find "$PYTHONLIB" \( -name 'zenmap*' -o -name 'radialnet' \) -prune -o \( -name '*.pyc' -print \) | while read pyc; do +pysrc="${pyc%.pyc}.py" +if [ -f "$pysrc" ]; then + rm "$pysrc" +fi +done + +# Now compile Zenmap using default (not legacy) location. +# If we had used legacy location, python.exe tries to write out the PEP-3147 +# location anyway when source is available. +"$BUILDDIR/zenmap-w64/mingw64/bin/python.exe" -m compileall "$PYTHONLIB"/site-packages || true + +# Remove some of the larger unused items +rm "$PACKAGEDIR"/mingw64/bin/libGLESv*.dll +rm "$PACKAGEDIR"/mingw64/bin/libEGL.dll +# strip binaries +find "$PACKAGEDIR" \( -name '*.exe' -o -name '*.dll' \) -exec strip -g '{}' \; # Remove pacman database -rm -rf var/lib/pacman/ +rm -rf "$PACKAGEDIR/var/lib/pacman/" # fake a new install script for what we removed: -mkdir -p var/lib/pacman/local/zenmap-fake-pkg/ -cat >var/lib/pacman/local/zenmap-fake-pkg/install <"$PACKAGEDIR/var/lib/pacman/local/zenmap-fake-pkg/install" <