mcp-ollama-python.spec
Rama main · réplica de lectura del repositorio original.
# -*- mode: python ; coding: utf-8 -*-
# from terminal/cli, run: poetry shell & pyinstaller mcp-ollama-python.spec --clean --distpath bin
# or from poetry, run: poetry run pyinstaller mcp-ollama-python.spec --clean --distpath bin
import os
import platform
import re
import struct
from pathlib import Path
# ---------------------------------------------------------------------------
# Read version from pyproject.toml
# ---------------------------------------------------------------------------
_pyproject = Path(SPECPATH) / "pyproject.toml"
try:
import tomllib
_version_str = tomllib.loads(_pyproject.read_text(encoding="utf-8"))["tool"]["poetry"]["version"]
except Exception:
_m = re.search(r'^version\s*=\s*["\']([^"\']+)["\']', _pyproject.read_text(encoding="utf-8"), re.MULTILINE)
_version_str = _m.group(1) if _m else "0.0.0"
_ver_parts = [int(x) for x in _version_str.split(".")]
while len(_ver_parts) < 4:
_ver_parts.append(0)
_ver_tuple = tuple(_ver_parts[:4])
from PyInstaller.utils.win32.versioninfo import (
FixedFileInfo,
StringFileInfo,
StringStruct,
StringTable,
VarFileInfo,
VarStruct,
VSVersionInfo,
)
_version_info = VSVersionInfo(
ffi=FixedFileInfo(
filevers=_ver_tuple,
prodvers=_ver_tuple,
mask=0x3F,
flags=0x0,
OS=0x40004,
fileType=0x1,
subtype=0x0,
date=(0, 0),
),
kids=[
StringFileInfo(
[
StringTable(
"040904B0",
[
StringStruct("CompanyName", "Pedja Blagojevic"),
StringStruct("FileDescription", "MCP Ollama Python Server"),
StringStruct("FileVersion", _version_str),
StringStruct("InternalName", "mcp-ollama-python"),
StringStruct("OriginalFilename", "mcp-ollama-python.exe"),
StringStruct("ProductName", "MCP Ollama Python"),
StringStruct("ProductVersion", _version_str),
],
)
]
),
VarFileInfo([VarStruct("Translation", [1033, 1200])]),
],
)
# ---------------------------------------------------------------------------
# Detect OS and architecture for the EXE filename
# ---------------------------------------------------------------------------
_arch = "x64" if struct.calcsize("P") * 8 == 64 else "x86"
_os_tag = os.environ.get("MCP_OS_TAG", "")
if not _os_tag:
if platform.system() == "Windows":
_win_ver = platform.version() # e.g. "10.0.22631"
_build = int(_win_ver.split(".")[-1]) if _win_ver else 0
if _build >= 22000:
_os_tag = "win11"
else:
_os_tag = "win10"
elif platform.system() == "Darwin":
_os_tag = f"macos{platform.mac_ver()[0]}"
else:
_os_tag = "linux"
_exe_name = f"mcp-ollama-python-{_version_str}-{_os_tag}-{_arch}"
block_cipher = None
a = Analysis(
['src/mcp_ollama_python/main.py'],
pathex=['src'],
binaries=[],
datas=[],
hiddenimports=[
# Standard library
'asyncio',
'signal',
'sys',
'typing',
# Timezone data
'tzdata',
# MCP dependencies
'mcp',
'mcp.server',
'mcp.server.stdio',
'mcp.types',
'mcp.shared',
'mcp.shared.memory',
# HTTP client
'httpx',
'httpx._transports',
'httpx._transports.default',
# Pydantic
'pydantic',
'pydantic.fields',
'pydantic_core',
# Rich console
'rich',
'rich.console',
'rich.logging',
# System utilities
'psutil',
# JSON handling
'json',
'jsonschema',
# Internal modules
'mcp_ollama_python',
'mcp_ollama_python.server',
'mcp_ollama_python.ollama_client',
'mcp_ollama_python.models',
'mcp_ollama_python.response_formatter',
'mcp_ollama_python.autoloader',
'mcp_ollama_python.tools',
'mcp_ollama_python.tools.chat',
'mcp_ollama_python.tools.delete',
'mcp_ollama_python.tools.embed',
'mcp_ollama_python.tools.generate',
'mcp_ollama_python.tools.list',
'mcp_ollama_python.tools.ps',
'mcp_ollama_python.tools.pull',
'mcp_ollama_python.tools.show',
# Async support
'anyio',
'anyio._backends',
'anyio._backends._asyncio',
'sniffio',
# SSL/HTTP support
'certifi',
'httpcore',
'h11',
'idna',
],
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.datas,
[],
name=_exe_name,
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=None,
version=_version_info,
)