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