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