mitmproxy/release/specs/windows-dir.spec
Maximilian Hils cca242a581 Windows: build pyinstaller onedir and use it for installer
This greatly improves startup time as pyinstaller doesn't have to
unpack everything on startup. The same also applies to macOS and Linux,
but there we 1) don't have installers to hide all the files and
2) have a filesystem that deals much better with lots of small files.

Additionally, simplify cibuild to be a bit more reasonable.
2021-01-05 15:56:33 +01:00

43 lines
950 B
Python

from pathlib import Path
from PyInstaller.building.api import PYZ, EXE, COLLECT
from PyInstaller.building.build_main import Analysis
assert SPECPATH == "."
here = Path(r".")
tools = ["mitmproxy", "mitmdump", "mitmweb"]
analysis = Analysis(
tools,
excludes=["tcl", "tk", "tkinter"],
pathex=[str(here)],
hookspath=[str(here / ".." / "hooks")],
)
pyz = PYZ(analysis.pure, analysis.zipped_data)
executables = []
for tool in tools:
executables.append(EXE(
pyz,
# analysis.scripts has all runtime hooks and all of our tools.
# remove the other tools.
[s for s in analysis.scripts if s[0] not in tools or s[0] == tool],
[],
exclude_binaries=True,
name=tool,
console=True,
upx=False,
icon='icon.ico'
))
COLLECT(
*executables,
analysis.binaries,
analysis.zipfiles,
analysis.datas,
strip=False,
upx=False,
name="onedir"
)