flowey_lib_hvlite/_jobs/
cfg_versions.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! An amalgamated configuration node that streamlines the process of resolving
5//! version configuration requests required by various dependencies in OpenVMM
6//! pipelines.
7
8use crate::download_openhcl_kernel_package::OpenhclKernelPackageKind;
9use flowey::node::prelude::*;
10
11// FUTURE: instead of hard-coding these values in-code, we might want to make
12// our own nuget-esque `packages.config` file, that we can read at runtime to
13// resolve all Version requests.
14//
15// This would require nodes that currently accept a `Version(String)` to accept
16// a `Version(ReadVar<String>)`, but that shouldn't be a serious blocker.
17pub const AZCOPY: &str = "10.27.1-20241113";
18pub const AZURE_CLI: &str = "2.56.0";
19pub const FUZZ: &str = "0.12.0";
20pub const GH_CLI: &str = "2.52.0";
21pub const LXUTIL: &str = "10.0.26100.1-240331-1435.ge-release";
22pub const MDBOOK: &str = "0.4.40";
23pub const MDBOOK_ADMONISH: &str = "1.18.0";
24pub const MDBOOK_MERMAID: &str = "0.14.0";
25pub const RUSTUP_TOOLCHAIN: &str = "1.87.0";
26pub const MU_MSVM: &str = "25.1.4";
27pub const NEXTEST: &str = "0.9.96";
28pub const NODEJS: &str = "18.x";
29// N.B. Kernel version numbers for dev and stable branches are not directly
30//      comparable. They originate from separate branches, and the fourth digit
31//      increases with each release from the respective branch.
32pub const OPENHCL_KERNEL_DEV_VERSION: &str = "6.12.9.6";
33pub const OPENHCL_KERNEL_STABLE_VERSION: &str = "6.12.9.10";
34pub const OPENVMM_DEPS: &str = "0.1.0-20250403.3";
35pub const PROTOC: &str = "27.1";
36
37flowey_request! {
38    pub struct Request {}
39}
40
41new_flow_node!(struct Node);
42
43impl FlowNode for Node {
44    type Request = Request;
45
46    fn imports(ctx: &mut ImportCtx<'_>) {
47        ctx.import::<crate::download_lxutil::Node>();
48        ctx.import::<crate::download_openhcl_kernel_package::Node>();
49        ctx.import::<crate::download_openhcl_kernel_package::Node>();
50        ctx.import::<crate::download_openvmm_deps::Node>();
51        ctx.import::<crate::download_uefi_mu_msvm::Node>();
52        ctx.import::<flowey_lib_common::download_azcopy::Node>();
53        ctx.import::<flowey_lib_common::download_cargo_fuzz::Node>();
54        ctx.import::<flowey_lib_common::download_cargo_nextest::Node>();
55        ctx.import::<flowey_lib_common::download_gh_cli::Node>();
56        ctx.import::<flowey_lib_common::download_mdbook_admonish::Node>();
57        ctx.import::<flowey_lib_common::download_mdbook_mermaid::Node>();
58        ctx.import::<flowey_lib_common::download_mdbook::Node>();
59        ctx.import::<flowey_lib_common::download_protoc::Node>();
60        ctx.import::<flowey_lib_common::install_azure_cli::Node>();
61        ctx.import::<flowey_lib_common::install_nodejs::Node>();
62        ctx.import::<flowey_lib_common::install_rust::Node>();
63    }
64
65    #[rustfmt::skip]
66    fn emit(_requests: Vec<Self::Request>, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
67        ctx.req(crate::download_lxutil::Request::Version(LXUTIL.into()));
68        ctx.req(crate::download_openhcl_kernel_package::Request::Version(OpenhclKernelPackageKind::Dev, OPENHCL_KERNEL_DEV_VERSION.into()));
69        ctx.req(crate::download_openhcl_kernel_package::Request::Version(OpenhclKernelPackageKind::Main, OPENHCL_KERNEL_STABLE_VERSION.into()));
70        ctx.req(crate::download_openhcl_kernel_package::Request::Version(OpenhclKernelPackageKind::Cvm, OPENHCL_KERNEL_STABLE_VERSION.into()));
71        ctx.req(crate::download_openhcl_kernel_package::Request::Version(OpenhclKernelPackageKind::CvmDev, OPENHCL_KERNEL_DEV_VERSION.into()));
72        ctx.req(crate::download_openvmm_deps::Request::Version(OPENVMM_DEPS.into()));
73        ctx.req(crate::download_uefi_mu_msvm::Request::Version(MU_MSVM.into()));
74        ctx.req(flowey_lib_common::download_azcopy::Request::Version(AZCOPY.into()));
75        ctx.req(flowey_lib_common::download_cargo_fuzz::Request::Version(FUZZ.into()));
76        ctx.req(flowey_lib_common::download_cargo_nextest::Request::Version(NEXTEST.into()));
77        ctx.req(flowey_lib_common::download_gh_cli::Request::Version(GH_CLI.into()));
78        ctx.req(flowey_lib_common::download_mdbook::Request::Version(MDBOOK.into()));
79        ctx.req(flowey_lib_common::download_mdbook_admonish::Request::Version(MDBOOK_ADMONISH.into()));
80        ctx.req(flowey_lib_common::download_mdbook_mermaid::Request::Version(MDBOOK_MERMAID.into()));
81        ctx.req(flowey_lib_common::download_protoc::Request::Version(PROTOC.into()));
82        ctx.req(flowey_lib_common::install_azure_cli::Request::Version(AZURE_CLI.into()));
83        ctx.req(flowey_lib_common::install_nodejs::Request::Version(NODEJS.into()));
84        if !matches!(ctx.backend(), FlowBackend::Ado) {
85            ctx.req(flowey_lib_common::install_rust::Request::Version(RUSTUP_TOOLCHAIN.into()));
86        }
87        Ok(())
88    }
89}