94 lines
2.4 KiB
Python
94 lines
2.4 KiB
Python
# -*- mode: python ; coding: utf-8 -*-
|
|
|
|
import sys
|
|
import os
|
|
import glob
|
|
|
|
from PyInstaller.utils.hooks import collect_submodules, collect_data_files
|
|
|
|
block_cipher = None
|
|
|
|
# customtkinter ships JSON themes + assets that must be bundled
|
|
import customtkinter
|
|
ctk_path = os.path.dirname(customtkinter.__file__)
|
|
|
|
# Collect gi (PyGObject) submodules and data so pystray._appindicator works
|
|
gi_hiddenimports = collect_submodules('gi')
|
|
gi_datas = collect_data_files('gi')
|
|
|
|
# Collect GObject typelib files from the system
|
|
typelib_dirs = glob.glob('/usr/lib/*/girepository-1.0')
|
|
typelib_datas = []
|
|
for d in typelib_dirs:
|
|
typelib_datas.append((d, 'gi_typelibs'))
|
|
|
|
a = Analysis(
|
|
[os.path.join(os.path.dirname(SPEC), os.pardir, 'linux.py')],
|
|
pathex=[],
|
|
binaries=[],
|
|
datas=[(ctk_path, 'customtkinter/')] + gi_datas + typelib_datas,
|
|
hiddenimports=[
|
|
'pystray._appindicator',
|
|
'PIL._tkinter_finder',
|
|
'customtkinter',
|
|
'cryptography.hazmat.primitives.ciphers',
|
|
'cryptography.hazmat.primitives.ciphers.algorithms',
|
|
'cryptography.hazmat.primitives.ciphers.modes',
|
|
'cryptography.hazmat.backends.openssl',
|
|
'gi',
|
|
'_gi',
|
|
'gi.repository.GLib',
|
|
'gi.repository.GObject',
|
|
'gi.repository.Gtk',
|
|
'gi.repository.Gdk',
|
|
'gi.repository.AyatanaAppIndicator3',
|
|
] + gi_hiddenimports,
|
|
hookspath=[],
|
|
hooksconfig={},
|
|
runtime_hooks=[],
|
|
excludes=[
|
|
'PIL._avif',
|
|
'PIL._webp',
|
|
'PIL._imagingtk',
|
|
],
|
|
noarchive=False,
|
|
cipher=block_cipher,
|
|
)
|
|
|
|
_PIL_EXCLUDE_PYDS = {
|
|
'_avif', '_webp', '_imagingtk',
|
|
'FpxImagePlugin', 'MicImagePlugin',
|
|
}
|
|
a.binaries = [
|
|
(name, path, typ)
|
|
for name, path, typ in a.binaries
|
|
if not any(ex in name for ex in _PIL_EXCLUDE_PYDS)
|
|
]
|
|
|
|
icon_path = os.path.join(os.path.dirname(SPEC), os.pardir, 'icon.ico')
|
|
if os.path.exists(icon_path):
|
|
a.datas += [('icon.ico', icon_path, 'DATA')]
|
|
|
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.zipfiles,
|
|
a.datas,
|
|
[],
|
|
name='TgWsProxy',
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=True,
|
|
upx=True,
|
|
upx_exclude=[],
|
|
runtime_tmpdir=None,
|
|
console=False,
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
)
|