132 lines
3.3 KiB
RPMSpec
132 lines
3.3 KiB
RPMSpec
# -*- mode: python ; coding: utf-8 -*-
|
|
import os
|
|
from PyInstaller.utils.hooks import collect_all, collect_submodules
|
|
|
|
|
|
def safe_collect_submodules(package_name):
|
|
try:
|
|
return collect_submodules(package_name)
|
|
except Exception:
|
|
return []
|
|
|
|
|
|
def safe_collect_all(package_name):
|
|
try:
|
|
return collect_all(package_name)
|
|
except Exception:
|
|
# Some optional packages are platform-dependent.
|
|
return [], [], []
|
|
|
|
|
|
datas_fastembed, binaries_fastembed, hiddenimports_fastembed = safe_collect_all(
|
|
"fastembed"
|
|
)
|
|
datas_fastembed_vs, binaries_fastembed_vs, hiddenimports_fastembed_vs = (
|
|
safe_collect_all("fastembed_vectorstore")
|
|
)
|
|
datas_onnx, binaries_onnx, hiddenimports_onnx = safe_collect_all("onnxruntime")
|
|
datas_pptx, binaries_pptx, hiddenimports_pptx = safe_collect_all("pptx")
|
|
datas_docx2everything, binaries_docx2everything, hiddenimports_docx2everything = (
|
|
safe_collect_all("docx2everything")
|
|
)
|
|
datas_greenlet, binaries_greenlet, hiddenimports_greenlet = safe_collect_all(
|
|
"greenlet"
|
|
)
|
|
|
|
datas_spacy, binaries_spacy, hiddenimports_spacy = safe_collect_all("spacy")
|
|
datas_spacy_model, binaries_spacy_model, hiddenimports_spacy_model = (
|
|
safe_collect_all("en_core_web_sm")
|
|
)
|
|
|
|
datas_fastembed_cache = (
|
|
[("fastembed_cache", "fastembed_cache")] if os.path.isdir("fastembed_cache") else []
|
|
)
|
|
|
|
# mem0 validates vector store configs via dynamic __import__(mem0.configs.vector_stores.{provider});
|
|
# PyInstaller does not trace those. Embedder/vector classes are loaded by string path at runtime.
|
|
hiddenimports_mem0 = safe_collect_submodules("mem0.configs.vector_stores") + [
|
|
"mem0.embeddings.fastembed",
|
|
"mem0.llms.openai",
|
|
"mem0.vector_stores.qdrant",
|
|
]
|
|
|
|
a = Analysis(
|
|
["server.py"],
|
|
pathex=[],
|
|
binaries=binaries_fastembed
|
|
+ binaries_fastembed_vs
|
|
+ binaries_onnx
|
|
+ binaries_pptx
|
|
+ binaries_docx2everything
|
|
+ binaries_greenlet
|
|
+ binaries_spacy
|
|
+ binaries_spacy_model,
|
|
datas=[
|
|
("assets", "assets"),
|
|
("static", "static"),
|
|
("alembic", "alembic"),
|
|
]
|
|
+ datas_fastembed_cache
|
|
+ datas_fastembed
|
|
+ datas_fastembed_vs
|
|
+ datas_onnx
|
|
+ datas_pptx
|
|
+ datas_docx2everything
|
|
+ datas_greenlet
|
|
+ datas_spacy
|
|
+ datas_spacy_model,
|
|
hiddenimports=[
|
|
"aiosqlite",
|
|
"alembic",
|
|
"sqlite3",
|
|
"numpy",
|
|
"pandas",
|
|
"greenlet",
|
|
"greenlet._greenlet",
|
|
"importlib.metadata",
|
|
]
|
|
+ hiddenimports_fastembed
|
|
+ hiddenimports_fastembed_vs
|
|
+ hiddenimports_onnx
|
|
+ hiddenimports_pptx
|
|
+ hiddenimports_docx2everything
|
|
+ hiddenimports_greenlet
|
|
+ hiddenimports_spacy
|
|
+ hiddenimports_spacy_model
|
|
+ hiddenimports_mem0,
|
|
hookspath=[],
|
|
hooksconfig={},
|
|
runtime_hooks=[],
|
|
excludes=[],
|
|
noarchive=False,
|
|
optimize=0,
|
|
)
|
|
pyz = PYZ(a.pure)
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
[],
|
|
exclude_binaries=True,
|
|
name="fastapi",
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=False,
|
|
upx=False,
|
|
console=False,
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
)
|
|
coll = COLLECT(
|
|
exe,
|
|
a.binaries,
|
|
a.datas,
|
|
strip=False,
|
|
upx=False,
|
|
upx_exclude=[],
|
|
name="fastapi",
|
|
)
|