35 lines
827 B
Python
35 lines
827 B
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class BuildSpec:
|
|
|
|
project: str
|
|
arch: str
|
|
distro_target: str
|
|
toolchain: str
|
|
|
|
# -----------------------------
|
|
# EXECUTION SELECTION
|
|
# -----------------------------
|
|
execution: str # distcc | lxc | libvirt | tmux
|
|
container_backend: str # optional fallback layer
|
|
|
|
# -----------------------------
|
|
# POLICY PROFILE
|
|
# -----------------------------
|
|
profile: str = "balanced"
|
|
|
|
|
|
def from_request(req):
|
|
|
|
return BuildSpec(
|
|
project=req["project"],
|
|
arch=req["arch"],
|
|
distro_target=req["distro_target"],
|
|
toolchain=req["toolchain"],
|
|
execution=req.get("execution", "distcc"),
|
|
container_backend=req.get("container_backend", "lxc"),
|
|
profile=req.get("profile", "balanced")
|
|
)
|