| | |
| | | #!/usr/bin/env python3 |
| | | """ |
| | | Script to build a standalone executable for archbuild using PyInstaller. |
| | | Script to build a standalone executable for archrepobuild using PyInstaller. |
| | | """ |
| | | |
| | | import subprocess |
| | | import sys |
| | | import os |
| | | import shutil |
| | | from pathlib import Path |
| | | |
| | | def build(): |
| | |
| | | src = root / "src" |
| | | |
| | | # Create a temporary entry script |
| | | entry_script = root / "archbuild_entry.py" |
| | | entry_script.write_text("from archbuild.cli import main\nif __name__ == '__main__':\n main()\n") |
| | | entry_script = root / "archrepobuild_entry.py" |
| | | entry_script.write_text("from archrepobuild.cli import main\nif __name__ == '__main__':\n main()\n") |
| | | |
| | | # PyInstaller command |
| | | cmd = [ |
| | | "pyinstaller", |
| | | pyinstaller_exe = shutil.which("pyinstaller") |
| | | if pyinstaller_exe: |
| | | cmd = [pyinstaller_exe] |
| | | else: |
| | | cmd = [sys.executable, "-m", "PyInstaller"] |
| | | |
| | | cmd += [ |
| | | "--onefile", |
| | | "--name", "archbuild-bin", |
| | | "--name", "archrepobuild", |
| | | "--paths", str(src), |
| | | "--clean", |
| | | "--collect-all", "archbuild", |
| | | "--collect-all", "archrepobuild", |
| | | "--collect-all", "rich", |
| | | str(entry_script) |
| | | ] |
| | | |
| | |
| | | try: |
| | | result = subprocess.run(cmd, cwd=root) |
| | | if result.returncode == 0: |
| | | print("\nSuccessfully built executable: dist/archbuild-bin") |
| | | print("\nSuccessfully built executable: dist/archrepobuild") |
| | | else: |
| | | print("\nBuild failed!") |
| | | sys.exit(result.returncode) |