mirror of
https://github.com/blw1138/Zordon.git
synced 2026-02-04 21:26:09 +00:00
158 lines
3.2 KiB
Python
158 lines
3.2 KiB
Python
# -*- mode: python ; coding: utf-8 -*-
|
|
|
|
from PyInstaller.utils.hooks import collect_all
|
|
from pathlib import Path
|
|
import os
|
|
import sys
|
|
import platform
|
|
|
|
# ------------------------------------------------------------
|
|
# Project paths
|
|
# ------------------------------------------------------------
|
|
|
|
project_root = Path(SPECPATH).resolve()
|
|
src_dir = project_root / "src"
|
|
|
|
# Ensure `src.*` imports work during analysis
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
# ------------------------------------------------------------
|
|
# Import version info
|
|
# ------------------------------------------------------------
|
|
|
|
from src.version import APP_NAME, APP_VERSION, APP_AUTHOR
|
|
|
|
APP_NAME = f"{APP_NAME}-server"
|
|
|
|
# ------------------------------------------------------------
|
|
# PyInstaller data / imports
|
|
# ------------------------------------------------------------
|
|
|
|
datas = [
|
|
("resources", "resources"),
|
|
("src/engines/blender/scripts", "src/engines/blender/scripts"),
|
|
]
|
|
|
|
binaries = []
|
|
hiddenimports = ["zeroconf", "src.version"]
|
|
|
|
tmp_ret = collect_all("zeroconf")
|
|
datas += tmp_ret[0]
|
|
binaries += tmp_ret[1]
|
|
hiddenimports += tmp_ret[2]
|
|
|
|
# ------------------------------------------------------------
|
|
# Analysis
|
|
# ------------------------------------------------------------
|
|
|
|
a = Analysis(
|
|
["server.py"],
|
|
pathex=[str(project_root)],
|
|
binaries=binaries,
|
|
datas=datas,
|
|
hiddenimports=hiddenimports,
|
|
hookspath=[],
|
|
hooksconfig={},
|
|
runtime_hooks=[],
|
|
excludes=[],
|
|
noarchive=False,
|
|
optimize=1, # optimize=2 breaks Windows builds
|
|
)
|
|
|
|
pyz = PYZ(a.pure)
|
|
|
|
# ------------------------------------------------------------
|
|
# Platform targets
|
|
# ------------------------------------------------------------
|
|
|
|
if platform.system() == "Darwin": # macOS
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
[],
|
|
exclude_binaries=True,
|
|
name=APP_NAME,
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=True,
|
|
upx=True,
|
|
console=False,
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
)
|
|
|
|
app = BUNDLE(
|
|
exe,
|
|
a.binaries,
|
|
a.datas,
|
|
strip=True,
|
|
name=f"{APP_NAME}.app",
|
|
icon="resources/Server.png",
|
|
bundle_identifier=None,
|
|
version=APP_VERSION,
|
|
)
|
|
|
|
elif platform.system() == "Windows":
|
|
|
|
import pyinstaller_versionfile
|
|
import tempfile
|
|
|
|
version_file_path = os.path.join(
|
|
tempfile.gettempdir(), "versionfile.txt"
|
|
)
|
|
|
|
pyinstaller_versionfile.create_versionfile(
|
|
output_file=version_file_path,
|
|
version=APP_VERSION,
|
|
company_name=APP_AUTHOR,
|
|
file_description=APP_NAME,
|
|
internal_name=APP_NAME,
|
|
legal_copyright=f"© {APP_AUTHOR}",
|
|
original_filename=f"{APP_NAME}.exe",
|
|
product_name=APP_NAME,
|
|
)
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.datas,
|
|
[],
|
|
name=APP_NAME,
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=True,
|
|
upx=True,
|
|
console=False,
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
version=version_file_path,
|
|
)
|
|
|
|
else: # Linux
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.datas,
|
|
[],
|
|
name=APP_NAME,
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=True,
|
|
upx=True,
|
|
console=False,
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
) |