Yocto bitbake recipe for the gRPC server

The streaming-telemetry-server recipe provides build script for yocto
build environment, the streaming-telemetry-server-systemd recipe and the
service files provides a systemd service to run it on target system.

Change-Id: I782e8593b0a7f5f404b7cd77649b7bc4bccc5600
diff --git a/.cargo/config.toml b/.cargo/config.toml
new file mode 100644
index 0000000..ee0943f
--- /dev/null
+++ b/.cargo/config.toml
@@ -0,0 +1,5 @@
+[profile.release]
+strip = true
+opt-level = "z"
+lto = true
+panic = "abort"
diff --git a/README.md b/README.md
index da947b9..7982149 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@
 assumption that telemetry must go through the Redfish interface, we can
 eliminate layers of indirection and improve performance:
 
-- Remove the HTTP request/response layer between cloud collectors and gBMC.
+- Remove the HTTP request/response layer between cloud collectors and BMC.
 - Eliminate D-Bus IPC (including message marshaling/unmarshaling) between BMC
   telemetry source services and the BMC telemetry server.
 
@@ -98,7 +98,7 @@
   as the default path.
 
 This allows a collector client to use xpath-like syntax or a simple
-[server configuration name](test/server_config.textproto#3) to subscribe to all
+[server configuration name](yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto#3) to subscribe to all
 interested telemetry sources with desired parameters in a single gRPC call.
 
 ### 4. Threshold-based dynamic sampling rate
@@ -196,7 +196,7 @@
 Download the code to your Linux workstation
 
 ```sh
-~/workspace$ git clone sso://gbmc.googlesource.com/streaming-telemetry-server -b master; cd streaming-telemetry-server/streaming_telemetry
+~/workspace$ git clone https://github/google/streaming-telemetry-server -b main; cd streaming-telemetry-server/streaming_telemetry
 ```
 
 Need install Rust [cross](https://kerkour.com/rust-cross-compilation) build if
@@ -221,13 +221,13 @@
 1. Copy target to target BMC board<br>
 
    ```sh
-   ~/workspace/streaming-telemetry-server/streaming_telemetry$ sshpass -p 0penBmc scp ../target/armv7-unknown-linux-gnueabihf/release/streaming_telemetry_server ../test/server_config.textproto root@bmc:/tmp/
+   ~/workspace/streaming-telemetry-server/streaming_telemetry$ sshpass -p 0penBmc scp ../target/armv7-unknown-linux-gnueabihf/release/streaming_telemetry_server ../yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto root@bmc:/tmp/
    ```
 
 2. Run the gRPC telemetry server<br>
 
    ```sh
-   root@bmc:~# /tmp/streaming_telemetry_server --port 50051 --insecure --config /tmp/server_config.textproto --emconfig /usr/share/entity-manager/configurations/BMCBoard.json,/usr/share/entity-manager/configurations/MotherBoard.json
+   root@bmc:~# /tmp/streaming_telemetry_server --port 50051 --insecure --config /tmp/streaming_telemetry_server_config.textproto --emconfig /usr/share/entity-manager/configurations/BMCBoard.json,/usr/share/entity-manager/configurations/MotherBoard.json
    Running in insecure mode on port 50051...
    ```
 
@@ -247,7 +247,7 @@
 ### Test telemetry with threshold
 
 Assume we have a threshold configuration entry defined for a sensor
-["fantach_fan4_tach"](test/server_config.textproto#133) in the server_config.
+["fantach_fan4_tach"](yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/tmp/streaming_telemetry_server_config.textproto#133) in the server_config.
 <br>
 
 Run the same command as above, but only monitor the fan tach sensor
@@ -285,9 +285,9 @@
    folder.<br>
 
    ```sh
-   user1@workstation:/var/gbmc/my_machine/gbmc/build/my_machine$ bitbake -c compile streaming-telemetry-server
-   user1@workstation:/var/gbmc/my_machine/gbmc/build/my_machine$ sshpass -p 0penBmc scp ../../meta-google-gbmc/meta-gbmc-machines/meta-my_machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto root@bmc:/tmp/
-   user1@workstation:/var/gbmc/my_machine/gbmc/build/my_machine$ sshpass -p 0penBmc scp tmp/work/armv7ahf-vfpv3d16-openbmc-linux-gnueabi/streaming-telemetry-server/0.1.0/build/target/armv7-openbmc-linux-gnueabihf/release/telemetry_server  root@bmc:/tmp/
+   user1@workstation:/var/bmc/build/my_machine$ bitbake -c compile streaming-telemetry-server
+   user1@workstation:/var/bmc/build/my_machine$ sshpass -p 0penBmc scp ../../meta-my_machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto root@bmc:/tmp/
+   user1@workstation:/var/bmc/build/my_machine$ sshpass -p 0penBmc scp tmp/work/armv7ahf-vfpv3d16-openbmc-linux-gnueabi/streaming-telemetry-server/0.1.0/build/target/armv7-openbmc-linux-gnueabihf/release/telemetry_server  root@bmc:/tmp/
    ```
 
 2. Prepare test keys and test mTLS policy:<br>
diff --git a/streaming_telemetry/src/telemetry_client.rs b/streaming_telemetry/src/telemetry_client.rs
index ef0c227..12a585a 100644
--- a/streaming_telemetry/src/telemetry_client.rs
+++ b/streaming_telemetry/src/telemetry_client.rs
@@ -136,12 +136,17 @@
         )
         .arg(
             arg!(-s --server_dns <SERVERNDS> "gRPC server's certificate DNS name, extract from command:
-                 $ openssl x509 -noout -text -in test-realm-a-node-jybls11-nfd01.prod.google.com-cert.pem | grep DNS
-                    DNS:jybls11-nfd01.prod.google.com, DNS:borg-test.node.test-realm-a.prod.spiffe.goog")
+                 $ openssl x509 -noout -text -in grpc-server-cert.pem | grep DNS
+                    DNS:bcm-node-name.some-company.com")
                 .required_if_eq("insecure", "false")
                 .value_parser(clap::value_parser!(String)),
         )
         .arg(
+            arg!(-h --host <HOST> "gRPC server's host name")
+                .default_value("localhost")
+                .value_parser(clap::value_parser!(String)),
+        )
+        .arg(
             arg!(-P --port <PORT> "Server's listening port to connect")
                 .required(true)
                 .value_parser(clap::value_parser!(u16)),
@@ -168,15 +173,16 @@
 
     let matches = cli().get_matches();
     let insecure = matches.get_flag("insecure");
+    let host = matches.get_one::<String>("host").unwrap();
     let port = matches
         .get_one::<u16>("port")
         .expect("required argument")
         .to_owned();
 
     let url = if insecure {
-        format!("http://localhost:{port}")
+        format!("http://{host}:{port}")
     } else {
-        format!("https://localhost:{port}")
+        format!("https://{host}:{port}")
     };
     let channel = if insecure {
         Channel::builder(url.parse()?).connect().await?
diff --git a/streaming_telemetry/src/telemetry_source_manager/sensor_configs.rs b/streaming_telemetry/src/telemetry_source_manager/sensor_configs.rs
index a2e0b06..83268a1 100644
--- a/streaming_telemetry/src/telemetry_source_manager/sensor_configs.rs
+++ b/streaming_telemetry/src/telemetry_source_manager/sensor_configs.rs
@@ -357,9 +357,9 @@
                 sensor.sensor_type = "PLDM".to_string();
                 sensor.reading_type = infer_reading_type(&sensor);
             } else if valid_other_types.contains(&sensor.sensor_type.as_str()) {
-                // FIXME: hardcode sensor NAme for PWMSensor from config
+                // WARNING: hardcode sensor Name for PWMSensor from config
                 // Add captured expose by Sensor type: Object {"HotPluggable": Bool(false), "LocationType": String("Connector"), "Name": String("Fan3"), "PWMSensor": String("fan3_pwm"), "ServiceLabel": String("FAN3"), "TachSensor": String("fan3_tach"), "Type": String("Fan")}
-                // extract_sensors, config /usr/share/entity-manager/configurations/heizo.json, all sensors from config: Sensor { Name: "Fan0", sensor_type: "Fan", Bus: None, Address: None, Thresholds: None, Index: None, Labels: None, extra: {}, reading_type: (PSUProperty { name: "Fan Speed 1", max: 30000, min: 0, scale: 0, offset: 0 }, Fan) }
+                // extract_sensors, config /usr/share/entity-manager/configurations/motherboard.json, all sensors from config: Sensor { Name: "Fan0", sensor_type: "Fan", Bus: None, Address: None, Thresholds: None, Index: None, Labels: None, extra: {}, reading_type: (PSUProperty { name: "Fan Speed 1", max: 30000, min: 0, scale: 0, offset: 0 }, Fan) }
                 if sensor.sensor_type == "Fan" {
                     let pwm_sensor = expose.get("PWMSensor").and_then(|p| p.as_str()).unwrap_or("").to_owned();
                     sensor.Name = pwm_sensor;
@@ -509,6 +509,7 @@
     debug!("find_sensor_file for sensor {:?}", sensor);
     if let (Some(bus), Some(address)) = (&sensor.Bus, &sensor.Address) {
         // Strip "0x" prefix if present
+        let address = address.to_lowercase();
         let address_stripped = address.trim_start_matches("0x");
 
         let base_path = Path::new("/sys/class/hwmon");
diff --git a/yocto/meta-my-machine/conf/layer.conf b/yocto/meta-my-machine/conf/layer.conf
new file mode 100644
index 0000000..b581ee5
--- /dev/null
+++ b/yocto/meta-my-machine/conf/layer.conf
@@ -0,0 +1,19 @@
+# Disable incompatible FP instructions, because aspeed-g6 BMC's CPU does not support vfpv4-d16 instructions
+#   root@bmc:~# /media/emmc/gdb /tmp/streaming-telemetry-server
+#   Thread 3 "tokio-runtime-w" received signal SIGILL, Illegal instruction.
+#   (gdb) display/i $pc
+#   => 0x4b9824 <_ZN5tokio7runtime9scheduler12multi_thread5stats5Stats30end_processing_scheduled_tasks17haf047172ad26feb6E+100>:    vmov.f64        d16, #112       @ 0x3f800000  1.0
+# $BUILD_PLACE$ bitbake -e streaming-telemetry-server | grep TARGET_CC_ARCH
+# TARGET_CC_ARCH=" -march=armv7-a -mfpu=vfpv4-d16 -mfloat-abi=hard -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64"
+# root@msee17-nfd11:~# grep Features /proc/cpuinfo
+# Features        : half thumb fastmult vfp edsp vfpv3 vfpv3d16 tls vfpv4 idiva idivt lpae evtstrm
+# The yocto compiled toolchain "armv7ahf-vfpv4d16-openbmc-linux-gnueabi" for this machine indicates
+# that Yocto believes the target platform supports:
+#   ARMv7 architecture
+#   Hardware floating-point (hf)
+#   VFPv4 with 16 double-precision registers (vfpv4d16)
+# which is not true, set to vfpv3d16 to match the target platform:
+DEFAULTTUNE:aspeed-g6 = "armv7ahf-vfpv3d16"
+
+# Enable Rust optimization flag " -C panic=abort" requires this:
+RUST_PANIC_STRATEGY = "abort"
diff --git a/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming-telemetry-server.service b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming-telemetry-server.service
new file mode 100644
index 0000000..639203c
--- /dev/null
+++ b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming-telemetry-server.service
@@ -0,0 +1,38 @@
+[Unit]
+Description=Streaming Telemetry Server
+# Specifies that this service should start after the network is up
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/streaming_telemetry_server \
+    --key server_priv.pem \
+    --cert server_pub.pem \
+    --cacert ca_chain.pem \
+    --policy mtls.policy \
+    --crls /rtc/crls \
+    --config /etc/streaming_telemetry_server_config.textproto \
+    --emconfig /usr/share/entity-manager/configurations/BMCBoard.json,/usr/share/entity-manager/configurations/MotherBoard.json \
+    --port 50051
+# Restart policy: if the service exits unexpectedly, systemd will restart it
+# 'on-failure' means it will be restarted if it exits with a non-zero status
+Restart=on-failure
+# Specifies which user the service will run as
+# 'root' means it runs with full system privileges
+User=root
+# from systemd/man/latest/systemd.resource-control.html
+# Memory usage may go above the limit if unavoidable, but the processes are
+# heavily slowed down and memory is taken away aggressively in such cases.
+MemoryHigh=80M
+# Specify the absolute limit on memory usage of the executed processes in this
+# unit
+MemoryMax=100M
+# The percentage specifies how much CPU time the unit shall get at maximum,
+# relative to the total CPU time available on one CPU. Use values > 100% for
+# allotting CPU time on more than one CPU, 100% for 2 core CPU means half the
+# maximum CPU time.
+CPUQuota=100%
+
+[Install]
+# Specifies that this service should be started when the system boots to
+# multi-user mode
+WantedBy=multi-user.target
diff --git a/test/server_config.textproto b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto
similarity index 100%
rename from test/server_config.textproto
rename to yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/files/streaming_telemetry_server_config.textproto
diff --git a/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/streaming-telemetry-server-systemd_1.0.bb b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/streaming-telemetry-server-systemd_1.0.bb
new file mode 100644
index 0000000..d78e91b
--- /dev/null
+++ b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server-systemd/streaming-telemetry-server-systemd_1.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Systemd service for Streaming Telemetry Server"
+DESCRIPTION = "Systemd service configuration for the Streaming Telemetry Server"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+
+RDEPENDS:${PN} += "streaming-telemetry-server systemd"
+
+SRC_URI = "file://streaming-telemetry-server.service \
+           file://streaming_telemetry_server_config.textproto"
+
+SYSTEMD_SERVICE:${PN} = "streaming-telemetry-server.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+do_install() {
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/streaming-telemetry-server.service ${D}${systemd_system_unitdir}
+
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/streaming_telemetry_server_config.textproto ${D}${sysconfdir}/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}/streaming-telemetry-server.service"
+FILES:${PN} += "${sysconfdir}/streaming_telemetry_server_config.textproto"
diff --git a/yocto/meta-my-machine/recipes-google/streaming-telemetry-server/streaming-telemetry-server_0.1.0.bb b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server/streaming-telemetry-server_0.1.0.bb
new file mode 100644
index 0000000..18f023f
--- /dev/null
+++ b/yocto/meta-my-machine/recipes-google/streaming-telemetry-server/streaming-telemetry-server_0.1.0.bb
@@ -0,0 +1,661 @@
+SRC_URI = "git://github/google/streaming-telemetry-server;protocol=https;branch=main"
+SRCREV="b7619afdf5c23b2917d97eeb1f7b92f202923369"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SUMMARY = "Out-of-band high rate telemetry streaming server"
+HOMEPAGE = "https://github.com/google/streaming-telemetry-server"
+LICENSE = "MIT | Apache-2.0"
+
+S = "${WORKDIR}/git"
+CARGO_SRC_DIR = ""
+
+DEPENDS = "openssl"
+
+inherit cargo pkgconfig
+
+# This part is from the command output:
+# ~/workspace/streaming-telemetry-server$ cargo bitbake
+SRC_URI += " \
+    crate://crates.io/addr2line/0.24.1 \
+    crate://crates.io/adler2/2.0.0 \
+    crate://crates.io/aho-corasick/1.1.3 \
+    crate://crates.io/android-tzdata/0.1.1 \
+    crate://crates.io/android_system_properties/0.1.5 \
+    crate://crates.io/anstream/0.6.15 \
+    crate://crates.io/anstyle-parse/0.2.5 \
+    crate://crates.io/anstyle-query/1.1.1 \
+    crate://crates.io/anstyle-wincon/3.0.4 \
+    crate://crates.io/anstyle/1.0.8 \
+    crate://crates.io/anyhow/1.0.89 \
+    crate://crates.io/asn1-rs-derive/0.5.1 \
+    crate://crates.io/asn1-rs-impl/0.2.0 \
+    crate://crates.io/asn1-rs/0.6.2 \
+    crate://crates.io/async-broadcast/0.5.1 \
+    crate://crates.io/async-channel/2.3.1 \
+    crate://crates.io/async-io/1.13.0 \
+    crate://crates.io/async-io/2.3.4 \
+    crate://crates.io/async-lock/2.8.0 \
+    crate://crates.io/async-lock/3.4.0 \
+    crate://crates.io/async-process/1.8.1 \
+    crate://crates.io/async-recursion/1.1.1 \
+    crate://crates.io/async-signal/0.2.10 \
+    crate://crates.io/async-stream-impl/0.3.6 \
+    crate://crates.io/async-stream/0.3.6 \
+    crate://crates.io/async-task/4.7.1 \
+    crate://crates.io/async-trait/0.1.83 \
+    crate://crates.io/atomic-waker/1.1.2 \
+    crate://crates.io/autocfg/1.4.0 \
+    crate://crates.io/axum-core/0.3.4 \
+    crate://crates.io/axum-core/0.4.5 \
+    crate://crates.io/axum/0.6.20 \
+    crate://crates.io/axum/0.7.7 \
+    crate://crates.io/backtrace/0.3.74 \
+    crate://crates.io/base64/0.21.7 \
+    crate://crates.io/bindgen/0.69.4 \
+    crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bitflags/2.6.0 \
+    crate://crates.io/block-buffer/0.10.4 \
+    crate://crates.io/blocking/1.6.1 \
+    crate://crates.io/bumpalo/3.16.0 \
+    crate://crates.io/byteorder/1.5.0 \
+    crate://crates.io/bytes/1.7.2 \
+    crate://crates.io/cc/1.1.24 \
+    crate://crates.io/cexpr/0.6.0 \
+    crate://crates.io/cfg-if/1.0.0 \
+    crate://crates.io/chrono/0.4.38 \
+    crate://crates.io/clang-sys/1.8.1 \
+    crate://crates.io/clap/4.5.19 \
+    crate://crates.io/clap_builder/4.5.19 \
+    crate://crates.io/clap_lex/0.7.2 \
+    crate://crates.io/colorchoice/1.0.2 \
+    crate://crates.io/concurrent-queue/2.5.0 \
+    crate://crates.io/core-foundation-sys/0.8.7 \
+    crate://crates.io/cpufeatures/0.2.14 \
+    crate://crates.io/crossbeam-utils/0.8.20 \
+    crate://crates.io/crypto-common/0.1.6 \
+    crate://crates.io/dashmap/5.5.3 \
+    crate://crates.io/data-encoding/2.6.0 \
+    crate://crates.io/der-parser/9.0.0 \
+    crate://crates.io/deranged/0.3.11 \
+    crate://crates.io/derivative/2.2.0 \
+    crate://crates.io/digest/0.10.7 \
+    crate://crates.io/displaydoc/0.2.5 \
+    crate://crates.io/either/1.13.0 \
+    crate://crates.io/enumflags2/0.7.10 \
+    crate://crates.io/enumflags2_derive/0.7.10 \
+    crate://crates.io/env_logger/0.10.2 \
+    crate://crates.io/equivalent/1.0.1 \
+    crate://crates.io/errno/0.3.9 \
+    crate://crates.io/event-listener-strategy/0.5.2 \
+    crate://crates.io/event-listener/2.5.3 \
+    crate://crates.io/event-listener/3.1.0 \
+    crate://crates.io/event-listener/5.3.1 \
+    crate://crates.io/fastrand/1.9.0 \
+    crate://crates.io/fastrand/2.1.1 \
+    crate://crates.io/fixedbitset/0.4.2 \
+    crate://crates.io/fnv/1.0.7 \
+    crate://crates.io/form_urlencoded/1.2.1 \
+    crate://crates.io/futures-channel/0.3.30 \
+    crate://crates.io/futures-core/0.3.30 \
+    crate://crates.io/futures-executor/0.3.30 \
+    crate://crates.io/futures-io/0.3.30 \
+    crate://crates.io/futures-lite/1.13.0 \
+    crate://crates.io/futures-lite/2.3.0 \
+    crate://crates.io/futures-macro/0.3.30 \
+    crate://crates.io/futures-sink/0.3.30 \
+    crate://crates.io/futures-task/0.3.30 \
+    crate://crates.io/futures-util/0.3.30 \
+    crate://crates.io/futures/0.3.30 \
+    crate://crates.io/generic-array/0.14.7 \
+    crate://crates.io/getrandom/0.2.15 \
+    crate://crates.io/gimli/0.31.0 \
+    crate://crates.io/glob/0.3.1 \
+    crate://crates.io/h2/0.3.26 \
+    crate://crates.io/hashbrown/0.12.3 \
+    crate://crates.io/hashbrown/0.14.5 \
+    crate://crates.io/hashbrown/0.15.0 \
+    crate://crates.io/heck/0.5.0 \
+    crate://crates.io/hermit-abi/0.3.9 \
+    crate://crates.io/hermit-abi/0.4.0 \
+    crate://crates.io/hex/0.4.3 \
+    crate://crates.io/home/0.5.9 \
+    crate://crates.io/http-body-util/0.1.2 \
+    crate://crates.io/http-body/0.4.6 \
+    crate://crates.io/http-body/1.0.1 \
+    crate://crates.io/http/0.2.12 \
+    crate://crates.io/http/1.1.0 \
+    crate://crates.io/httparse/1.9.5 \
+    crate://crates.io/httpdate/1.0.3 \
+    crate://crates.io/humantime/2.1.0 \
+    crate://crates.io/hyper-timeout/0.4.1 \
+    crate://crates.io/hyper-util/0.1.9 \
+    crate://crates.io/hyper/0.14.30 \
+    crate://crates.io/hyper/1.4.1 \
+    crate://crates.io/iana-time-zone-haiku/0.1.2 \
+    crate://crates.io/iana-time-zone/0.1.61 \
+    crate://crates.io/idna/0.5.0 \
+    crate://crates.io/indexmap/1.9.3 \
+    crate://crates.io/indexmap/2.6.0 \
+    crate://crates.io/instant/0.1.13 \
+    crate://crates.io/io-lifetimes/1.0.11 \
+    crate://crates.io/io-uring/0.6.4 \
+    crate://crates.io/is-terminal/0.4.13 \
+    crate://crates.io/is_terminal_polyfill/1.70.1 \
+    crate://crates.io/itertools/0.12.1 \
+    crate://crates.io/itoa/1.0.11 \
+    crate://crates.io/js-sys/0.3.70 \
+    crate://crates.io/jsonpath_lib/0.3.0 \
+    crate://crates.io/lazy_static/1.5.0 \
+    crate://crates.io/lazycell/1.3.0 \
+    crate://crates.io/libc/0.2.159 \
+    crate://crates.io/libloading/0.8.5 \
+    crate://crates.io/linux-raw-sys/0.3.8 \
+    crate://crates.io/linux-raw-sys/0.4.14 \
+    crate://crates.io/lock_api/0.4.12 \
+    crate://crates.io/log/0.4.22 \
+    crate://crates.io/matchit/0.7.3 \
+    crate://crates.io/memchr/2.7.4 \
+    crate://crates.io/memoffset/0.7.1 \
+    crate://crates.io/memoffset/0.9.1 \
+    crate://crates.io/mime/0.3.17 \
+    crate://crates.io/minimal-lexical/0.2.1 \
+    crate://crates.io/miniz_oxide/0.8.0 \
+    crate://crates.io/mio/1.0.2 \
+    crate://crates.io/multimap/0.10.0 \
+    crate://crates.io/nix/0.26.4 \
+    crate://crates.io/nom/7.1.3 \
+    crate://crates.io/num-bigint/0.4.6 \
+    crate://crates.io/num-conv/0.1.0 \
+    crate://crates.io/num-integer/0.1.46 \
+    crate://crates.io/num-traits/0.2.19 \
+    crate://crates.io/object/0.36.4 \
+    crate://crates.io/oid-registry/0.7.1 \
+    crate://crates.io/once_cell/1.20.1 \
+    crate://crates.io/ordered-stream/0.2.0 \
+    crate://crates.io/parking/2.2.1 \
+    crate://crates.io/parking_lot/0.12.3 \
+    crate://crates.io/parking_lot_core/0.9.10 \
+    crate://crates.io/percent-encoding/2.3.1 \
+    crate://crates.io/petgraph/0.6.5 \
+    crate://crates.io/pin-project-internal/1.1.5 \
+    crate://crates.io/pin-project-lite/0.2.14 \
+    crate://crates.io/pin-project/1.1.5 \
+    crate://crates.io/pin-utils/0.1.0 \
+    crate://crates.io/piper/0.2.4 \
+    crate://crates.io/pkg-config/0.3.31 \
+    crate://crates.io/polling/2.8.0 \
+    crate://crates.io/polling/3.7.3 \
+    crate://crates.io/portable-atomic/1.9.0 \
+    crate://crates.io/powerfmt/0.2.0 \
+    crate://crates.io/ppv-lite86/0.2.20 \
+    crate://crates.io/prettyplease/0.2.22 \
+    crate://crates.io/proc-macro-crate/1.3.1 \
+    crate://crates.io/proc-macro2/1.0.86 \
+    crate://crates.io/prost-build/0.12.6 \
+    crate://crates.io/prost-derive/0.12.6 \
+    crate://crates.io/prost-types/0.12.6 \
+    crate://crates.io/prost/0.12.6 \
+    crate://crates.io/protobuf-support/3.5.1 \
+    crate://crates.io/protobuf/3.5.1 \
+    crate://crates.io/quote/1.0.37 \
+    crate://crates.io/rand/0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1 \
+    crate://crates.io/rand_core/0.6.4 \
+    crate://crates.io/redfish-codegen/0.3.1 \
+    crate://crates.io/redfish-macros/0.3.1 \
+    crate://crates.io/redox_syscall/0.5.7 \
+    crate://crates.io/regex-automata/0.4.8 \
+    crate://crates.io/regex-syntax/0.8.5 \
+    crate://crates.io/regex/1.11.0 \
+    crate://crates.io/ring/0.17.8 \
+    crate://crates.io/rustc-demangle/0.1.24 \
+    crate://crates.io/rustc-hash/1.1.0 \
+    crate://crates.io/rusticata-macros/4.1.0 \
+    crate://crates.io/rustix/0.37.27 \
+    crate://crates.io/rustix/0.38.37 \
+    crate://crates.io/rustls-pemfile/2.2.0 \
+    crate://crates.io/rustls-pki-types/1.9.0 \
+    crate://crates.io/rustls-webpki/0.102.8 \
+    crate://crates.io/rustls/0.22.4 \
+    crate://crates.io/rustversion/1.0.17 \
+    crate://crates.io/ryu/1.0.18 \
+    crate://crates.io/scopeguard/1.2.0 \
+    crate://crates.io/serde/1.0.210 \
+    crate://crates.io/serde_derive/1.0.210 \
+    crate://crates.io/serde_json/1.0.128 \
+    crate://crates.io/serde_path_to_error/0.1.16 \
+    crate://crates.io/serde_qs/0.12.0 \
+    crate://crates.io/serde_repr/0.1.19 \
+    crate://crates.io/serde_urlencoded/0.7.1 \
+    crate://crates.io/sha1/0.10.6 \
+    crate://crates.io/shlex/1.3.0 \
+    crate://crates.io/signal-hook-registry/1.4.2 \
+    crate://crates.io/slab/0.4.9 \
+    crate://crates.io/smallvec/1.13.2 \
+    crate://crates.io/socket2/0.4.10 \
+    crate://crates.io/socket2/0.5.7 \
+    crate://crates.io/spin/0.9.8 \
+    crate://crates.io/static_assertions/1.1.0 \
+    crate://crates.io/strsim/0.11.1 \
+    crate://crates.io/subtle/2.6.1 \
+    crate://crates.io/syn/1.0.109 \
+    crate://crates.io/syn/2.0.79 \
+    crate://crates.io/sync_wrapper/0.1.2 \
+    crate://crates.io/sync_wrapper/1.0.1 \
+    crate://crates.io/synstructure/0.13.1 \
+    crate://crates.io/tempfile/3.13.0 \
+    crate://crates.io/termcolor/1.4.1 \
+    crate://crates.io/thiserror-impl/1.0.64 \
+    crate://crates.io/thiserror/1.0.64 \
+    crate://crates.io/time-core/0.1.2 \
+    crate://crates.io/time-macros/0.2.18 \
+    crate://crates.io/time/0.3.36 \
+    crate://crates.io/tinyvec/1.8.0 \
+    crate://crates.io/tinyvec_macros/0.1.1 \
+    crate://crates.io/tokio-io-timeout/1.2.0 \
+    crate://crates.io/tokio-macros/2.4.0 \
+    crate://crates.io/tokio-rustls/0.25.0 \
+    crate://crates.io/tokio-stream/0.1.16 \
+    crate://crates.io/tokio-uring/0.5.0 \
+    crate://crates.io/tokio-util/0.7.12 \
+    crate://crates.io/tokio/1.40.0 \
+    crate://crates.io/toml_datetime/0.6.8 \
+    crate://crates.io/toml_edit/0.19.15 \
+    crate://crates.io/tonic-build/0.11.0 \
+    crate://crates.io/tonic/0.11.0 \
+    crate://crates.io/tower-layer/0.3.3 \
+    crate://crates.io/tower-service/0.3.3 \
+    crate://crates.io/tower/0.4.13 \
+    crate://crates.io/tower/0.5.1 \
+    crate://crates.io/tracing-attributes/0.1.27 \
+    crate://crates.io/tracing-core/0.1.32 \
+    crate://crates.io/tracing/0.1.40 \
+    crate://crates.io/try-lock/0.2.5 \
+    crate://crates.io/typenum/1.17.0 \
+    crate://crates.io/uds_windows/1.1.0 \
+    crate://crates.io/unicode-bidi/0.3.17 \
+    crate://crates.io/unicode-ident/1.0.13 \
+    crate://crates.io/unicode-normalization/0.1.24 \
+    crate://crates.io/untrusted/0.9.0 \
+    crate://crates.io/url/2.5.2 \
+    crate://crates.io/utf8parse/0.2.2 \
+    crate://crates.io/uuid-macro-internal/1.10.0 \
+    crate://crates.io/uuid/1.10.0 \
+    crate://crates.io/version_check/0.9.5 \
+    crate://crates.io/waker-fn/1.2.0 \
+    crate://crates.io/want/0.3.1 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen-backend/0.2.93 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.93 \
+    crate://crates.io/wasm-bindgen-macro/0.2.93 \
+    crate://crates.io/wasm-bindgen-shared/0.2.93 \
+    crate://crates.io/wasm-bindgen/0.2.93 \
+    crate://crates.io/which/4.4.2 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi-util/0.1.9 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi/0.3.9 \
+    crate://crates.io/windows-core/0.52.0 \
+    crate://crates.io/windows-sys/0.48.0 \
+    crate://crates.io/windows-sys/0.52.0 \
+    crate://crates.io/windows-sys/0.59.0 \
+    crate://crates.io/windows-targets/0.48.5 \
+    crate://crates.io/windows-targets/0.52.6 \
+    crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+    crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
+    crate://crates.io/windows_aarch64_msvc/0.48.5 \
+    crate://crates.io/windows_aarch64_msvc/0.52.6 \
+    crate://crates.io/windows_i686_gnu/0.48.5 \
+    crate://crates.io/windows_i686_gnu/0.52.6 \
+    crate://crates.io/windows_i686_gnullvm/0.52.6 \
+    crate://crates.io/windows_i686_msvc/0.48.5 \
+    crate://crates.io/windows_i686_msvc/0.52.6 \
+    crate://crates.io/windows_x86_64_gnu/0.48.5 \
+    crate://crates.io/windows_x86_64_gnu/0.52.6 \
+    crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+    crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
+    crate://crates.io/windows_x86_64_msvc/0.48.5 \
+    crate://crates.io/windows_x86_64_msvc/0.52.6 \
+    crate://crates.io/winnow/0.5.40 \
+    crate://crates.io/x509-parser/0.16.0 \
+    crate://crates.io/xdg-home/1.3.0 \
+    crate://crates.io/zbus/3.15.2 \
+    crate://crates.io/zbus_macros/3.15.2 \
+    crate://crates.io/zbus_names/2.6.1 \
+    crate://crates.io/zerocopy-derive/0.7.35 \
+    crate://crates.io/zerocopy/0.7.35 \
+    crate://crates.io/zeroize/1.8.1 \
+    crate://crates.io/zvariant/3.15.2 \
+    crate://crates.io/zvariant_derive/3.15.2 \
+    crate://crates.io/zvariant_utils/1.0.1 \
+"
+
+# This part is from the error message of first run "bitbake streaming-telemetry-server" after adding above "SRC_URI" from "cargo bitbake" result
+SRC_URI[addr2line-0.24.1.sha256sum] = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
+SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+SRC_URI[android-tzdata-0.1.1.sha256sum] = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[anstream-0.6.15.sha256sum] = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
+SRC_URI[anstyle-parse-0.2.5.sha256sum] = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
+SRC_URI[anstyle-query-1.1.1.sha256sum] = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
+SRC_URI[anstyle-wincon-3.0.4.sha256sum] = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
+SRC_URI[anstyle-1.0.8.sha256sum] = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
+SRC_URI[anyhow-1.0.89.sha256sum] = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
+SRC_URI[asn1-rs-derive-0.5.1.sha256sum] = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
+SRC_URI[asn1-rs-impl-0.2.0.sha256sum] = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
+SRC_URI[asn1-rs-0.6.2.sha256sum] = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048"
+SRC_URI[async-broadcast-0.5.1.sha256sum] = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b"
+SRC_URI[async-channel-2.3.1.sha256sum] = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+SRC_URI[async-io-1.13.0.sha256sum] = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+SRC_URI[async-io-2.3.4.sha256sum] = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
+SRC_URI[async-lock-2.8.0.sha256sum] = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+SRC_URI[async-lock-3.4.0.sha256sum] = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+SRC_URI[async-process-1.8.1.sha256sum] = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
+SRC_URI[async-recursion-1.1.1.sha256sum] = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+SRC_URI[async-signal-0.2.10.sha256sum] = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
+SRC_URI[async-stream-impl-0.3.6.sha256sum] = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
+SRC_URI[async-stream-0.3.6.sha256sum] = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
+SRC_URI[async-task-4.7.1.sha256sum] = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+SRC_URI[async-trait-0.1.83.sha256sum] = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
+SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+SRC_URI[axum-core-0.4.5.sha256sum] = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
+SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+SRC_URI[axum-0.7.7.sha256sum] = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae"
+SRC_URI[backtrace-0.3.74.sha256sum] = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+SRC_URI[bindgen-0.69.4.sha256sum] = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+SRC_URI[blocking-1.6.1.sha256sum] = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+SRC_URI[bumpalo-3.16.0.sha256sum] = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+SRC_URI[bytes-1.7.2.sha256sum] = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
+SRC_URI[cc-1.1.24.sha256sum] = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.38.sha256sum] = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+SRC_URI[clang-sys-1.8.1.sha256sum] = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
+SRC_URI[clap-4.5.19.sha256sum] = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615"
+SRC_URI[clap_builder-4.5.19.sha256sum] = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b"
+SRC_URI[clap_lex-0.7.2.sha256sum] = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+SRC_URI[colorchoice-1.0.2.sha256sum] = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
+SRC_URI[concurrent-queue-2.5.0.sha256sum] = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+SRC_URI[cpufeatures-0.2.14.sha256sum] = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
+SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[dashmap-5.5.3.sha256sum] = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+SRC_URI[data-encoding-2.6.0.sha256sum] = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
+SRC_URI[der-parser-9.0.0.sha256sum] = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553"
+SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+SRC_URI[enumflags2-0.7.10.sha256sum] = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d"
+SRC_URI[enumflags2_derive-0.7.10.sha256sum] = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
+SRC_URI[env_logger-0.10.2.sha256sum] = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+SRC_URI[event-listener-strategy-0.5.2.sha256sum] = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+SRC_URI[event-listener-2.5.3.sha256sum] = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+SRC_URI[event-listener-3.1.0.sha256sum] = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
+SRC_URI[event-listener-5.3.1.sha256sum] = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[fastrand-2.1.1.sha256sum] = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
+SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+SRC_URI[futures-channel-0.3.30.sha256sum] = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+SRC_URI[futures-core-0.3.30.sha256sum] = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+SRC_URI[futures-executor-0.3.30.sha256sum] = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+SRC_URI[futures-io-0.3.30.sha256sum] = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+SRC_URI[futures-lite-1.13.0.sha256sum] = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+SRC_URI[futures-lite-2.3.0.sha256sum] = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+SRC_URI[futures-macro-0.3.30.sha256sum] = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+SRC_URI[futures-sink-0.3.30.sha256sum] = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+SRC_URI[futures-task-0.3.30.sha256sum] = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+SRC_URI[futures-util-0.3.30.sha256sum] = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+SRC_URI[futures-0.3.30.sha256sum] = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+SRC_URI[gimli-0.31.0.sha256sum] = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[h2-0.3.26.sha256sum] = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+SRC_URI[hashbrown-0.15.0.sha256sum] = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+SRC_URI[hermit-abi-0.4.0.sha256sum] = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+SRC_URI[http-body-util-0.1.2.sha256sum] = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
+SRC_URI[http-body-0.4.6.sha256sum] = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+SRC_URI[http-body-1.0.1.sha256sum] = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+SRC_URI[http-0.2.12.sha256sum] = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+SRC_URI[http-1.1.0.sha256sum] = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+SRC_URI[httparse-1.9.5.sha256sum] = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
+SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
+SRC_URI[hyper-util-0.1.9.sha256sum] = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
+SRC_URI[hyper-0.14.30.sha256sum] = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
+SRC_URI[hyper-1.4.1.sha256sum] = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+SRC_URI[iana-time-zone-0.1.61.sha256sum] = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+SRC_URI[idna-0.5.0.sha256sum] = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+SRC_URI[instant-0.1.13.sha256sum] = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[io-uring-0.6.4.sha256sum] = "595a0399f411a508feb2ec1e970a4a30c249351e30208960d58298de8660b0e5"
+SRC_URI[is-terminal-0.4.13.sha256sum] = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
+SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+SRC_URI[itoa-1.0.11.sha256sum] = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+SRC_URI[js-sys-0.3.70.sha256sum] = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+SRC_URI[jsonpath_lib-0.3.0.sha256sum] = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f"
+SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.159.sha256sum] = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
+SRC_URI[libloading-0.8.5.sha256sum] = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+SRC_URI[lock_api-0.4.12.sha256sum] = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+SRC_URI[matchit-0.7.3.sha256sum] = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+SRC_URI[memoffset-0.7.1.sha256sum] = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.8.0.sha256sum] = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+SRC_URI[mio-1.0.2.sha256sum] = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
+SRC_URI[multimap-0.10.0.sha256sum] = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
+SRC_URI[nix-0.26.4.sha256sum] = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[num-bigint-0.4.6.sha256sum] = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+SRC_URI[num-integer-0.1.46.sha256sum] = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+SRC_URI[object-0.36.4.sha256sum] = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
+SRC_URI[oid-registry-0.7.1.sha256sum] = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9"
+SRC_URI[once_cell-1.20.1.sha256sum] = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
+SRC_URI[ordered-stream-0.2.0.sha256sum] = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+SRC_URI[parking-2.2.1.sha256sum] = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+SRC_URI[parking_lot-0.12.3.sha256sum] = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+SRC_URI[parking_lot_core-0.9.10.sha256sum] = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+SRC_URI[petgraph-0.6.5.sha256sum] = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
+SRC_URI[pin-project-internal-1.1.5.sha256sum] = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+SRC_URI[pin-project-lite-0.2.14.sha256sum] = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+SRC_URI[pin-project-1.1.5.sha256sum] = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[piper-0.2.4.sha256sum] = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+SRC_URI[pkg-config-0.3.31.sha256sum] = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
+SRC_URI[polling-2.8.0.sha256sum] = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
+SRC_URI[polling-3.7.3.sha256sum] = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
+SRC_URI[portable-atomic-1.9.0.sha256sum] = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
+SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+SRC_URI[prettyplease-0.2.22.sha256sum] = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"
+SRC_URI[proc-macro-crate-1.3.1.sha256sum] = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+SRC_URI[proc-macro2-1.0.86.sha256sum] = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+SRC_URI[prost-build-0.12.6.sha256sum] = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+SRC_URI[prost-derive-0.12.6.sha256sum] = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+SRC_URI[prost-types-0.12.6.sha256sum] = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+SRC_URI[prost-0.12.6.sha256sum] = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+SRC_URI[protobuf-support-3.5.1.sha256sum] = "f0766e3675a627c327e4b3964582594b0e8741305d628a98a5de75a1d15f99b9"
+SRC_URI[protobuf-3.5.1.sha256sum] = "0bcc343da15609eaecd65f8aa76df8dc4209d325131d8219358c0aaaebab0bf6"
+SRC_URI[quote-1.0.37.sha256sum] = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redfish-codegen-0.3.1.sha256sum] = "c0ebb5fc1dfff92674e3b12765504f244373d9bfcedd85e5dddfe14275faf4f5"
+SRC_URI[redfish-macros-0.3.1.sha256sum] = "57f59ccb0a00b682728c1ad04a3575cf450bacc2b675f23f61cc2163a61ac47c"
+SRC_URI[redox_syscall-0.5.7.sha256sum] = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
+SRC_URI[regex-automata-0.4.8.sha256sum] = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
+SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+SRC_URI[regex-1.11.0.sha256sum] = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
+SRC_URI[ring-0.17.8.sha256sum] = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+SRC_URI[rustc-demangle-0.1.24.sha256sum] = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
+SRC_URI[rustix-0.37.27.sha256sum] = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+SRC_URI[rustix-0.38.37.sha256sum] = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+SRC_URI[rustls-pemfile-2.2.0.sha256sum] = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
+SRC_URI[rustls-pki-types-1.9.0.sha256sum] = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55"
+SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
+SRC_URI[rustls-0.22.4.sha256sum] = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
+SRC_URI[rustversion-1.0.17.sha256sum] = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+SRC_URI[ryu-1.0.18.sha256sum] = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+SRC_URI[serde-1.0.210.sha256sum] = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+SRC_URI[serde_derive-1.0.210.sha256sum] = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+SRC_URI[serde_json-1.0.128.sha256sum] = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+SRC_URI[serde_path_to_error-0.1.16.sha256sum] = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
+SRC_URI[serde_qs-0.12.0.sha256sum] = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c"
+SRC_URI[serde_repr-0.1.19.sha256sum] = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
+SRC_URI[serde_urlencoded-0.7.1.sha256sum] = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+SRC_URI[signal-hook-registry-1.4.2.sha256sum] = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+SRC_URI[smallvec-1.13.2.sha256sum] = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+SRC_URI[socket2-0.4.10.sha256sum] = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+SRC_URI[socket2-0.5.7.sha256sum] = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
+SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.79.sha256sum] = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
+SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+SRC_URI[sync_wrapper-1.0.1.sha256sum] = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+SRC_URI[synstructure-0.13.1.sha256sum] = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+SRC_URI[tempfile-3.13.0.sha256sum] = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
+SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+SRC_URI[thiserror-impl-1.0.64.sha256sum] = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
+SRC_URI[thiserror-1.0.64.sha256sum] = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
+SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+SRC_URI[time-macros-0.2.18.sha256sum] = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
+SRC_URI[time-0.3.36.sha256sum] = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
+SRC_URI[tinyvec-1.8.0.sha256sum] = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[tokio-io-timeout-1.2.0.sha256sum] = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
+SRC_URI[tokio-macros-2.4.0.sha256sum] = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
+SRC_URI[tokio-rustls-0.25.0.sha256sum] = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
+SRC_URI[tokio-stream-0.1.16.sha256sum] = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
+SRC_URI[tokio-uring-0.5.0.sha256sum] = "748482e3e13584a34664a710168ad5068e8cb1d968aa4ffa887e83ca6dd27967"
+SRC_URI[tokio-util-0.7.12.sha256sum] = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
+SRC_URI[tokio-1.40.0.sha256sum] = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
+SRC_URI[toml_datetime-0.6.8.sha256sum] = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+SRC_URI[toml_edit-0.19.15.sha256sum] = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+SRC_URI[tonic-build-0.11.0.sha256sum] = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2"
+SRC_URI[tonic-0.11.0.sha256sum] = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
+SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+SRC_URI[tower-0.5.1.sha256sum] = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
+SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+SRC_URI[uds_windows-1.1.0.sha256sum] = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
+SRC_URI[unicode-bidi-0.3.17.sha256sum] = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
+SRC_URI[unicode-ident-1.0.13.sha256sum] = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
+SRC_URI[unicode-normalization-0.1.24.sha256sum] = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
+SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+SRC_URI[url-2.5.2.sha256sum] = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+SRC_URI[uuid-macro-internal-1.10.0.sha256sum] = "ee1cd046f83ea2c4e920d6ee9f7c3537ef928d75dce5d84a87c2c5d6b3999a3a"
+SRC_URI[uuid-1.10.0.sha256sum] = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
+SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+SRC_URI[waker-fn-1.2.0.sha256sum] = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
+SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-backend-0.2.93.sha256sum] = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+SRC_URI[wasm-bindgen-macro-support-0.2.93.sha256sum] = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+SRC_URI[wasm-bindgen-macro-0.2.93.sha256sum] = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+SRC_URI[wasm-bindgen-shared-0.2.93.sha256sum] = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+SRC_URI[wasm-bindgen-0.2.93.sha256sum] = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+SRC_URI[which-4.4.2.sha256sum] = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.9.sha256sum] = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[windows-core-0.52.0.sha256sum] = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+SRC_URI[winnow-0.5.40.sha256sum] = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+SRC_URI[x509-parser-0.16.0.sha256sum] = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69"
+SRC_URI[xdg-home-1.3.0.sha256sum] = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
+SRC_URI[zbus-3.15.2.sha256sum] = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6"
+SRC_URI[zbus_macros-3.15.2.sha256sum] = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
+SRC_URI[zbus_names-2.6.1.sha256sum] = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d"
+SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+SRC_URI[zvariant-3.15.2.sha256sum] = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db"
+SRC_URI[zvariant_derive-3.15.2.sha256sum] = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
+SRC_URI[zvariant_utils-1.0.1.sha256sum] = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
+
+# Override the default CARGO_BUILD_FLAGS to remove --frozen and add --offline
+# the --frozen flag "freezes" the dependency versions to exactly what's specified in the lock file.
+# the --offline flag tells Cargo to use only cached dependencies and not network.
+CARGO_BUILD_FLAGS = "-v --offline --target ${RUST_TARGET_SYS} ${BUILD_MODE} --manifest-path=${S}/Cargo.toml"
+# This is the only optimization flag that can be built with yocto for now
+RUSTFLAGS:append = " -C opt-level=z"
+RUSTFLAGS:append = " -C strip=symbols"
+RUSTFLAGS:append = " -C panic=abort"
+# Add the -Dwarnings Rust flag to treat warnings as errors
+RUSTFLAGS:append = " -Dwarnings"
+export RUSTFLAGS
+
+# Suppress the 'already-stripped' QA issue, when add the " -C strip=symbols"
+INSANE_SKIP:${PN} += "already-stripped"
diff --git a/yocto/meta-my-machine/recipes-phosphor/images/obmc-phosphor-image.bbappend b/yocto/meta-my-machine/recipes-phosphor/images/obmc-phosphor-image.bbappend
new file mode 100644
index 0000000..078130b
--- /dev/null
+++ b/yocto/meta-my-machine/recipes-phosphor/images/obmc-phosphor-image.bbappend
@@ -0,0 +1 @@
+OBMC_IMAGE_EXTRA_INSTALL:append:my-machine = " streaming-telemetry-server-systemd"