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