build_exo.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import site
  2. import subprocess
  3. import sys
  4. import os
  5. def run():
  6. site_packages = site.getsitepackages()[0]
  7. command = [
  8. f"{sys.executable}", "-m", "nuitka", "exo/main.py",
  9. "--company-name=exolabs",
  10. "--product-name=exo",
  11. "--output-dir=dist",
  12. "--follow-imports",
  13. "--standalone",
  14. "--output-filename=exo",
  15. "--onefile",
  16. "--python-flag=no_site"
  17. ]
  18. if sys.platform == "darwin":
  19. command.extend([
  20. "--macos-app-name=exo",
  21. "--macos-app-mode=gui",
  22. "--macos-app-version=0.0.1",
  23. "--include-module=exo.inference.mlx.models.*",
  24. "--include-distribution-meta=mlx",
  25. "--include-module=mlx._reprlib_fix",
  26. "--include-module=mlx._os_warning",
  27. f"--include-data-files={site_packages}/mlx/lib/mlx.metallib=mlx/lib/mlx.metallib",
  28. f"--include-data-files={site_packages}/mlx/lib/mlx.metallib=./mlx.metallib",
  29. "--include-distribution-meta=pygments",
  30. "--nofollow-import-to=tinygrad"
  31. ])
  32. elif sys.platform == "win32":
  33. command.extend([
  34. "--windows-icon-from-ico=docs/exo-logo-win.ico",
  35. "--file-version=0.0.1",
  36. "--product-version=0.0.1"
  37. ])
  38. elif sys.platform.startswith("linux"):
  39. command.extend([
  40. "--include-distribution-metadata=pygments",
  41. "--linux-icon=docs/exo-rounded.png"
  42. ])
  43. try:
  44. subprocess.run(command, check=True)
  45. print("Build completed!")
  46. except subprocess.CalledProcessError as e:
  47. print(f"An error occurred: {e}")
  48. if __name__ == "__main__":
  49. run()