48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Build shim. Project metadata lives in ``pyproject.toml``; this only adds a
|
|
build step that copies the root-level build resources (the Dockerfiles, the
|
|
nix netpool module, the netpool script, and ``pyproject.toml``) into
|
|
``bot_bottle/_resources/`` so an installed wheel is self-contained and can
|
|
build its gateway/infra/orchestrator images without a source checkout.
|
|
|
|
Kept in sync with ``bot_bottle.resources.BUNDLED_RESOURCES`` — the
|
|
``test_resources`` suite guards against drift between the two lists.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
from setuptools import setup
|
|
from setuptools.command.build_py import build_py
|
|
|
|
_ROOT = Path(__file__).resolve().parent
|
|
|
|
# Must match bot_bottle.resources.BUNDLED_RESOURCES (paths relative to root).
|
|
_BUNDLED_RESOURCES = (
|
|
"pyproject.toml",
|
|
"Dockerfile.gateway",
|
|
"Dockerfile.orchestrator",
|
|
"Dockerfile.orchestrator.fc",
|
|
"requirements.gateway.lock",
|
|
"nix/firecracker-netpool.nix",
|
|
"scripts/firecracker-netpool.sh",
|
|
)
|
|
|
|
|
|
class _BundleResources(build_py):
|
|
"""Copy the root-level build resources into the built package tree so they
|
|
ship inside the wheel under ``bot_bottle/_resources/``."""
|
|
|
|
def run(self) -> None:
|
|
super().run()
|
|
pkg_resources = Path(self.build_lib) / "bot_bottle" / "_resources"
|
|
for rel in _BUNDLED_RESOURCES:
|
|
src = _ROOT / rel
|
|
dst = pkg_resources / rel
|
|
dst.parent.mkdir(parents=True, exist_ok=True)
|
|
shutil.copy2(src, dst)
|
|
|
|
|
|
setup(cmdclass={"build_py": _BundleResources})
|