mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-11-14 09:14:14 +00:00
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
# -*- mode: python -*-
|
|
import importlib
|
|
import os
|
|
import importlib_metadata
|
|
|
|
block_cipher = None
|
|
|
|
datas = [("./tutor/templates", "./tutor/templates")]
|
|
hidden_imports = []
|
|
|
|
# Auto-discover plugins and include patches & templates folders
|
|
for entrypoint_version in ["tutor.plugin.v0", "tutor.plugin.v1"]:
|
|
for entrypoint in importlib_metadata.entry_points(group=entrypoint_version):
|
|
plugin_name = entrypoint.name
|
|
try:
|
|
plugin = importlib.import_module(entrypoint.value)
|
|
except Exception as e:
|
|
print(f"ERROR Failed to load plugin {plugin_name}: {e}")
|
|
continue
|
|
plugin_root = os.path.dirname(plugin.__file__)
|
|
plugin_root_module_name = os.path.basename(plugin_root)
|
|
hidden_imports.append(entrypoint.module)
|
|
for folder in ["patches", "templates"]:
|
|
path = os.path.join(plugin_root, folder)
|
|
if os.path.exists(path):
|
|
datas.append((path, os.path.join(plugin_root_module_name, folder)))
|
|
# Fix license import: if we don't declare some modules, pyinstaller does not find them
|
|
hidden_imports.append("tutorlts.__about__")
|
|
hidden_imports.append("Crypto.Cipher.AES")
|
|
hidden_imports.append("Crypto.Cipher.PKCS1_OAEP")
|
|
hidden_imports.append("Crypto.Hash.SHA256")
|
|
hidden_imports.append("Crypto.PublicKey.RSA")
|
|
hidden_imports.append("Crypto.Random")
|
|
hidden_imports.append("Crypto.Signature.PKCS1_v1_5")
|
|
hidden_imports.append("kubernetes")
|
|
hidden_imports.append("uuid")
|
|
|
|
|
|
# The following was initially generated with:
|
|
# pyinstaller --onefile --name=tutor --add-data=./tutor/templates:./tutor/templates ./bin/main.py
|
|
|
|
a = Analysis(
|
|
["bin/main.py"],
|
|
pathex=[os.path.abspath(".")],
|
|
binaries=[],
|
|
datas=datas,
|
|
hiddenimports=hidden_imports,
|
|
hookspath=[],
|
|
runtime_hooks=[],
|
|
excludes=[],
|
|
win_no_prefer_redirects=False,
|
|
win_private_assemblies=False,
|
|
cipher=block_cipher,
|
|
noarchive=False,
|
|
)
|
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
a.binaries,
|
|
a.zipfiles,
|
|
a.datas,
|
|
[],
|
|
name="tutor",
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=False,
|
|
upx=True,
|
|
runtime_tmpdir=None,
|
|
console=True,
|
|
)
|