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 arch: CommonArch,
14 pub done: WriteVar<SideEffect>,
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_lxutil::Node>();
26 ctx.import::<crate::init_openvmm_magicpath_openhcl_sysroot::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 { arch, done } = request;
33
34 let mut deps = vec![ctx.reqv(crate::init_openvmm_magicpath_protoc::Request)];
35
36 match arch {
37 CommonArch::X86_64 => {
38 if matches!(ctx.platform(), FlowPlatform::Linux(_)) {
39 deps.extend_from_slice(&[ctx
40 .reqv(|v| crate::init_openvmm_magicpath_openhcl_sysroot::Request {
41 arch: OpenvmmSysrootArch::X64,
42 path: v,
43 })
44 .into_side_effect()]);
45 }
46 deps.extend_from_slice(&[
47 ctx.reqv(|done| crate::init_openvmm_magicpath_lxutil::Request {
48 arch: LxutilArch::X86_64,
49 done,
50 }),
51 ctx.reqv(|done| crate::init_openvmm_magicpath_uefi_mu_msvm::Request {
52 arch: MuMsvmArch::X86_64,
53 done,
54 }),
55 ctx.reqv(
56 |done| crate::init_openvmm_magicpath_linux_test_kernel::Request {
57 arch: OpenvmmLinuxTestKernelArch::X64,
58 done,
59 },
60 ),
61 ]);
62 }
63 CommonArch::Aarch64 => {
64 if matches!(ctx.platform(), FlowPlatform::Linux(_)) {
65 deps.extend_from_slice(&[ctx
66 .reqv(|v| crate::init_openvmm_magicpath_openhcl_sysroot::Request {
67 arch: OpenvmmSysrootArch::Aarch64,
68 path: v,
69 })
70 .into_side_effect()]);
71 }
72 deps.extend_from_slice(&[
73 ctx.reqv(|done| crate::init_openvmm_magicpath_lxutil::Request {
74 arch: LxutilArch::Aarch64,
75 done,
76 }),
77 ctx.reqv(|done| crate::init_openvmm_magicpath_uefi_mu_msvm::Request {
78 arch: MuMsvmArch::Aarch64,
79 done,
80 }),
81 ctx.reqv(
82 |done| crate::init_openvmm_magicpath_linux_test_kernel::Request {
83 arch: OpenvmmLinuxTestKernelArch::Aarch64,
84 done,
85 },
86 ),
87 ]);
88 }
89 }
90
91 ctx.emit_side_effect_step(deps, [done]);
92
93 Ok(())
94 }
95}