fester/backend/graph/target_dag.py

61 lines
1.3 KiB
Python

def build_target_dag(project, targets):
dag = []
for target in targets:
dag.append({
"name": f"{target.system}-{target.arch}",
"target": target,
"steps": generate_steps(project, target)
})
return dag
def generate_steps(project, target):
steps = []
# -----------------------------
# SYSTEM-SPECIFIC BUILD LOGIC
# -----------------------------
if target.system == "gentoo":
steps.append({
"name": "emerge",
"command": f"emerge -e {project['name']}"
})
elif target.system == "buildroot":
steps.append({
"name": "buildroot",
"command": "make"
})
elif target.system == "openwrt":
steps.append({
"name": "openwrt",
"command": "make world"
})
elif target.system == "alfs":
steps.append({
"name": "alfs",
"command": "./build-lfs.sh"
})
elif target.system == "sourcemage":
steps.append({
"name": "sorcery",
"command": "cast " + project["name"]
})
elif target.system == "lunar":
steps.append({
"name": "lunar",
"command": "lunar build " + project["name"]
})
return steps