37 lines
1,000 B
Python
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)
|