flowey_lib_hvlite/_jobs/
local_restore_packages.rs1use crate::download_lxutil::LxutilArch;
5use crate::download_uefi_mu_msvm::MuMsvmArch;
6use crate::init_openvmm_magicpath_linux_test_kernel::OpenvmmLinuxTestKernelArch;
7use crate::init_openvmm_magicpath_openhcl_sysroot::OpenvmmSysrootArch;
8use crate::run_cargo_build::common::CommonArch;
9use flowey::node::prelude::*;
10
11flowey_request! {
12 pub struct Request{
13 pub arches: Vec<CommonArch>,
14 pub done: WriteVar<SideEffect>,
15 pub release_artifact: ReadVar<PathBuf>,
16 }
17}
18
19new_simple_flow_node!(struct Node);
20
21impl SimpleFlowNode for Node {
22 type Request = Request;
23
24 fn imports(ctx: &mut ImportCtx<'_>) {
25 ctx.import::<crate::init_openvmm_magicpath_linux_test_kernel::Node>();
26 ctx.import::<crate::init_openvmm_magicpath_lxutil::Node>();
27 ctx.import::<crate::init_openvmm_magicpath_openhcl_sysroot::Node>();
28 ctx.import::<crate::init_openvmm_magicpath_release_openhcl_igvm::resolve::Node>();
29 ctx.import::<crate::init_openvmm_magicpath_protoc::Node>();
30 ctx.import::<crate::init_openvmm_magicpath_uefi_mu_msvm::Node>();
31 }
32
33 fn process_request(request: Self::Request, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
34 let Request {
35 arches,
36 done,
37 release_artifact,
38 } = request;
39
40 let mut deps = vec![ctx.reqv(crate::init_openvmm_magicpath_protoc::Request)];
41
42 for arch in arches {
43 match arch {
44 CommonArch::X86_64 => {
45 if matches!(ctx.platform(), FlowPlatform::Linux(_)) {
46 deps.extend_from_slice(&[ctx
47 .reqv(|v| crate::init_openvmm_magicpath_openhcl_sysroot::Request {
48 arch: OpenvmmSysrootArch::X64,
49 path: v,
50 })
51 .into_side_effect()]);
52 }
53 deps.extend_from_slice(&[
54 ctx.reqv(|done| crate::init_openvmm_magicpath_lxutil::Request {
55 arch: LxutilArch::X86_64,
56 done,
57 }),
58 ctx.reqv(|done| crate::init_openvmm_magicpath_uefi_mu_msvm::Request {
59 arch: MuMsvmArch::X86_64,
60 done,
61 }),
62 ctx.reqv(
63 |done| crate::init_openvmm_magicpath_linux_test_kernel::Request {
64 arch: OpenvmmLinuxTestKernelArch::X64,
65 done,
66 },
67 ),
68 ]);
69 }
70 CommonArch::Aarch64 => {
71 if matches!(ctx.platform(), FlowPlatform::Linux(_)) {
72 deps.extend_from_slice(&[ctx
73 .reqv(|v| crate::init_openvmm_magicpath_openhcl_sysroot::Request {
74 arch: OpenvmmSysrootArch::Aarch64,
75 path: v,
76 })
77 .into_side_effect()]);
78 }
79 deps.extend_from_slice(&[
80 ctx.reqv(|done| crate::init_openvmm_magicpath_lxutil::Request {
81 arch: LxutilArch::Aarch64,
82 done,
83 }),
84 ctx.reqv(|done| crate::init_openvmm_magicpath_uefi_mu_msvm::Request {
85 arch: MuMsvmArch::Aarch64,
86 done,
87 }),
88 ctx.reqv(
89 |done| crate::init_openvmm_magicpath_linux_test_kernel::Request {
90 arch: OpenvmmLinuxTestKernelArch::Aarch64,
91 done,
92 },
93 ),
94 ]);
95 }
96 }
97
98 deps.push(
99 ctx.reqv(
100 |v| crate::init_openvmm_magicpath_release_openhcl_igvm::resolve::Request {
101 arch,
102 release_version:
103 crate::download_release_igvm_files_from_gh::OpenhclReleaseVersion::latest(),
104 release_artifact:release_artifact.clone(),
105 done: v,
106 },
107 )
108 .into_side_effect(),
109 );
110 }
111
112 ctx.emit_side_effect_step(deps, [done]);
113
114 Ok(())
115 }
116}