go-org-py/setup.py
2025-06-23 17:25:28 +02:00

37 lines
1,000 B
Python

import os
import shutil
import subprocess
from pathlib import Path
from setuptools import setup
from setuptools.command.build_py import build_py
ROOT = Path(__file__).resolve().parent
PKG_DIR = ROOT / "go_org_py"
BUILD_DIR = ROOT / "gopy_build"
class GopyHook(build_py):
def run(self):
self._run_gopy()
subprocess.run(["ls", "-la"], check=True)
super().run()
def _run_gopy(self):
BUILD_DIR.mkdir(exist_ok=True)
env = os.environ.copy()
env["CGO_CFLAGS"] = "-std=gnu11 -O2"
subprocess.check_call(
["gopy", "build", "-output", str(BUILD_DIR), "-vm", "python3", "."],
env=env,
cwd=Path(__file__).resolve().parent,
)
shutil.copy2(BUILD_DIR / "convert.py", PKG_DIR)
shutil.copy2(BUILD_DIR / "go.py", PKG_DIR)
for lib in BUILD_DIR.glob("*/go_*.so"):
shutil.copy2(lib, PKG_DIR / lib.name)
setup(cmdclass={"build_py": GopyHook}, include_package_data=True)