From cf97f52edff8d8fbf10ff720f7a83d4d029fea73 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Thu, 27 Mar 2025 08:33:32 +0200 Subject: [PATCH 001/104] [aos-image] Remove aos-vis from main node image Signed-off-by: Mykhailo Lohvynenko --- recipes-core/images/aos-image.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 8e74eaf1..101f6a0c 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -104,7 +104,6 @@ IMAGE_INSTALL:append = " \ IMAGE_INSTALL:append:aos-main-node = " \ aos-communicationmanager \ aos-provfirewall \ - aos-vis \ " TOOLCHAIN_HOST_TASK:append = " \ From 98177c8f85f617d2e30782781f2998070639ab18 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Fri, 21 Feb 2025 10:23:14 +0200 Subject: [PATCH 002/104] [aos-servicemanager] Add libnl depends Signed-off-by: Mykola Solianko --- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 4acbbd13..e371f64c 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -30,7 +30,7 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "grpc grpc-native poco protobuf-native systemd curl" +DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" do_configure[network] = "1" From 6f4faa37a167bf93f042220c0008591e4ba9512e Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Mon, 31 Mar 2025 15:05:14 +0300 Subject: [PATCH 003/104] [sm] Add kernel module for bandwith plugin Signed-off-by: Mykola Solianko --- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index e371f64c..1dae47e7 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -67,6 +67,8 @@ RRECOMMENDS:${PN} += " \ kernel-module-xt-masquerade \ kernel-module-xt-tcpudp \ kernel-module-sch-tbf \ + kernel-module-sch-ingress \ + kernel-module-act-mirred \ " python do_update_config() { From fe02d72445de737a0fefa4ed3ba2740c5e2de654 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Tue, 11 Mar 2025 14:08:14 +0200 Subject: [PATCH 004/104] [aos-provfirewall] Close external port access from gateway except for SSH Signed-off-by: Mykola Solianko --- .../aos-provfirewall/files/provfirewall.sh | 23 +++---------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/recipes-aos/aos-provfirewall/files/provfirewall.sh b/recipes-aos/aos-provfirewall/files/provfirewall.sh index a41791d2..606c47e6 100755 --- a/recipes-aos/aos-provfirewall/files/provfirewall.sh +++ b/recipes-aos/aos-provfirewall/files/provfirewall.sh @@ -7,23 +7,6 @@ if [ -z "$GATEWAY" ]; then exit 1 fi -apply_rules() { - INTERFACE=$1 - SUBNET=$(ip -o -f inet addr show $INTERFACE | awk '{print $4}' | cut -d'/' -f1-2) - - if [ -z "$SUBNET" ]; then - echo "No IP address found for $INTERFACE" - return - fi - - for PROTO in tcp udp; do - iptables -A INPUT -s $GATEWAY/32 -d $SUBNET -i $INTERFACE -p $PROTO -m $PROTO --dport 8089 -j DROP - iptables -A INPUT ! -s $SUBNET -d $SUBNET -i $INTERFACE -p $PROTO -m $PROTO --dport 8089 -j DROP - iptables -A INPUT -s $SUBNET -d $SUBNET -i $INTERFACE -p $PROTO -m $PROTO --dport 8089 -j ACCEPT - done -} - -find /sys/class/net/*/device | cut -d/ -f5 | - while read -r INTERFACE; do - apply_rules "$INTERFACE" - done +iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT +iptables -A INPUT -s ${GATEWAY}/32 -p tcp -m tcp --dport 22 -j ACCEPT +iptables -A INPUT -s ${GATEWAY}/32 -j DROP From e82a783ec0ef572d8cb44054146a858f1bf824c3 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 12 Mar 2025 08:26:47 +0200 Subject: [PATCH 005/104] [images] Add aos-provfirewall to all nodes We need to add aos-provfirewall to all nodes to lock access to open ports from the outside. Signed-off-by: Mykola Solianko --- recipes-core/images/aos-image.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 101f6a0c..d11517ad 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -94,6 +94,7 @@ IMAGE_INSTALL:append = " \ aos-servicemanager \ aos-updatemanager \ aos-deprov \ + aos-provfirewall \ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' \ packagegroup-selinux-minimal \ packagegroup-selinux-policycoreutils \ @@ -103,7 +104,6 @@ IMAGE_INSTALL:append = " \ IMAGE_INSTALL:append:aos-main-node = " \ aos-communicationmanager \ - aos-provfirewall \ " TOOLCHAIN_HOST_TASK:append = " \ From 039edb2180ebf246944dee8977a6bfb9322815a5 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 12 Mar 2025 08:34:58 +0200 Subject: [PATCH 006/104] [aos-deprov] Remove firewall rules When we deprovision the unit, we need to remove the firewall rules that block access to the ports. Signed-off-by: Mykola Solianko --- recipes-aos/aos-deprov/files/deprovision.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/recipes-aos/aos-deprov/files/deprovision.sh b/recipes-aos/aos-deprov/files/deprovision.sh index 50d31053..232d5b17 100644 --- a/recipes-aos/aos-deprov/files/deprovision.sh +++ b/recipes-aos/aos-deprov/files/deprovision.sh @@ -13,6 +13,18 @@ clear_disks() { sync } +remove_firewall_rules() { + GATEWAY=$(ip route | grep default | awk '{print $3}' | head -n1) + + if [ -z "$GATEWAY" ]; then + echo "No default gateway found" + return + fi + + iptables -D INPUT -s ${GATEWAY}/32 -p tcp -m tcp --dport 22 -j ACCEPT + iptables -D INPUT -s ${GATEWAY}/32 -j DROP +} + deprovision_async() { { sleep 1 @@ -21,6 +33,8 @@ deprovision_async() { # all services really stopped. systemctl stop -- $(systemctl show -p Wants aos.target | cut -d= -f2) + remove_firewall_rules + echo "Restore unprovisioned flag" | systemd-cat rm /var/aos/.provisionstate -f From 44421c784c55d8a8e96adf54d2b6ee21406d001f Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 17 Apr 2025 07:40:16 +0300 Subject: [PATCH 007/104] [CM] Add DNS IP configuration Signed-off-by: Mykola Solianko --- .../aos-communicationmanager_git.bb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index fd2e294d..7234207e 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -69,6 +69,12 @@ python do_update_config() { data["IAMProtectedServerURL"]= node_hostname+":8089" data["IAMPublicServerURL"] = node_hostname+":8090" + # Update DNS IP + + dns_ip = d.getVar("AOS_DNS_IP") + if dns_ip: + data["DNSIP"] = dns_ip + main_node_hostname = d.getVar("AOS_MAIN_NODE_HOSTNAME") # Update SM controller From 64a365dc60b927d20d2aff876abecdd920f706a8 Mon Sep 17 00:00:00 2001 From: Mykola Kobets Date: Fri, 2 May 2025 12:43:10 +0300 Subject: [PATCH 008/104] [aos-iamanager] Add libnl dependency Signed-off-by: Mykola Kobets --- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index a51d0762..0bc2d1f8 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -19,7 +19,7 @@ SRC_URI += " \ file://aos-dirs-service.conf \ " -DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl" +DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" OECMAKE_GENERATOR = "Unix Makefiles" EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF" From be77e564bbd75aceb018c0d2d6aa7efe87a307e7 Mon Sep 17 00:00:00 2001 From: Mykola Kobets Date: Tue, 29 Apr 2025 10:24:39 +0300 Subject: [PATCH 009/104] [aos, connectivity] Switch from libp11 to pkcs11-provider Signed-off-by: Mykola Kobets --- .../openssl/files/openssl-engine.conf | 22 ++++++++-------- .../openssl/openssl_%.bbappend | 11 +++++--- .../pkcs11-provider/pkcs11-provider_1.0.bb | 26 +++++++++++++++++++ 3 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 recipes-connectivity/pkcs11-provider/pkcs11-provider_1.0.bb diff --git a/recipes-connectivity/openssl/files/openssl-engine.conf b/recipes-connectivity/openssl/files/openssl-engine.conf index 359fed85..acb7e94a 100644 --- a/recipes-connectivity/openssl/files/openssl-engine.conf +++ b/recipes-connectivity/openssl/files/openssl-engine.conf @@ -1,20 +1,20 @@ [provider_sect] +base = base_sect +#default = default_sect legacy = legacy_sect +pkcs11 = pkcs11_sect + +[base_sect] +activate = 1 [default_sect] activate = 1 [legacy_sect] activate = 1 +module = @LEGACY_PROVIDER_PATH@ -[openssl_init] -engines=engine_section - -[engine_section] -pkcs11 = pkcs11_section - -[pkcs11_section] -engine_id = pkcs11 -dynamic_path = @PKCS11_ENGINE_PATH@ -MODULE_PATH = @HSM_MODULE_PATH@ -init = 0 +[pkcs11_sect] +module = @PKCS11_PROVIDER_PATH@ +pkcs11-module-path = @HSM_MODULE_PATH@ +activate = 1 diff --git a/recipes-connectivity/openssl/openssl_%.bbappend b/recipes-connectivity/openssl/openssl_%.bbappend index 57cdfeab..e9139e93 100644 --- a/recipes-connectivity/openssl/openssl_%.bbappend +++ b/recipes-connectivity/openssl/openssl_%.bbappend @@ -2,16 +2,21 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI += "file://openssl-engine.conf" +PKCS11_PROVIDER_PATH ?= "${libdir}/ossl-modules/pkcs11.so" +LEGACY_PROVIDER_PATH ?= "${libdir}/ossl-modules/legacy.so" HSM_MODULE_PATH ?= "${libdir}/softhsm/libsofthsm2.so" do_install:append:class-target() { - if ! grep -q "^\[engine_section\]" ${D}${sysconfdir}/ssl/openssl.cnf; then - sed -e 's,@PKCS11_ENGINE_PATH@,${libdir}/engines-3/pkcs11.so,g' \ + if ! grep -q "^\[pkcs11_sect\]" ${D}${sysconfdir}/ssl/openssl.cnf; then + sed -e 's,@PKCS11_PROVIDER_PATH@,${PKCS11_PROVIDER_PATH},g' \ + -e 's,@LEGACY_PROVIDER_PATH@,${LEGACY_PROVIDER_PATH},g' \ -e 's,@HSM_MODULE_PATH@,${HSM_MODULE_PATH},g' \ ${WORKDIR}/openssl-engine.conf >> ${D}${sysconfdir}/ssl/openssl.cnf fi } +PREFERRED_VERSION_pkcs11-provider = "1.0" + RDEPENDS:${PN}:class-target += " \ - libp11 \ + pkcs11-provider \ " diff --git a/recipes-connectivity/pkcs11-provider/pkcs11-provider_1.0.bb b/recipes-connectivity/pkcs11-provider/pkcs11-provider_1.0.bb new file mode 100644 index 00000000..30240336 --- /dev/null +++ b/recipes-connectivity/pkcs11-provider/pkcs11-provider_1.0.bb @@ -0,0 +1,26 @@ +SUMMARY = "An OpenSSL provider that allows direct interfacing with pkcs11 drivers" +DESCRIPTION = "\ +This is an Openssl 3.x provider to access Hardware or Software Tokens using \ +the PKCS#11 Cryptographic Token Interface\ +\ +This code targets version 3.1 of the interface but should be backwards \ +compatible to previous versions as well.\ +" +HOMEPAGE = "https://github.com/latchset/pkcs11-provider" +SECTION = "libs" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=b53b787444a60266932bd270d1cf2d45" +DEPENDS = "\ + openssl \ + p11-kit \ +" + +SRCREV = "8f6b94409d4872265076df310492da1e5f6abdf7" + +SRC_URI = "git://github.com/latchset/${BPN}.git;branch=main;protocol=https" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig + +FILES:${PN} += "${libdir}/ossl-modules/pkcs11.so" From fc7bba6fa335a0f12a093ec220ce6d2b9325c9b4 Mon Sep 17 00:00:00 2001 From: Mykola Kobets Date: Mon, 5 May 2025 14:11:07 +0300 Subject: [PATCH 010/104] [aos-messageproxy] Add libnl dependency Signed-off-by: Mykola Kobets --- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index e8de43f0..4163e498 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -19,7 +19,7 @@ S = "${WORKDIR}/git" inherit autotools pkgconfig cmake systemd -DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl" +DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl" PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" From 5bb0104b14398367c3198896010e63963d18646a Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:47:45 +0300 Subject: [PATCH 011/104] [recipes-aos-layers] Extend aos-pylibs-layer Add python3-aiohttp and python3-socketio packages. Signed-off-by: Oleksandr Grytsov --- recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb index fbdd9723..79ffb4b8 100644 --- a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb +++ b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb @@ -3,15 +3,17 @@ SUMMARY = "python libs layer" require recipes-aos-layers/aos-base-layer/aos-base-layer.inc AOS_LAYER_FEATURES += " \ + python3-aiohttp \ python3-compression \ python3-crypt \ python3-json \ python3-misc \ + python3-requests \ python3-shell \ python3-six \ + python3-socketio \ python3-threading \ python3-websocket-client \ - python3-requests \ " AOS_LAYER_VERSION = "1.0.0" From d29adf1049985df6b32cef1d88e61d23003395ce Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:50:14 +0300 Subject: [PATCH 012/104] [scripts] Fix comments fota builder script Signed-off-by: Oleksandr Grytsov --- scripts/fota_builder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index 103f8933..de62eeab 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -""" Create fota archive """ +"""Create fota archive""" import argparse import json import os @@ -245,7 +245,7 @@ def _exclude_items(self, rootfs_dir, conf): def main(): """main procedure""" - parser = argparse.ArgumentParser(description="fota") + parser = argparse.ArgumentParser(description="FOTA builder") parser.add_argument( "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" From 4a059dd9f15543c3522d01e1ba2d4fb0709f2cb9 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:51:26 +0300 Subject: [PATCH 013/104] [scripts] Remove unused functionality from layer builder Signed-off-by: Oleksandr Grytsov --- scripts/layer_builder.py | 60 +++++++++------------------------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/scripts/layer_builder.py b/scripts/layer_builder.py index 41c83998..2e764655 100755 --- a/scripts/layer_builder.py +++ b/scripts/layer_builder.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -""" Script for building Aos layers """ +"""Script for building Aos layers""" import argparse import os import sys @@ -8,80 +8,46 @@ from bitbake import call_bitbake -def read_layers_file(enabled_file): - """Reads layers file.""" - layers = [] - - for line in enabled_file: - line = line.strip() - - if len(line) > 0 and line[0] != "#": - if line not in layers: - layers.append(line) - - return layers - - def main(): """Main function""" ret = 0 - parser = argparse.ArgumentParser(description="fota") + + parser = argparse.ArgumentParser(description="Layer builder") parser.add_argument( "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose output" - ) - parser.add_argument("-l", "--layers", nargs="*", help="List of enabled layers") - parser.add_argument( - "-f", "--file", action="store", help="Config file with enabled layers" - ) args = parser.parse_args() with open(args.conf, "r", encoding="utf-8") as conf_file: conf = yaml.load(conf_file, Loader=yaml.CLoader) - if args.layers is not None or args.file is not None: - enabled_layers = [] - - if args.layers is not None: - enabled_layers = list(args.layers) - - if args.file is not None: - try: - with open(args.file, "r", encoding="utf-8") as enabled_file: - enabled_layers.extend(read_layers_file(enabled_file)) - except FileNotFoundError: - print(f"File {args.file} can't be opened") - else: - enabled_layers = None - layers_conf = conf["layers"] for layer in layers_conf["items"]: layer_conf = layers_conf["items"][layer] - if enabled_layers: - enabled = layer in enabled_layers - else: - enabled = layer_conf.get("enabled", True) - bbake_conf = [ ("AOS_BASE_IMAGE", layers_conf["base_image"]), - ("AOS_LAYER_DEPLOY_DIR", os.path.abspath(layers_conf["output_dir"])), + ( + "AOS_LAYER_DEPLOY_DIR", + os.path.abspath(layers_conf.get("output_dir", "../output/layers")), + ), ] - if enabled: - ret = call_bitbake( - conf.get("work_dir", "layers"), + if layer_conf.get("enabled", True): + result = call_bitbake( + conf.get("work_dir", "workdir"), layers_conf.get("yocto_dir", "yocto"), layers_conf.get("build_dir", "build"), layer_conf["target"], bbake_conf, ) + if result != 0: + ret = result + return ret From 2fe8f2616f9d59e23328dcb2ddd507f7599c70db Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:51:52 +0300 Subject: [PATCH 014/104] [scripts] Remove unused custom yocto script Signed-off-by: Oleksandr Grytsov --- scripts/custom_yocto.py | 74 ----------------------------------------- 1 file changed, 74 deletions(-) delete mode 100755 scripts/custom_yocto.py diff --git a/scripts/custom_yocto.py b/scripts/custom_yocto.py deleted file mode 100755 index e289547e..00000000 --- a/scripts/custom_yocto.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -''' Script for building custom bitbake target ''' -import os -import sys -import argparse -import yaml - - -def call_bitbake(yocto_dir, conf): - ''' Call bitbake ''' - cmd = [ - f"cd {yocto_dir}", - f'. ./poky/oe-init-build-env {conf["dir"]}', - f'bitbake {conf["target"]}', - ] - line = " && ".join(c for c in cmd) - ret = os.system(f'bash -c "{line}"') - return ret >> 8 - - -def _read_layers_file(enabled_file): - layers = [] - for line in enabled_file: - line = line.strip() - if len(line) > 0 and line[0] != "#": - if line not in layers: - layers.append(line) - return layers - - -def main(): - ''' Main function ''' - ret = 0 - parser = argparse.ArgumentParser(description="fota") - parser.add_argument( - "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" - ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose output" - ) - parser.add_argument("-l", "--layers", nargs="*", help="List of enabled layers") - parser.add_argument( - "-f", "--file", action="store", help="Config file with enabled layers" - ) - args = parser.parse_args() - - with open(args.conf, "r", encoding="utf-8") as conf_file: - conf = yaml.load(conf_file, Loader=yaml.CLoader) - if args.layers is not None or args.file is not None: - enabled_layers = [] - if args.layers is not None: - enabled_layers = list(args.layers) - if args.file is not None: - try: - with open(args.file, "r", encoding="utf-8") as enabled_file: - enabled_layers.extend(_read_layers_file(enabled_file)) - except FileNotFoundError: - print(f"File {args.file} can't be opened") - else: - enabled_layers = None - layers = conf["layers"] - yocto_dir = layers["yocto_dir"] - for key in layers["items"]: - if enabled_layers: - enabled = key in enabled_layers - else: - enabled = layers["items"][key].get("enabled", True) - if enabled: - ret = call_bitbake(yocto_dir, layers["items"][key]) - return ret - - -if __name__ == "__main__": - sys.exit(main()) From ca34eb0cfe72f52f16f0e46cda6bb17a740d0314 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:52:38 +0300 Subject: [PATCH 015/104] [scripts] Update bitbake script * add optional field `task`; * make `bbake_conf` field optional. Signed-off-by: Oleksandr Grytsov --- scripts/bitbake.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/scripts/bitbake.py b/scripts/bitbake.py index 92a5cfe6..b8509107 100644 --- a/scripts/bitbake.py +++ b/scripts/bitbake.py @@ -1,25 +1,33 @@ #!/usr/bin/env python3 -""" Calls bitbake command line """ +"""Calls bitbake command line""" import os -def call_bitbake(work_dir, yocto_dir, build_dir, target, bbake_conf, do_clean=False): +def call_bitbake( + work_dir, yocto_dir, build_dir, target, bbake_conf=None, task=None, do_clean=False +): """Calls bitbake.""" - print(f"Bitbake target: {target}...\n") - # Create config file + if bbake_conf: + conf_file = os.path.abspath(os.path.join(work_dir, f"{target}.conf")) - conf_file = os.path.abspath(os.path.join(work_dir, f"{target}.conf")) - - create_bbake_conf(conf_file, bbake_conf) + create_bbake_conf(conf_file, bbake_conf) cmd = [f"cd {yocto_dir}", f". ./poky/oe-init-build-env {build_dir}"] if do_clean: + print(f"Cleanup {target} build") + cmd.append(f"bitbake {target} -c cleanall") - cmd.append(f"bitbake {target} --postread {conf_file}") + print(f"Bitbake {target}, task {task}") + + cmd.append( + f"bitbake {target}" + + (f" --postread {conf_file}" if bbake_conf else "") + + (f" -c {task}" if task else "") + ) line = " && ".join(c for c in cmd) @@ -31,6 +39,8 @@ def call_bitbake(work_dir, yocto_dir, build_dir, target, bbake_conf, do_clean=Fa def create_bbake_conf(conf_file, bbake_conf): """Creates yocto conf file.""" + print(f"Create {conf_file} file") + with open(conf_file, "w+", encoding="utf8") as file: for var in bbake_conf: file.write(f'{var[0]} = "{var[1]}"\n') From 8da8223ee5498145d93f59fc06d4fbc8f3281d9b Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 17 Apr 2025 20:53:45 +0300 Subject: [PATCH 016/104] [scripts] Add sdk builder script Signed-off-by: Oleksandr Grytsov --- scripts/sdk_builder.py | 65 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 scripts/sdk_builder.py diff --git a/scripts/sdk_builder.py b/scripts/sdk_builder.py new file mode 100755 index 00000000..e8a35915 --- /dev/null +++ b/scripts/sdk_builder.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +"""Script for building Aos layers""" +import argparse +import os +import shutil +import sys + +import yaml +from bitbake import call_bitbake + + +def main(): + """Main function""" + parser = argparse.ArgumentParser(description="SDK builder") + + parser.add_argument( + "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" + ) + + args = parser.parse_args() + + with open(args.conf, "r", encoding="utf-8") as conf_file: + conf = yaml.load(conf_file, Loader=yaml.CLoader) + + sdk_conf = conf["sdk"] + + yocto_dir = sdk_conf.get("yocto_dir", "yocto") + build_dir = sdk_conf.get("build_dir", "build") + + ret = call_bitbake( + conf.get("work_dir", "workdir"), + yocto_dir, + build_dir, + sdk_conf["base_image"], + task="populate_sdk", + do_clean=True, + ) + + if ret != 0: + return ret + + try: + # Yocto doesn't allow to override SDK_DEPLOY variable, regardless of documentation. + # It is strictly set to ${TOPDIR}/tmp/deploy/sdk in populate_sdk_base.bbclass. + # As WA copy SDK to the output directory manually. + + sdk_dir = os.path.join(yocto_dir, build_dir, "tmp", "deploy", "sdk") + + shutil.copytree( + sdk_dir, + sdk_conf.get("output_dir", "../output/sdk"), + dirs_exist_ok=True, + ) + + shutil.rmtree(sdk_dir, ignore_errors=True) + except OSError as e: + print(f"Failed to copy sdk: {e}") + + return 1 + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From 07b4c0b25728b9a07d934a65bf5056e5901664e6 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 18 Apr 2025 15:59:34 +0300 Subject: [PATCH 017/104] [classes] Fix typo in bundle generator comments Signed-off-by: Oleksandr Grytsov --- classes/bundle-generator.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/bundle-generator.bbclass b/classes/bundle-generator.bbclass index 7a9feaac..573ef356 100644 --- a/classes/bundle-generator.bbclass +++ b/classes/bundle-generator.bbclass @@ -1,4 +1,4 @@ -# This class containes functions to generate update bundle +# This class contains functions to generate update bundle AOS_BUNDLE_DIR ??= "${DEPLOY_DIR_IMAGE}/update" AOS_BUNDLE_FILE ??= "${IMAGE_BASENAME}-${MACHINE}-${PV}.bundle.tar" From d0781a25aa8862344c8c31402a7d774f86f187f3 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 18 Apr 2025 16:00:23 +0300 Subject: [PATCH 018/104] [classes] Put layer version as last part of layer file name Signed-off-by: Oleksandr Grytsov --- classes/layer-generator.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/layer-generator.bbclass b/classes/layer-generator.bbclass index 98347d5b..9afbbff4 100644 --- a/classes/layer-generator.bbclass +++ b/classes/layer-generator.bbclass @@ -5,7 +5,7 @@ AOS_BASE_IMAGE ??= "aos-image" AOS_PARENT_LAYER ??= "${AOS_BASE_IMAGE}" AOS_LAYER_FEATURES ??= "" -AOS_LAYER_VERSION ??= "1" +AOS_LAYER_VERSION ??= "1.0.0" AOS_LAYER_DIGEST_TYPE ??= "sha256" AOS_LAYER_DEPLOY_DIR ??= "${DEPLOY_DIR_IMAGE}/layers" @@ -124,7 +124,7 @@ python do_create_metadata() { } do_pack_layer() { - ${IMAGE_CMD_TAR} --numeric-owner -czf ${AOS_LAYER_DEPLOY_DIR}/${PN}-${AOS_LAYER_VERSION}-${MACHINE}.tar.gz -C ${LAYER_WORK_DIR} . + ${IMAGE_CMD_TAR} --numeric-owner -czf ${AOS_LAYER_DEPLOY_DIR}/${PN}-${MACHINE}-${AOS_LAYER_VERSION}.tar.gz -C ${LAYER_WORK_DIR} . } do_create_layer[nostamp] = "1" From 3c6c7b5b5ade7c3f957487031f02d56e519cf2e9 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 30 Apr 2025 17:31:15 +0300 Subject: [PATCH 019/104] [recipes-aos] Do not populate headers files for SM, IAM and MP SM and IAM installs aos_core_common_cpp headers during populating sdk. It causes files conflicts. Remove installing headers as temporary WA. Need to be fixed in SM, IAM and MP repos. Signed-off-by: Oleksandr Grytsov --- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 6 ++++++ recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 6 ++++++ .../aos-servicemanager/aos-servicemanager_git.bb | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 0bc2d1f8..db22729f 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -105,4 +105,10 @@ do_install:append() { fi } +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 4163e498..f386546a 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -52,3 +52,9 @@ do_install:append:aos-main-node() { install -d ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d/10-aos-cm-service.conf } + +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 1dae47e7..35f4bbb7 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -129,4 +129,16 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d/10-aos-cm-service.conf } +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + addtask update_config after do_install before do_package From c4582bd51e75b64d159a4b8fed71d0a79012239a Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 7 May 2025 12:01:23 +0300 Subject: [PATCH 020/104] [conf] Add aos-core distro Signed-off-by: Oleksandr Grytsov --- conf/distro/aos-core.conf | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 conf/distro/aos-core.conf diff --git a/conf/distro/aos-core.conf b/conf/distro/aos-core.conf new file mode 100644 index 00000000..e6d0e4de --- /dev/null +++ b/conf/distro/aos-core.conf @@ -0,0 +1,12 @@ +include conf/distro/poky.conf + +DISTRO = "aos-core" +DISTRO_NAME = "AosCore" +DISTRO_VERSION = "${AOS_ROOTFS_IMAGE_VERSION}" +SDK_VENDOR = "-aossdk" +SDK_VERSION="${AOS_ROOTFS_IMAGE_VERSION}" +SDK_VERSION[vardepvalue] = "${AOS_ROOTFS_IMAGE_VERSION}" +SDK_NAME = "${DISTRO}-${SDKMACHINE}" +SDKPATHINSTALL = "/opt/${DISTRO}-sdk/${MACHINE}/${SDK_VERSION}" +TOOLCHAIN_OUTPUTNAME = "${SDK_NAME}-toolchain-${MACHINE}-${SDK_VERSION}" +TARGET_VENDOR = "-aos" From 468b047f3947fddb1af10bea886dbb6c29ca985b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 16 May 2025 19:22:28 +0300 Subject: [PATCH 021/104] [initramfs] Redirect logs to kmseg This patch ensures that all logs from initramfs are redirected to kmseg, so they are visible in the kernel log buffer and journalctl. Signed-off-by: Mykhailo Lohvynenko --- recipes-core/images/aos-image-initramfs.bb | 1 + .../initrdscripts/initramfs-framework/kmsglog | 37 +++++++++++++++++++ .../initramfs-framework_%.bbappend | 9 +++++ 3 files changed, 47 insertions(+) create mode 100644 recipes-core/initrdscripts/initramfs-framework/kmsglog diff --git a/recipes-core/images/aos-image-initramfs.bb b/recipes-core/images/aos-image-initramfs.bb index fe2b6e8e..a4528981 100644 --- a/recipes-core/images/aos-image-initramfs.bb +++ b/recipes-core/images/aos-image-initramfs.bb @@ -4,6 +4,7 @@ LICENSE = "Apache-2.0" AOS_INITRAMFS_SCRIPTS ?= " \ initramfs-module-aosupdate \ + initramfs-module-kmsglog \ initramfs-module-machineid \ initramfs-module-udev \ initramfs-module-vardir \ diff --git a/recipes-core/initrdscripts/initramfs-framework/kmsglog b/recipes-core/initrdscripts/initramfs-framework/kmsglog new file mode 100644 index 00000000..132e2b8b --- /dev/null +++ b/recipes-core/initrdscripts/initramfs-framework/kmsglog @@ -0,0 +1,37 @@ +#!/bin/sh + +# This file contains overridden log methods to redirect initramfs messages to /dev/kmsg + +# Prints information +msg() { + echo "<5>initramfs: $*" >/dev/kmsg +} + +# Prints error +error() { + echo "<3>initramfs: $*" >/dev/kmsg +} + +# Prints information if verbose bootparam is used +info() { + [ -n "$bootparam_verbose" ] && echo "<6>initramfs: $*" >/dev/kmsg +} + +# Prints information if debug bootparam is used +debug() { + [ -n "$bootparam_debug" ] && echo "<7>initramfs: $*" >/dev/kmsg +} + +# Prints a message and start a endless loop +fatal() { + echo "<2>initramfs: $1" >/dev/kmsg + echo "<2>initramfs:" >/dev/kmsg + + if [ -n "$bootparam_init_fatal_sh" ]; then + sh + else + while [ "true" ]; do + sleep 3600 + done + fi +} diff --git a/recipes-core/initrdscripts/initramfs-framework_%.bbappend b/recipes-core/initrdscripts/initramfs-framework_%.bbappend index 686b5b05..dca36484 100644 --- a/recipes-core/initrdscripts/initramfs-framework_%.bbappend +++ b/recipes-core/initrdscripts/initramfs-framework_%.bbappend @@ -2,6 +2,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/initramfs-framework:" SRC_URI += " \ file://aosupdate \ + file://kmsglog \ file://machineid \ file://opendisk \ file://rundir \ @@ -10,6 +11,7 @@ SRC_URI += " \ PACKAGES += " \ initramfs-module-aosupdate \ + initramfs-module-kmsglog \ initramfs-module-machineid \ initramfs-module-opendisk \ initramfs-module-rundir \ @@ -30,6 +32,10 @@ RRECOMMENDS:initramfs-module-aosupdate = " \ ', '', d)} \ " +SUMMARY:initramfs-module-kmsglog = "redirect log messages to kmsg" +RDEPENDS:initramfs-module-kmsglog = "${PN}-base" +FILES:initramfs-module-kmsglog = "/init.d/00-kmsglog" + SUMMARY:initramfs-module-machineid = "bind /etc/machine-id to /var/machine-id" RDEPENDS:initramfs-module-machineid = "${PN}-base initramfs-module-vardir" FILES:initramfs-module-machineid = "/init.d/96-machineid" @@ -50,6 +56,9 @@ do_install:append() { # aosupdate install -m 0755 ${WORKDIR}/aosupdate ${D}/init.d/95-aosupdate + # kmsglog + install -m 0755 ${WORKDIR}/kmsglog ${D}/init.d/00-kmsglog + # machineid install -m 0755 ${WORKDIR}/machineid ${D}/init.d/96-machineid From c657a6fd3e0518ca38e9b1575ca77924dd0d2475 Mon Sep 17 00:00:00 2001 From: Mykola Kobets Date: Mon, 19 May 2025 22:58:10 +0300 Subject: [PATCH 022/104] [recipes-aos] Switch to OpenSSL crypto provider Signed-off-by: Mykola Kobets --- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 2 +- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index db22729f..8a58bb06 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -22,7 +22,7 @@ SRC_URI += " \ DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF" +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" inherit autotools pkgconfig cmake systemd diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index f386546a..522c22d5 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -25,7 +25,7 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF" +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" SYSTEMD_SERVICE:${PN} = "aos-messageproxy.service aos-messageproxy-provisioning.service" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 35f4bbb7..c92faf01 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -34,7 +34,7 @@ DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" do_configure[network] = "1" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF" +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" From 8a33dc004f95a9f5e142673a81beca428410519f Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 4 Jun 2025 13:34:05 +0300 Subject: [PATCH 023/104] [aos-setupdisk] Remove mount dirs on disk setup delete Mount directories are created during disk setup, but they are not removed when the disk setup delete command is executed. This patch makes disk setup create and delete comands consistent. Signed-off-by: Mykhailo Lohvynenko --- recipes-aos/aos-setupdisk/files/setupdisk.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes-aos/aos-setupdisk/files/setupdisk.sh b/recipes-aos/aos-setupdisk/files/setupdisk.sh index 90002fe5..ef68aa9b 100644 --- a/recipes-aos/aos-setupdisk/files/setupdisk.sh +++ b/recipes-aos/aos-setupdisk/files/setupdisk.sh @@ -117,6 +117,7 @@ delete_aos_disks() { if mountpoint -q "$mountdir"; then umount "$mountdir" + rm -rf "$mountdir" fi done <"$CONFIG_FILE" From 5b677ae4f9782a307a5576f2165b8fc615ef4d0b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Jun 2025 15:58:08 +0300 Subject: [PATCH 024/104] [recipes-devtools] Add python libs needed for kuksa These python package recipes are taken from the meta-agl repository (meta-agl/meta-agl-kuksa/recipes-devtools/python). Signed-off-by: Mykhailo Lohvynenko --- .../python/python3-annotated-types_%.bbappend | 1 + .../python/python3-anytree_2.9.2.bb | 16 ++++++++++++++++ .../python/python3-deprecation_2.1.0.bb | 12 ++++++++++++ .../python/python3-graphql-core_3.2.3.bb | 12 ++++++++++++ .../python/python3-jsonpath-ng_1.5.3.bb | 15 +++++++++++++++ .../python/python3-pydantic-core_%.bbappend | 1 + .../python/python3-pydantic_%.bbappend | 1 + .../python/python3-rich-click_1.8.4.bb | 17 +++++++++++++++++ recipes-devtools/python/python3-rich_%.bbappend | 1 + .../python3-setuptools-git-versioning_1.7.4.bb | 17 +++++++++++++++++ 10 files changed, 93 insertions(+) create mode 100644 recipes-devtools/python/python3-annotated-types_%.bbappend create mode 100644 recipes-devtools/python/python3-anytree_2.9.2.bb create mode 100644 recipes-devtools/python/python3-deprecation_2.1.0.bb create mode 100644 recipes-devtools/python/python3-graphql-core_3.2.3.bb create mode 100644 recipes-devtools/python/python3-jsonpath-ng_1.5.3.bb create mode 100644 recipes-devtools/python/python3-pydantic-core_%.bbappend create mode 100644 recipes-devtools/python/python3-pydantic_%.bbappend create mode 100644 recipes-devtools/python/python3-rich-click_1.8.4.bb create mode 100644 recipes-devtools/python/python3-rich_%.bbappend create mode 100644 recipes-devtools/python/python3-setuptools-git-versioning_1.7.4.bb diff --git a/recipes-devtools/python/python3-annotated-types_%.bbappend b/recipes-devtools/python/python3-annotated-types_%.bbappend new file mode 100644 index 00000000..d6f58699 --- /dev/null +++ b/recipes-devtools/python/python3-annotated-types_%.bbappend @@ -0,0 +1 @@ +BBCLASSEXTEND += "native" diff --git a/recipes-devtools/python/python3-anytree_2.9.2.bb b/recipes-devtools/python/python3-anytree_2.9.2.bb new file mode 100644 index 00000000..7965ea8d --- /dev/null +++ b/recipes-devtools/python/python3-anytree_2.9.2.bb @@ -0,0 +1,16 @@ +SUMMARY = "Powerful and Lightweight Python Tree Data Structure" +HOMEPAGE = "https://github.com/c0fec0de/anytree" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" + +PYPI_PACKAGE = "anytree" + +SRC_URI[sha256sum] = "e02af617d41ede47f922e5deea0e4efc3201c6e7330cfc1265409762e5381283" + +inherit pypi python_poetry_core + +RDEPENDS:${PN} += " \ + python3-six \ +" + +BBCLASSEXTEND += "native nativesdk" diff --git a/recipes-devtools/python/python3-deprecation_2.1.0.bb b/recipes-devtools/python/python3-deprecation_2.1.0.bb new file mode 100644 index 00000000..c4b3a1cf --- /dev/null +++ b/recipes-devtools/python/python3-deprecation_2.1.0.bb @@ -0,0 +1,12 @@ +SUMMARY = "A library to handle automated deprecations" +HOMEPAGE = "https://github.com/briancurtin/deprecation" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" + +PYPI_PACKAGE = "deprecation" + +SRC_URI[sha256sum] = "72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff" + +inherit pypi setuptools3 + +BBCLASSEXTEND += "native nativesdk" diff --git a/recipes-devtools/python/python3-graphql-core_3.2.3.bb b/recipes-devtools/python/python3-graphql-core_3.2.3.bb new file mode 100644 index 00000000..b12957a4 --- /dev/null +++ b/recipes-devtools/python/python3-graphql-core_3.2.3.bb @@ -0,0 +1,12 @@ +SUMMARY = "GraphQL implementation for Python" +HOMEPAGE = "https://github.com/graphql-python/graphql-core" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=73706fb002de2debc52328afd1688817" + +PYPI_PACKAGE = "graphql-core" + +SRC_URI[sha256sum] = "06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676" + +inherit pypi setuptools3 + +BBCLASSEXTEND += "native nativesdk" diff --git a/recipes-devtools/python/python3-jsonpath-ng_1.5.3.bb b/recipes-devtools/python/python3-jsonpath-ng_1.5.3.bb new file mode 100644 index 00000000..4c3dfaa9 --- /dev/null +++ b/recipes-devtools/python/python3-jsonpath-ng_1.5.3.bb @@ -0,0 +1,15 @@ +SUMMARY = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." +HOMEPAGE = "https://github.com/h2non/jsonpath-ng" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +PYPI_PACKAGE = "jsonpath-ng" + +SRC_URI[sha256sum] = "a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + python3-ply \ + python3-six \ +" diff --git a/recipes-devtools/python/python3-pydantic-core_%.bbappend b/recipes-devtools/python/python3-pydantic-core_%.bbappend new file mode 100644 index 00000000..d6f58699 --- /dev/null +++ b/recipes-devtools/python/python3-pydantic-core_%.bbappend @@ -0,0 +1 @@ +BBCLASSEXTEND += "native" diff --git a/recipes-devtools/python/python3-pydantic_%.bbappend b/recipes-devtools/python/python3-pydantic_%.bbappend new file mode 100644 index 00000000..d6f58699 --- /dev/null +++ b/recipes-devtools/python/python3-pydantic_%.bbappend @@ -0,0 +1 @@ +BBCLASSEXTEND += "native" diff --git a/recipes-devtools/python/python3-rich-click_1.8.4.bb b/recipes-devtools/python/python3-rich-click_1.8.4.bb new file mode 100644 index 00000000..e442774a --- /dev/null +++ b/recipes-devtools/python/python3-rich-click_1.8.4.bb @@ -0,0 +1,17 @@ +SUMMARY = "A shim around Click that renders help output nicely using Rich." +HOMEPAGE = "https://github.com/ewels/rich-click" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5372b77c3720be60b7eff9a9a5c0000d" + +PYPI_PACKAGE = "rich_click" + +SRC_URI[sha256sum] = "0f49471f04439269d0e66a6f43120f52d11d594869a2a0be600cfb12eb0616b9" + +inherit pypi python_setuptools_build_meta + +RDEPENDS:${PN} += " \ + python3-click \ + python3-rich \ +" + +BBCLASSEXTEND += "native nativesdk" diff --git a/recipes-devtools/python/python3-rich_%.bbappend b/recipes-devtools/python/python3-rich_%.bbappend new file mode 100644 index 00000000..d6f58699 --- /dev/null +++ b/recipes-devtools/python/python3-rich_%.bbappend @@ -0,0 +1 @@ +BBCLASSEXTEND += "native" diff --git a/recipes-devtools/python/python3-setuptools-git-versioning_1.7.4.bb b/recipes-devtools/python/python3-setuptools-git-versioning_1.7.4.bb new file mode 100644 index 00000000..698a3bb6 --- /dev/null +++ b/recipes-devtools/python/python3-setuptools-git-versioning_1.7.4.bb @@ -0,0 +1,17 @@ +SUMMARY = "Use git repo data for building a version number according PEP-440" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f22e7cb81b49604c2450680982bdc067" +PYPI_PACKAGE = "setuptools-git-versioning" + +DEPENDS = "python3-six-native" + +SRC_URI[sha256sum] = "be2901afcb7c865e3b500a38183598657fd029a1a72c8d1dfc7fbffb5c227dac" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + python3-setuptools \ + python3-six \ +" + +BBCLASSEXTEND = "native" From fe590d41851883468b6bc45c6ab0cba5147a494b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Jun 2025 15:58:34 +0300 Subject: [PATCH 025/104] [recipes-support] Add vss tools recipes Signed-off-by: Mykhailo Lohvynenko --- recipes-support/vss/vss-tools_5.0.bb | 32 +++++++++++++++++++++++ recipes-support/vss/vss_5.0.bb | 39 ++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 recipes-support/vss/vss-tools_5.0.bb create mode 100644 recipes-support/vss/vss_5.0.bb diff --git a/recipes-support/vss/vss-tools_5.0.bb b/recipes-support/vss/vss-tools_5.0.bb new file mode 100644 index 00000000..6b36d5d2 --- /dev/null +++ b/recipes-support/vss/vss-tools_5.0.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "COVESA Vehicle Signal Specification tools" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3" + +BRANCH = "release/5.0" +SRCREV = "9ba7f40c0995358a293aab729d57739c3e9b2829" + +SRC_URI = "git://github.com/COVESA/vss-tools.git;protocol=https;branch=${BRANCH} " + +S = "${WORKDIR}/git" + +inherit python_poetry_core + +RDEPENDS:${PN} += " \ + python3-core \ + python3-ctypes \ + python3-email \ + python3-importlib-metadata \ + python3-json \ + python3-logging \ + python3-netclient \ + python3-pkg-resources \ + python3-anytree \ + python3-deprecation \ + python3-graphql-core \ + python3-pyyaml \ + python3-six \ + python3-pydantic \ + python3-rich-click \ +" + +BBCLASSEXTEND += "native nativesdk" diff --git a/recipes-support/vss/vss_5.0.bb b/recipes-support/vss/vss_5.0.bb new file mode 100644 index 00000000..d293a7e5 --- /dev/null +++ b/recipes-support/vss/vss_5.0.bb @@ -0,0 +1,39 @@ +DESCRIPTION = "Vehicle Signal Specification" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3" + +BRANCH = "release/5.0" +SRCREV = "f23ba53be78a8bf2b8df2496bbfccb2860913892" + +SRC_URI = "git://github.com/COVESA/vehicle_signal_specification.git;branch=${BRANCH};protocol=https" + +S = "${WORKDIR}/git" + +UPSTREAM_CHECK_GITTAGREGEX = "v(?P\d+(\.\d+)+)" + +inherit allarch update-alternatives + +DEPENDS = "vss-tools-native" + +EXTRA_OEMAKE = "TOOLSDIR=${STAGING_BINDIR_NATIVE}" + +FILES:${PN} += " \ + ${datadir} \ +" + +do_configure[noexec] = "1" + +do_compile() { + oe_runmake json +} + +do_install() { + # Cannot use the "install" target in the project Makefile, as it is + # intended for setting the repo up for builds. + # For now, just the generated JSON is installed. It is possible that + # installing the vspec files somewhere as a development package may + # be useful, but for now things will be kept simple. + install -d ${D}${datadir}/vss + install -m 0644 ${S}/vss.json ${D}${datadir}/vss/vss.json + install -m 0644 ${S}/vss.json ${D}${datadir}/vss/vss-test.json +} From 1ade729a3aae5190c290166af0c442b4650ad58b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Jun 2025 15:59:03 +0300 Subject: [PATCH 026/104] [recipes-connectivity] Add kuksa databroker recipes Signed-off-by: Mykhailo Lohvynenko --- .../kuksa-databroker/files/CA.pem | 23 + .../kuksa-databroker/files/Client.key | 27 + .../kuksa-databroker/files/Client.pem | 24 + .../kuksa-databroker/files/Server.key | 27 + .../kuksa-databroker/files/Server.pem | 24 + .../kuksa-databroker/files/genCertsAGL.sh | 58 + .../kuksa-databroker/files/jwt.key.pub | 14 + .../files/kuksa-databroker.env | 1 + .../files/kuksa-databroker.service | 11 + .../kuksa-databroker-crates.inc | 1032 +++++++++++++++++ .../0001-Remove-protobuf-src-usage.patch | 133 +++ .../kuksa-databroker/kuksa-databroker_git.bb | 64 + 12 files changed, 1438 insertions(+) create mode 100644 recipes-connectivity/kuksa-databroker/files/CA.pem create mode 100644 recipes-connectivity/kuksa-databroker/files/Client.key create mode 100644 recipes-connectivity/kuksa-databroker/files/Client.pem create mode 100644 recipes-connectivity/kuksa-databroker/files/Server.key create mode 100644 recipes-connectivity/kuksa-databroker/files/Server.pem create mode 100755 recipes-connectivity/kuksa-databroker/files/genCertsAGL.sh create mode 100644 recipes-connectivity/kuksa-databroker/files/jwt.key.pub create mode 100644 recipes-connectivity/kuksa-databroker/files/kuksa-databroker.env create mode 100644 recipes-connectivity/kuksa-databroker/files/kuksa-databroker.service create mode 100644 recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc create mode 100644 recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch create mode 100644 recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb diff --git a/recipes-connectivity/kuksa-databroker/files/CA.pem b/recipes-connectivity/kuksa-databroker/files/CA.pem new file mode 100644 index 00000000..b3fa17d6 --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/CA.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID3zCCAscCFDixxnLKOE9pr9sDQynjRqX7u+TlMA0GCSqGSIb3DQEBCwUAMIGr +MQswCQYDVQQGEwJVUzEWMBQGA1UECAwNU2FuIEZyYW5jaXNjbzETMBEGA1UEBwwK +Q2FsaWZvcm5pYTEcMBoGA1UECgwTYXV0b21vdGl2ZWxpbnV4Lm9yZzEVMBMGA1UE +AwwMbG9jYWxob3N0LWNhMTowOAYJKoZIhvcNAQkBFithZ2wtZGV2LWNvbW11bml0 +eUBsaXN0cy5hdXRvbW90aXZlbGludXgub3JnMB4XDTIzMDcyMDIwMzg1NVoXDTMz +MDcxNzIwMzg1NVowgasxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1TYW4gRnJhbmNp +c2NvMRMwEQYDVQQHDApDYWxpZm9ybmlhMRwwGgYDVQQKDBNhdXRvbW90aXZlbGlu +dXgub3JnMRUwEwYDVQQDDAxsb2NhbGhvc3QtY2ExOjA4BgkqhkiG9w0BCQEWK2Fn +bC1kZXYtY29tbXVuaXR5QGxpc3RzLmF1dG9tb3RpdmVsaW51eC5vcmcwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDJZvopAg03G1TuyukI2QdVTzHQxnG +iPePMVIBAQ8M5tBWBOZxxkOgwRBTqZ1GJRvgPPediPHb3+/j+k5/+NE8TT2smDfk +4u9+NBNFXGhC9jqoEe0nkxca85RHP1Jx1iIp8SJ1TTtzEu4q/O/9bCnA+05NPLWQ +YbDZr++lR4Bwhpz0ZVD69uZE/7aXPKVoVQPyeiwNgP7sfn5XOx+THpYz2Lwl2ew/ +490Mm5Wrw5pQkq49s5On5tR7cdms3CWnVKe+qpeJo/ShZg8mJesMusZRLZ3slSPp +GMVBbdFPhIv0L4HFzoJcnEzo1j6+h7fhu4v5T2qNkCkBlxehqvsy3DwfAgMBAAEw +DQYJKoZIhvcNAQELBQADggEBALNHiz8a86sZv6Pii/rtrlctD2x1qIobOAjQID55 +/ylAVPc0JuzGEpc8Hcl9jQXBFz2ZBBYTEn0iAB+nn9BnxWYpF/G9LQsz61uzdJJs +0WlR3FyjN8PwCysMwzGEmG2BH43vfg9oltAKxY4rZ3l5c8eL/a9o2vDzNjKNibll +NdLB+8NkZz33pjyru1sG2lw6Y1gxhcOMSU7MuHgW1YI06slBu56e92OQt5atRc6l +rY9faELSJpLhtKYF9spsS/LsITJrKdVkMZRgqrhoWAIB9qyehtBGk+Agk8MvBba8 +nRAF332SyeLeN/ytJTbjOmcYVh9daGADdyRb5d+5ALBuutU= +-----END CERTIFICATE----- diff --git a/recipes-connectivity/kuksa-databroker/files/Client.key b/recipes-connectivity/kuksa-databroker/files/Client.key new file mode 100644 index 00000000..73b67f5c --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/Client.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAyISsHMGwy8dvhx+tPQOGtgtb9YDWS0kRMPcOou3QlUjAcXmz +vT2dLIwOnnRYBS9nENDqI4x52yECUBwVNIvoeiZlQqjKhSr2BOpwJIgJgqeKr4he +sU9M9s3ODqR2sdUhv7e54sRYSFv5Hs35Horr3guSRh12FtWh+iLT2PI75jbi3KjP +mK4yZGJmoSQWh+q/vhB5CQtdAcA/08aoZnhyMOGqBMzmhr1PDm7UbzZIcp2Lxs3x +q3PBJq5eMF6N3S8ssETz7WOqX0vnBdgl4DhMYCVgrjppXzmcYYbkm4uluKVf8sR7 +cAbSaoUUft2G4mLXNBE1RJVpYrzHIQW7OphjqQIDAQABAoIBAGfnl+gu1hZCeiBi +4bpEIYIj0Lsez+yjKC1fWE5FPVieIlqq3eCqFNAIo2qojxPgxF+KYkmZeWt7Z19r +rfFUrlrdmos4O/lVkbZqZUII3CS//LWIzMjEdvVNIAGmZ3svHhXidohzheu4/RZh +VT3mbuLYzCtZCOA8Q3sCoRRCMZfQ3jrTEvak4xrgotihL3bEUOIrA8Tyv8AaAhmP +nIKV+0pS/d8xCkpIBmkNxVtNRAGvsQK5i7DsQYFEDKzbFjhXz7jRapfesAQACEgJ +0yLYKSoiHktuyHIPspj37BdTZva6vNkabJVcDKXMIuRd5xnypiygv7vo+onHJ5Rw +T9TzryECgYEA6oe9qYdiXsKygUji9W6rqYGPAl6o56nyAX6QrKnKhCQBmyVYgBB5 +YmehULzjK1Xvno5ophiBkojnCE8y99liEWZWnE9p2pr8O028ZfQficfbjWgkqmL5 +awmUTON40wK7QkpWj81YwbARYAQuC611R4MfzLWlnxxHacvBZc8x2j8CgYEA2t/a +s6dW2XuqfEgfS/oKI/9i1/CXnPFVAueAPCCl/Ee/QAGJMdmSf4yonnbnOycGMdSh +QGYUHb/PT7i04U+92T+rniprXn3QFz6iwF6X6nCkdlw9RxcWAOmg5l0yIoo9bp7J +LmVnbn2Y2TOy8/Djq47gypTH8H0VSVg5BjKgOBcCgYAG3giosSUpPyw46uhyZVYz +dW65lAoAFpLWhl04IRSj/+XoJBTOUy0qu3wWwCEqwK5uhx77VhZdMxMIxEDqzvu3 +JLb+hrjDxOwD1IfiuF5AC5EbN+Ry9Mj24GXuRm7gRuEy1LhqJ4okycIIfLbYcrDP +ckB5HwyFdy+EIoo8L+/2wwKBgQDallPJteaTvuCtzC2NaEK2XritZjdUYuR+yQqV +ghmjEVhcKOyGX37iaWyBDciyl6+lFnCQayHN8CCvwozKtCOrEt5nUH/4V3f5rvFF +Y3MejK6DEm2UUOcFtE2foxWNzze5AVV0Q4t/mmmLCgm/fCUz0baIOvxPHeyjWjth +CDBgswKBgQDj5QlFkdlgJvdJweHUSWm0vssFCgCucWEPgy5iOo4MDxEHq0r1AZWU +K5j1xabtD73K6JmO3ElvSELGAd1MlvRzeZMsSP8goCk3e8a85js2sRPwDxGHa0Dd +Ef7DoyFp6UIDOUAX6R2ylPyZYqM7bowoLdGIwh9jo8fZnvHn/UCw0w== +-----END RSA PRIVATE KEY----- diff --git a/recipes-connectivity/kuksa-databroker/files/Client.pem b/recipes-connectivity/kuksa-databroker/files/Client.pem new file mode 100644 index 00000000..fcd92b6e --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/Client.pem @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIIEBjCCAu6gAwIBAgIUeUuog3JmZGhkE0nRcATDuclsVvkwDQYJKoZIhvcNAQEL +BQAwgasxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1TYW4gRnJhbmNpc2NvMRMwEQYD +VQQHDApDYWxpZm9ybmlhMRwwGgYDVQQKDBNhdXRvbW90aXZlbGludXgub3JnMRUw +EwYDVQQDDAxsb2NhbGhvc3QtY2ExOjA4BgkqhkiG9w0BCQEWK2FnbC1kZXYtY29t +bXVuaXR5QGxpc3RzLmF1dG9tb3RpdmVsaW51eC5vcmcwHhcNMjMwNzIwMjAzODU1 +WhcNMjcwNzE5MjAzODU1WjCBpTELMAkGA1UEBhMCVVMxFjAUBgNVBAgMDVNhbiBG +cmFuY2lzY28xEzARBgNVBAcMCkNhbGlmb3JuaWExHDAaBgNVBAoME2F1dG9tb3Rp +dmVsaW51eC5vcmcxDzANBgNVBAMMBkNsaWVudDE6MDgGCSqGSIb3DQEJARYrYWds +LWRldi1jb21tdW5pdHlAbGlzdHMuYXV0b21vdGl2ZWxpbnV4Lm9yZzCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMiErBzBsMvHb4cfrT0DhrYLW/WA1ktJ +ETD3DqLt0JVIwHF5s709nSyMDp50WAUvZxDQ6iOMedshAlAcFTSL6HomZUKoyoUq +9gTqcCSICYKniq+IXrFPTPbNzg6kdrHVIb+3ueLEWEhb+R7N+R6K694LkkYddhbV +ofoi09jyO+Y24tyoz5iuMmRiZqEkFofqv74QeQkLXQHAP9PGqGZ4cjDhqgTM5oa9 +Tw5u1G82SHKdi8bN8atzwSauXjBejd0vLLBE8+1jql9L5wXYJeA4TGAlYK46aV85 +nGGG5JuLpbilX/LEe3AG0mqFFH7dhuJi1zQRNUSVaWK8xyEFuzqYY6kCAwEAAaMm +MCQwIgYDVR0RBBswGYIGQ2xpZW50gglsb2NhbGhvc3SHBH8AAAEwDQYJKoZIhvcN +AQELBQADggEBAGtM7LGk4PhEgrjLXr7tdRn/VSwUv+HLDmtgkMFsAqYolTwtK7eK +1XgNF2j6Yo4ma/efd8Td9wjKkrfkxQRCpM5gjNLhiZsBRO/HW4GiC3GKz0ELijE2 +7JU7xikawSE6Zvvj1t33KJ5uGDowv2tvDbCB76ecGohTb5O7mpe+fxMlt+d4vPku +uTfAaNfl8+oSo7suy3842ANpxteoxfVHZgG0FjdMKjSKxCyxI3buLltlQ7G+39QS +/cwuRTOp0UNPpiHWDKVOXL8qW/ZHpocGFlErstEQjUz+3/WglMlTK07ocRVQjQc6 +mAo4aKRaaHi5Khn+KPrRDnS+Rl8xEzSsBeo= +-----END CERTIFICATE----- diff --git a/recipes-connectivity/kuksa-databroker/files/Server.key b/recipes-connectivity/kuksa-databroker/files/Server.key new file mode 100644 index 00000000..8b9c6ac6 --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/Server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAzGvmH7adlcMVdfblKg56EkgiSkR45IrRaIMH/AKUcK/4EJdk +Jx3NoHuYuiTTreiovt9b5FjqV8txuJ579e4O9GyDELN1r9stR5y8zEbFQuf8afxK +Bl0JPnhXOxi7nUq92rn0H7jpm0a9WQvmbdRsFVfafNoeC4Dz1PeGMN4tHYtHHCnq +Ye5Sr7yT/eZ8RMUoXB560akRctA/pQWEwYbNps02HJs+jeNsJuXTgXpsirTy2RR5 +TKLmZjQMovxW85zYpSS9fRprwpzqeHhWbJBWWNeP8Y20nkRbAaAktc8IrlmhFMLh +4n0L1B0s0+Xn/9kt98pNSDCJPzH6Ar4LoDPDfwIDAQABAoIBAAyG0CNBXYa/3aDM +8F4TZQeZxAApEf9vQkXVQbf/sHj3T4w0ur5q5R7gdAt0FkSh7TVFGqxzhmi63s0h +aRc471GrFJ0BYkTUeYHZ6PfbnlrrPFyCSUb6jIZ3eWD1swmAewHcQ0luW2JYg2Hh +iM1SJw1nxMvB0fWCgW6bfG2iL8GPmyrVyhyrfebZdEaUUnjvfqLWroIoBZ2B0roa +dZ/VDlXzN8wspyziCqlumiq+R3b9+abBtHLyG13DQAhVYGksbX+5W4s1Yy6nwG0S +yyRh2cK5c2MPrjqHmJr1GqlXItmEnqkjiVlg/qZDEyalWHcKFNGNaURSz7RWNwo2 +cWZv8AECgYEA/h76+2yjvYfDeZRiKRfN9imfT9F6T4VoGgfoZODIe6uLsOQOeiKR +lqjj6bdIP8CDsfcHhb38FblYsgm6GFZiROQafRjVfj2yWiasQszFTOzLDRqR8LNs +nZSUv7zlPziJ28VBs1DF5lZSNbzFXEKxAWdGAINC1POdKZOi2UCUwYECgYEAze7X +7ML1QV+ZipnszLiRvccQ7kMUw51g/hi0Fw//tkCC8FnsbR489GDb8l+V/IR9tNov +7y5cd/NRziGVUhXH67ZnXa2k5yRYxhFWQxpgEEUWUhsfYVqppMj7vMjcxVa85A0R +2hzI/kWWWWcowwuHSmuoU8xRZlNdA2cbefeBBP8CgYEArm8hpRhLxTu+CGS8hKyc +ak7j1mxaYt+WN9gZw7UwqQN2HfRNo7S67wn7eGChLXG+dJi3By0ELv1NTtiybyZM +yjExpZE4azF6jbtiH3BkNouMTfBhITJoajqlaIAHdMAgkUTz9lyJm7TBNbXgW5ZD +3ky/lnaDl52p0fJPpIVaFwECgYEAyhsRYTUJPGqVpxhf9Z9isY0wCZZeR4kqStZ1 +0HiMLxLrLvYh+gmGKxTwZ9P1wIlLUfYcuzGV4Mc1TwdYo+HqfmRa1+52e78JPQKA +1YSKKQ2U1Wn3BzXSbn4tyd6cBTSWV36YOaasgBhNcVqz/5BN6/Tyk6Nfc/x2ucM0 +jSQiRIMCgYADss1PeYdANwbw8n29mXEGkk6qfVh54MU/AoS2v6kk6fqAHNFsb9vJ +m3JkRYSh3kSKwKgD97oGMpbxLr0wVj69s4s8wPjhNo4RZALCB/sj9hra7rsoRzmQ +apSPbfLaWVZEqg3fj0gCamSq8PGjY4fA9RNHOB751M2oszpQb8bdpA== +-----END RSA PRIVATE KEY----- diff --git a/recipes-connectivity/kuksa-databroker/files/Server.pem b/recipes-connectivity/kuksa-databroker/files/Server.pem new file mode 100644 index 00000000..4b181e9a --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/Server.pem @@ -0,0 +1,24 @@ +-----BEGIN CERTIFICATE----- +MIIEBjCCAu6gAwIBAgIUeUuog3JmZGhkE0nRcATDuclsVvgwDQYJKoZIhvcNAQEL +BQAwgasxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1TYW4gRnJhbmNpc2NvMRMwEQYD +VQQHDApDYWxpZm9ybmlhMRwwGgYDVQQKDBNhdXRvbW90aXZlbGludXgub3JnMRUw +EwYDVQQDDAxsb2NhbGhvc3QtY2ExOjA4BgkqhkiG9w0BCQEWK2FnbC1kZXYtY29t +bXVuaXR5QGxpc3RzLmF1dG9tb3RpdmVsaW51eC5vcmcwHhcNMjMwNzIwMjAzODU1 +WhcNMjcwNzE5MjAzODU1WjCBpTELMAkGA1UEBhMCVVMxFjAUBgNVBAgMDVNhbiBG +cmFuY2lzY28xEzARBgNVBAcMCkNhbGlmb3JuaWExHDAaBgNVBAoME2F1dG9tb3Rp +dmVsaW51eC5vcmcxDzANBgNVBAMMBlNlcnZlcjE6MDgGCSqGSIb3DQEJARYrYWds +LWRldi1jb21tdW5pdHlAbGlzdHMuYXV0b21vdGl2ZWxpbnV4Lm9yZzCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMxr5h+2nZXDFXX25SoOehJIIkpEeOSK +0WiDB/wClHCv+BCXZCcdzaB7mLok063oqL7fW+RY6lfLcbiee/XuDvRsgxCzda/b +LUecvMxGxULn/Gn8SgZdCT54VzsYu51Kvdq59B+46ZtGvVkL5m3UbBVX2nzaHguA +89T3hjDeLR2LRxwp6mHuUq+8k/3mfETFKFweetGpEXLQP6UFhMGGzabNNhybPo3j +bCbl04F6bIq08tkUeUyi5mY0DKL8VvOc2KUkvX0aa8Kc6nh4VmyQVljXj/GNtJ5E +WwGgJLXPCK5ZoRTC4eJ9C9QdLNPl5//ZLffKTUgwiT8x+gK+C6Azw38CAwEAAaMm +MCQwIgYDVR0RBBswGYIGU2VydmVygglsb2NhbGhvc3SHBH8AAAEwDQYJKoZIhvcN +AQELBQADggEBAKLnUuIYKU7kX6hw2kWziAzvucZCwkKDnMK1/xqakcgfnFw+z8nu +XSqNsXX0KNBfy0xhZ66Uc9rL37RG+smidxJxy+QmDi3c/Ooqj7DxbZwVXzstnbBp ++iqgfqjadC8Glfci7cfCnl7X4O3oQqo99BJDo7JH3S39fe98mG4mXa1WblKiWnkc +yDtUnf7eFbFeNbVkL94HGzOtghShHokGyt9vZKyGf+szCPPWiIDldLq/CUpPFEnD +AqUhTYBXbHZNZJHAEJ0waJqLxmytt19mAv03aaIMYUpBR0CMvjfDNn5x2Bp86v3A +YW544bNsyHfbvK0ZqwvOaV3sIKG7Bzm2pOA= +-----END CERTIFICATE----- diff --git a/recipes-connectivity/kuksa-databroker/files/genCertsAGL.sh b/recipes-connectivity/kuksa-databroker/files/genCertsAGL.sh new file mode 100755 index 00000000..b078fd1b --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/genCertsAGL.sh @@ -0,0 +1,58 @@ +#!/bin/bash + + +genCAKey() { + openssl genrsa -out CA.key 2048 +} + + +genCACert() { + openssl req -key CA.key -new -out CA.csr -subj "/C=US/ST=San Francisco/L=California/O=automotivelinux.org/CN=localhost-ca/emailAddress=agl-dev-community@lists.automotivelinux.org" + openssl x509 -signkey CA.key -in CA.csr -req -days 3650 -out CA.pem +} + +genKey() { + openssl genrsa -out $1.key 2048 +} + +genCert() { + openssl req -new -key $1.key -out $1.csr -passin pass:"temp" -subj "/C=US/ST=San Francisco/L=California/O=automotivelinux.org/CN=$1/emailAddress=agl-dev-community@lists.automotivelinux.org" + openssl x509 -req -in $1.csr -extfile <(printf "subjectAltName=DNS:$1,DNS:localhost,IP:127.0.0.1") -CA CA.pem -CAkey CA.key -CAcreateserial -days 1460 -out $1.pem + openssl verify -CAfile CA.pem $1.pem +} + +set -e +# Check if the CA is available, else make CA certificates +if [ -f "CA.key" ]; then + echo "Existing CA.key will be used" +else + echo "No CA.key found, will generate new key" + genCAKey + rm -f CA.pem + echo "" +fi + +# Check if the CA.pem is available, else generate a new CA.pem +if [ -f "CA.pem" ]; then + echo "CA.pem will not be regenerated" +else + echo "No CA.pem found, will generate new CA.pem" + genCACert + echo "" +fi + + +for i in Server Client; +do + if [ -f $i.key ]; then + echo "Existing $i.key will be used" + else + echo "No $i.key found, will generate new key" + genKey $i + fi + echo "" + echo "Generating $i.pem" + genCert $i + echo "" +done + diff --git a/recipes-connectivity/kuksa-databroker/files/jwt.key.pub b/recipes-connectivity/kuksa-databroker/files/jwt.key.pub new file mode 100644 index 00000000..d9f78534 --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/jwt.key.pub @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6ScE9EKXEWVyYhzfhfvg ++LC8NseiuEjfrdFx3HKkb31bRw/SeS0Rye0KDP7uzffwreKf6wWYGxVUPYmyKC7j +Pji5MpDBGM9r3pIZSvPUFdpTE5TiRHFBxWbqPSYt954BTLq4rMu/W+oq5Pdfnugb +voYpLf0dclBl1g9KyszkDnItz3TYbWhGMbsUSfyeSPzH0IADzLoifxbc5mgiR73N +CA/4yNSpfLoqWgQ2vdTM1182sMSmxfqSgMzIMUX/tiaXGdkoKITF1sULlLyWfTo9 +79XRZ0hmUwvfzr3OjMZNoClpYSVbKY+vtxHyux9KOOtv9lPMsgYIaPXvisrsneDZ +fCS0afOfjgR96uHIe2UPSGAXru3yGziqEfpRZoxsgXaOe905ordLD5bSX14xkN7N +Cz7rxDLlxPQyxp4Vhog7p/QeUyydBpZjq2bAE5GAJtiu+XGvG8RypzJFKFQwMNsw +g1BoZVD0mb0MtU8KQmHcZIfY0FVer/CR0mUjfl1rHbtoJB+RY03lQvYNAD04ibAG +NI1RhlTziu35Xo6NDEgs9hVs9k3WrtF+ZUxhivWmP2VXhWruRakVkC1NzKGh54e5 +/KlluFbBNpWgvWZqzWo9Jr7/fzHtR0Q0IZwkxh+Vd/bUZya1uLKqP+sTcc+aTHbn +AEiqOjPq0D6X45wCzIwjILUCAwEAAQ== +-----END PUBLIC KEY----- diff --git a/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.env b/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.env new file mode 100644 index 00000000..4f918ced --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.env @@ -0,0 +1 @@ +EXTRA_ARGS="--vss /usr/share/vss/vss.json --tls-cert /etc/kuksa-val/Server.pem --tls-private-key /etc/kuksa-val/Server.key --jwt-public-key /etc/kuksa-val/jwt.key.pub --address=0.0.0.0" diff --git a/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.service b/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.service new file mode 100644 index 00000000..95ee3fd1 --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/files/kuksa-databroker.service @@ -0,0 +1,11 @@ +[Unit] +Description=Eclipse KUKSA.val databroker +After=network.target + +[Service] +EnvironmentFile=-/etc/default/kuksa-databroker +ExecStart=/usr/bin/databroker $EXTRA_ARGS +Restart=on-abort + +[Install] +WantedBy=multi-user.target diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc b/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc new file mode 100644 index 00000000..47a6625e --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc @@ -0,0 +1,1032 @@ +# Autogenerated with 'bitbake -c update_crates kuksa-databroker' + +# from Cargo.lock +SRC_URI += " \ + crate://crates.io/addr2line/0.24.2 \ + crate://crates.io/adler2/2.0.0 \ + crate://crates.io/ahash/0.8.11 \ + crate://crates.io/aho-corasick/1.1.3 \ + crate://crates.io/allocator-api2/0.2.20 \ + crate://crates.io/android-tzdata/0.1.1 \ + crate://crates.io/android_system_properties/0.1.5 \ + crate://crates.io/ansi_term/0.12.1 \ + crate://crates.io/anstream/0.6.18 \ + crate://crates.io/anstyle/1.0.10 \ + crate://crates.io/anstyle-parse/0.2.6 \ + crate://crates.io/anstyle-query/1.1.2 \ + crate://crates.io/anstyle-wincon/3.0.6 \ + crate://crates.io/anyhow/1.0.93 \ + crate://crates.io/arc-swap/1.7.1 \ + crate://crates.io/arrayref/0.3.9 \ + crate://crates.io/arrayvec/0.5.2 \ + crate://crates.io/async-stream/0.3.6 \ + crate://crates.io/async-stream-impl/0.3.6 \ + crate://crates.io/async-trait/0.1.83 \ + crate://crates.io/autocfg/1.4.0 \ + crate://crates.io/autotools/0.2.7 \ + crate://crates.io/axum/0.6.20 \ + crate://crates.io/axum-core/0.3.4 \ + crate://crates.io/backtrace/0.3.74 \ + crate://crates.io/base64/0.13.1 \ + crate://crates.io/base64/0.21.7 \ + crate://crates.io/base64/0.22.1 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/bitflags/2.6.0 \ + crate://crates.io/blake2b_simd/0.5.11 \ + crate://crates.io/block-buffer/0.10.4 \ + crate://crates.io/bstr/1.11.0 \ + crate://crates.io/bumpalo/3.16.0 \ + crate://crates.io/bytecount/0.6.8 \ + crate://crates.io/byteorder/1.5.0 \ + crate://crates.io/bytes/1.8.0 \ + crate://crates.io/camino/1.1.9 \ + crate://crates.io/cargo-platform/0.1.8 \ + crate://crates.io/cargo_metadata/0.18.1 \ + crate://crates.io/cc/1.2.1 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/chrono/0.4.38 \ + crate://crates.io/clap/4.5.21 \ + crate://crates.io/clap_builder/4.5.21 \ + crate://crates.io/clap_derive/4.5.18 \ + crate://crates.io/clap_lex/0.7.3 \ + crate://crates.io/clru/0.6.2 \ + crate://crates.io/colorchoice/1.0.3 \ + crate://crates.io/console/0.15.8 \ + crate://crates.io/constant_time_eq/0.1.5 \ + crate://crates.io/core-foundation-sys/0.8.7 \ + crate://crates.io/cpufeatures/0.2.16 \ + crate://crates.io/crc32fast/1.4.2 \ + crate://crates.io/crossbeam-deque/0.8.5 \ + crate://crates.io/crossbeam-epoch/0.9.18 \ + crate://crates.io/crossbeam-utils/0.8.20 \ + crate://crates.io/crypto-common/0.1.6 \ + crate://crates.io/cucumber/0.20.2 \ + crate://crates.io/cucumber-codegen/0.20.2 \ + crate://crates.io/cucumber-expressions/0.3.0 \ + crate://crates.io/data-encoding/2.6.0 \ + crate://crates.io/deranged/0.3.11 \ + crate://crates.io/derive_more/0.99.18 \ + crate://crates.io/digest/0.10.7 \ + crate://crates.io/dirs/1.0.5 \ + crate://crates.io/dirs/4.0.0 \ + crate://crates.io/dirs-sys/0.3.7 \ + crate://crates.io/displaydoc/0.2.5 \ + crate://crates.io/drain_filter_polyfill/0.1.3 \ + crate://crates.io/dunce/1.0.5 \ + crate://crates.io/either/1.13.0 \ + crate://crates.io/encode_unicode/0.3.6 \ + crate://crates.io/equivalent/1.0.1 \ + crate://crates.io/errno/0.3.9 \ + crate://crates.io/faster-hex/0.9.0 \ + crate://crates.io/fastrand/2.2.0 \ + crate://crates.io/filetime/0.2.25 \ + crate://crates.io/fixedbitset/0.4.2 \ + crate://crates.io/flate2/1.0.35 \ + crate://crates.io/fnv/1.0.7 \ + crate://crates.io/form_urlencoded/1.2.1 \ + crate://crates.io/futures/0.3.31 \ + crate://crates.io/futures-channel/0.3.31 \ + crate://crates.io/futures-core/0.3.31 \ + crate://crates.io/futures-executor/0.3.31 \ + crate://crates.io/futures-io/0.3.31 \ + crate://crates.io/futures-macro/0.3.31 \ + crate://crates.io/futures-sink/0.3.31 \ + crate://crates.io/futures-task/0.3.31 \ + crate://crates.io/futures-util/0.3.31 \ + crate://crates.io/generic-array/0.14.7 \ + crate://crates.io/getrandom/0.1.16 \ + crate://crates.io/getrandom/0.2.15 \ + crate://crates.io/gherkin/0.14.0 \ + crate://crates.io/gimli/0.31.1 \ + crate://crates.io/gix/0.63.0 \ + crate://crates.io/gix-actor/0.31.5 \ + crate://crates.io/gix-bitmap/0.2.13 \ + crate://crates.io/gix-chunk/0.4.10 \ + crate://crates.io/gix-commitgraph/0.24.3 \ + crate://crates.io/gix-config/0.37.0 \ + crate://crates.io/gix-config-value/0.14.10 \ + crate://crates.io/gix-date/0.8.7 \ + crate://crates.io/gix-diff/0.44.1 \ + crate://crates.io/gix-discover/0.32.0 \ + crate://crates.io/gix-features/0.38.2 \ + crate://crates.io/gix-fs/0.11.3 \ + crate://crates.io/gix-glob/0.16.5 \ + crate://crates.io/gix-hash/0.14.2 \ + crate://crates.io/gix-hashtable/0.5.2 \ + crate://crates.io/gix-index/0.33.1 \ + crate://crates.io/gix-lock/14.0.0 \ + crate://crates.io/gix-macros/0.1.5 \ + crate://crates.io/gix-object/0.42.3 \ + crate://crates.io/gix-odb/0.61.1 \ + crate://crates.io/gix-pack/0.51.1 \ + crate://crates.io/gix-path/0.10.13 \ + crate://crates.io/gix-quote/0.4.14 \ + crate://crates.io/gix-ref/0.44.1 \ + crate://crates.io/gix-refspec/0.23.1 \ + crate://crates.io/gix-revision/0.27.2 \ + crate://crates.io/gix-revwalk/0.13.2 \ + crate://crates.io/gix-sec/0.10.10 \ + crate://crates.io/gix-tempfile/14.0.2 \ + crate://crates.io/gix-trace/0.1.11 \ + crate://crates.io/gix-traverse/0.39.2 \ + crate://crates.io/gix-url/0.27.5 \ + crate://crates.io/gix-utils/0.1.13 \ + crate://crates.io/gix-validate/0.8.5 \ + crate://crates.io/glob-match/0.2.1 \ + crate://crates.io/globset/0.4.15 \ + crate://crates.io/globwalk/0.8.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.2 \ + crate://crates.io/heck/0.4.1 \ + crate://crates.io/heck/0.5.0 \ + crate://crates.io/hermit-abi/0.3.9 \ + crate://crates.io/home/0.5.9 \ + crate://crates.io/http/0.2.12 \ + crate://crates.io/http-body/0.4.6 \ + 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/0.14.31 \ + crate://crates.io/hyper-timeout/0.4.1 \ + crate://crates.io/iana-time-zone/0.1.61 \ + crate://crates.io/iana-time-zone-haiku/0.1.2 \ + crate://crates.io/icu_collections/1.5.0 \ + crate://crates.io/icu_locid/1.5.0 \ + crate://crates.io/icu_locid_transform/1.5.0 \ + crate://crates.io/icu_locid_transform_data/1.5.0 \ + crate://crates.io/icu_normalizer/1.5.0 \ + crate://crates.io/icu_normalizer_data/1.5.0 \ + crate://crates.io/icu_properties/1.5.1 \ + crate://crates.io/icu_properties_data/1.5.0 \ + crate://crates.io/icu_provider/1.5.0 \ + crate://crates.io/icu_provider_macros/1.5.0 \ + crate://crates.io/idna/1.0.3 \ + crate://crates.io/idna_adapter/1.2.0 \ + crate://crates.io/ignore/0.4.23 \ + crate://crates.io/indexmap/1.9.3 \ + crate://crates.io/indexmap/2.6.0 \ + crate://crates.io/inflections/1.1.1 \ + crate://crates.io/inventory/0.3.15 \ + crate://crates.io/is_terminal_polyfill/1.70.1 \ + crate://crates.io/itertools/0.12.1 \ + crate://crates.io/itoa/1.0.13 \ + crate://crates.io/jemalloc-sys/0.5.4+5.3.0-patched \ + crate://crates.io/jemallocator/0.5.4 \ + crate://crates.io/js-sys/0.3.72 \ + crate://crates.io/jsonwebtoken/9.3.0 \ + crate://crates.io/lazy-regex/3.3.0 \ + crate://crates.io/lazy-regex-proc_macros/3.3.0 \ + crate://crates.io/lazy_static/1.5.0 \ + crate://crates.io/libc/0.2.164 \ + crate://crates.io/libredox/0.1.3 \ + crate://crates.io/linefeed/0.6.0 \ + crate://crates.io/linked-hash-map/0.5.6 \ + crate://crates.io/linux-raw-sys/0.4.14 \ + crate://crates.io/litemap/0.7.4 \ + crate://crates.io/lock_api/0.4.12 \ + crate://crates.io/log/0.4.22 \ + crate://crates.io/matchers/0.1.0 \ + crate://crates.io/matchit/0.7.3 \ + crate://crates.io/memchr/2.7.4 \ + crate://crates.io/memmap2/0.9.5 \ + 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/mortal/0.2.4 \ + crate://crates.io/multimap/0.10.0 \ + crate://crates.io/nix/0.26.4 \ + crate://crates.io/nom/7.1.3 \ + crate://crates.io/nom_locate/4.2.0 \ + crate://crates.io/nu-ansi-term/0.46.0 \ + 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/num_threads/0.1.7 \ + crate://crates.io/object/0.36.5 \ + crate://crates.io/once_cell/1.20.2 \ + crate://crates.io/overload/0.1.1 \ + crate://crates.io/parking_lot/0.12.3 \ + crate://crates.io/parking_lot_core/0.9.10 \ + crate://crates.io/peg/0.6.3 \ + crate://crates.io/peg-macros/0.6.3 \ + crate://crates.io/peg-runtime/0.6.3 \ + crate://crates.io/pem/3.0.4 \ + crate://crates.io/percent-encoding/2.3.1 \ + crate://crates.io/petgraph/0.6.5 \ + crate://crates.io/phf/0.11.2 \ + crate://crates.io/phf_codegen/0.11.2 \ + crate://crates.io/phf_generator/0.11.2 \ + crate://crates.io/phf_shared/0.11.2 \ + crate://crates.io/pin-project/1.1.7 \ + crate://crates.io/pin-project-internal/1.1.7 \ + crate://crates.io/pin-project-lite/0.2.15 \ + crate://crates.io/pin-utils/0.1.0 \ + crate://crates.io/powerfmt/0.2.0 \ + crate://crates.io/ppv-lite86/0.2.20 \ + crate://crates.io/prettyplease/0.2.25 \ + crate://crates.io/proc-macro2/1.0.92 \ + crate://crates.io/prodash/28.0.0 \ + crate://crates.io/prost/0.12.6 \ + 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/protobuf-src/1.1.0+21.5 \ + 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/redox_syscall/0.1.57 \ + crate://crates.io/redox_syscall/0.5.7 \ + crate://crates.io/redox_users/0.3.5 \ + crate://crates.io/redox_users/0.4.6 \ + crate://crates.io/regex/1.11.1 \ + crate://crates.io/regex-automata/0.1.10 \ + crate://crates.io/regex-automata/0.4.9 \ + crate://crates.io/regex-syntax/0.6.29 \ + crate://crates.io/regex-syntax/0.7.5 \ + crate://crates.io/regex-syntax/0.8.5 \ + crate://crates.io/ring/0.17.8 \ + crate://crates.io/rust-argon2/0.8.3 \ + crate://crates.io/rustc-demangle/0.1.24 \ + crate://crates.io/rustix/0.38.41 \ + crate://crates.io/rustls/0.22.4 \ + crate://crates.io/rustls-pemfile/2.2.0 \ + crate://crates.io/rustls-pki-types/1.10.0 \ + crate://crates.io/rustls-webpki/0.102.8 \ + crate://crates.io/rustversion/1.0.18 \ + crate://crates.io/ryu/1.0.18 \ + crate://crates.io/same-file/1.0.6 \ + crate://crates.io/scopeguard/1.2.0 \ + crate://crates.io/sd-notify/0.4.3 \ + crate://crates.io/sealed/0.5.0 \ + crate://crates.io/semver/1.0.23 \ + crate://crates.io/serde/1.0.215 \ + crate://crates.io/serde_derive/1.0.215 \ + crate://crates.io/serde_json/1.0.133 \ + crate://crates.io/serde_path_to_error/0.1.16 \ + crate://crates.io/serde_urlencoded/0.7.1 \ + crate://crates.io/sha1/0.10.6 \ + crate://crates.io/sha1_smol/1.0.1 \ + crate://crates.io/sharded-slab/0.1.7 \ + crate://crates.io/shlex/1.3.0 \ + crate://crates.io/signal-hook/0.3.17 \ + crate://crates.io/signal-hook-registry/1.4.2 \ + crate://crates.io/simple_asn1/0.6.2 \ + crate://crates.io/siphasher/0.3.11 \ + crate://crates.io/slab/0.4.9 \ + crate://crates.io/smallstr/0.2.0 \ + crate://crates.io/smallvec/1.13.2 \ + crate://crates.io/smart-default/0.7.1 \ + crate://crates.io/smawk/0.3.2 \ + crate://crates.io/socket2/0.5.7 \ + crate://crates.io/spin/0.9.8 \ + crate://crates.io/sqlparser/0.16.0 \ + crate://crates.io/stable_deref_trait/1.2.0 \ + crate://crates.io/strsim/0.11.1 \ + crate://crates.io/subtle/2.6.1 \ + crate://crates.io/syn/2.0.89 \ + crate://crates.io/sync_wrapper/0.1.2 \ + crate://crates.io/synstructure/0.13.1 \ + crate://crates.io/synthez/0.3.1 \ + crate://crates.io/synthez-codegen/0.3.1 \ + crate://crates.io/synthez-core/0.3.1 \ + crate://crates.io/tempfile/3.14.0 \ + crate://crates.io/terminal_size/0.4.0 \ + crate://crates.io/terminfo/0.8.0 \ + crate://crates.io/textwrap/0.16.1 \ + crate://crates.io/thiserror/1.0.69 \ + crate://crates.io/thiserror/2.0.3 \ + crate://crates.io/thiserror-impl/1.0.69 \ + crate://crates.io/thiserror-impl/2.0.3 \ + crate://crates.io/thread_local/1.1.8 \ + crate://crates.io/time/0.3.36 \ + crate://crates.io/time-core/0.1.2 \ + crate://crates.io/time-macros/0.2.18 \ + crate://crates.io/tinystr/0.7.6 \ + crate://crates.io/tinyvec/1.8.0 \ + crate://crates.io/tinyvec_macros/0.1.1 \ + crate://crates.io/tokio/1.41.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-tungstenite/0.20.1 \ + crate://crates.io/tokio-util/0.7.12 \ + crate://crates.io/tonic/0.11.0 \ + crate://crates.io/tonic-build/0.11.0 \ + crate://crates.io/tonic-mock/0.3.0 \ + crate://crates.io/tonic-reflection/0.11.0 \ + crate://crates.io/tower/0.4.13 \ + crate://crates.io/tower-layer/0.3.3 \ + crate://crates.io/tower-service/0.3.3 \ + crate://crates.io/tracing/0.1.40 \ + crate://crates.io/tracing-attributes/0.1.27 \ + crate://crates.io/tracing-core/0.1.32 \ + crate://crates.io/tracing-subscriber/0.3.18 \ + crate://crates.io/try-lock/0.2.5 \ + crate://crates.io/tungstenite/0.20.1 \ + crate://crates.io/typed-builder/0.15.2 \ + crate://crates.io/typed-builder-macro/0.15.2 \ + crate://crates.io/typenum/1.17.0 \ + crate://crates.io/unicode-bom/2.0.3 \ + crate://crates.io/unicode-ident/1.0.14 \ + crate://crates.io/unicode-linebreak/0.1.5 \ + crate://crates.io/unicode-normalization/0.1.24 \ + crate://crates.io/unicode-width/0.1.14 \ + crate://crates.io/untrusted/0.9.0 \ + crate://crates.io/url/2.5.4 \ + crate://crates.io/utf-8/0.7.6 \ + crate://crates.io/utf16_iter/1.0.5 \ + crate://crates.io/utf8_iter/1.0.4 \ + crate://crates.io/utf8parse/0.2.2 \ + crate://crates.io/uuid/1.11.0 \ + crate://crates.io/vergen/8.3.2 \ + crate://crates.io/version_check/0.9.5 \ + crate://crates.io/walkdir/2.5.0 \ + crate://crates.io/want/0.3.1 \ + crate://crates.io/wasi/0.9.0+wasi-snapshot-preview1 \ + crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/wasm-bindgen/0.2.95 \ + crate://crates.io/wasm-bindgen-backend/0.2.95 \ + crate://crates.io/wasm-bindgen-macro/0.2.95 \ + crate://crates.io/wasm-bindgen-macro-support/0.2.95 \ + crate://crates.io/wasm-bindgen-shared/0.2.95 \ + crate://crates.io/winapi/0.3.9 \ + 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/windows-core/0.52.0 \ + crate://crates.io/windows-sys/0.52.0 \ + crate://crates.io/windows-sys/0.59.0 \ + crate://crates.io/windows-targets/0.52.6 \ + crate://crates.io/windows_aarch64_gnullvm/0.52.6 \ + crate://crates.io/windows_aarch64_msvc/0.52.6 \ + 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.52.6 \ + crate://crates.io/windows_x86_64_gnu/0.52.6 \ + crate://crates.io/windows_x86_64_gnullvm/0.52.6 \ + crate://crates.io/windows_x86_64_msvc/0.52.6 \ + crate://crates.io/winnow/0.6.20 \ + crate://crates.io/write16/1.0.0 \ + crate://crates.io/writeable/0.5.5 \ + crate://crates.io/yoke/0.7.5 \ + crate://crates.io/yoke-derive/0.7.5 \ + crate://crates.io/zerocopy/0.7.35 \ + crate://crates.io/zerocopy-derive/0.7.35 \ + crate://crates.io/zerofrom/0.1.5 \ + crate://crates.io/zerofrom-derive/0.1.5 \ + crate://crates.io/zeroize/1.8.1 \ + crate://crates.io/zerovec/0.10.4 \ + crate://crates.io/zerovec-derive/0.10.3 \ +" + +SRC_URI[addr2line-0.24.2.sha256sum] = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +SRC_URI[ahash-0.8.11.sha256sum] = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +SRC_URI[allocator-api2-0.2.20.sha256sum] = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" +SRC_URI[android-tzdata-0.1.1.sha256sum] = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +SRC_URI[anstream-0.6.18.sha256sum] = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +SRC_URI[anstyle-1.0.10.sha256sum] = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +SRC_URI[anstyle-parse-0.2.6.sha256sum] = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +SRC_URI[anstyle-query-1.1.2.sha256sum] = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +SRC_URI[anstyle-wincon-3.0.6.sha256sum] = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +SRC_URI[anyhow-1.0.93.sha256sum] = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +SRC_URI[arc-swap-1.7.1.sha256sum] = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +SRC_URI[arrayref-0.3.9.sha256sum] = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +SRC_URI[arrayvec-0.5.2.sha256sum] = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +SRC_URI[async-stream-0.3.6.sha256sum] = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +SRC_URI[async-stream-impl-0.3.6.sha256sum] = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +SRC_URI[async-trait-0.1.83.sha256sum] = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +SRC_URI[autotools-0.2.7.sha256sum] = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +SRC_URI[backtrace-0.3.74.sha256sum] = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +SRC_URI[blake2b_simd-0.5.11.sha256sum] = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +SRC_URI[bstr-1.11.0.sha256sum] = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +SRC_URI[bumpalo-3.16.0.sha256sum] = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +SRC_URI[bytecount-0.6.8.sha256sum] = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +SRC_URI[bytes-1.8.0.sha256sum] = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +SRC_URI[camino-1.1.9.sha256sum] = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +SRC_URI[cargo-platform-0.1.8.sha256sum] = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +SRC_URI[cargo_metadata-0.18.1.sha256sum] = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +SRC_URI[cc-1.2.1.sha256sum] = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[chrono-0.4.38.sha256sum] = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +SRC_URI[clap-4.5.21.sha256sum] = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +SRC_URI[clap_builder-4.5.21.sha256sum] = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +SRC_URI[clap_derive-4.5.18.sha256sum] = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +SRC_URI[clap_lex-0.7.3.sha256sum] = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +SRC_URI[clru-0.6.2.sha256sum] = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" +SRC_URI[colorchoice-1.0.3.sha256sum] = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +SRC_URI[console-0.15.8.sha256sum] = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +SRC_URI[constant_time_eq-0.1.5.sha256sum] = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +SRC_URI[cpufeatures-0.2.16.sha256sum] = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +SRC_URI[crc32fast-1.4.2.sha256sum] = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +SRC_URI[cucumber-0.20.2.sha256sum] = "8e5063d8cf24f4998ad01cac265da468a15ca682a8f4f826d50e661964e8d9b8" +SRC_URI[cucumber-codegen-0.20.2.sha256sum] = "01091e28d1f566c8b31b67948399d2efd6c0a8f6228a9785519ed7b73f7f0aef" +SRC_URI[cucumber-expressions-0.3.0.sha256sum] = "d794fed319eea24246fb5f57632f7ae38d61195817b7eb659455aa5bdd7c1810" +SRC_URI[data-encoding-2.6.0.sha256sum] = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +SRC_URI[derive_more-0.99.18.sha256sum] = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +SRC_URI[dirs-1.0.5.sha256sum] = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +SRC_URI[dirs-4.0.0.sha256sum] = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +SRC_URI[dirs-sys-0.3.7.sha256sum] = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +SRC_URI[drain_filter_polyfill-0.1.3.sha256sum] = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" +SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +SRC_URI[faster-hex-0.9.0.sha256sum] = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" +SRC_URI[fastrand-2.2.0.sha256sum] = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +SRC_URI[filetime-0.2.25.sha256sum] = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +SRC_URI[flate2-1.0.35.sha256sum] = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +SRC_URI[futures-0.3.31.sha256sum] = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +SRC_URI[futures-executor-0.3.31.sha256sum] = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +SRC_URI[futures-io-0.3.31.sha256sum] = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +SRC_URI[futures-macro-0.3.31.sha256sum] = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +SRC_URI[getrandom-0.1.16.sha256sum] = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +SRC_URI[gherkin-0.14.0.sha256sum] = "20b79820c0df536d1f3a089a2fa958f61cb96ce9e0f3f8f507f5a31179567755" +SRC_URI[gimli-0.31.1.sha256sum] = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +SRC_URI[gix-0.63.0.sha256sum] = "984c5018adfa7a4536ade67990b3ebc6e11ab57b3d6cd9968de0947ca99b4b06" +SRC_URI[gix-actor-0.31.5.sha256sum] = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2" +SRC_URI[gix-bitmap-0.2.13.sha256sum] = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53" +SRC_URI[gix-chunk-0.4.10.sha256sum] = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7" +SRC_URI[gix-commitgraph-0.24.3.sha256sum] = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78" +SRC_URI[gix-config-0.37.0.sha256sum] = "53fafe42957e11d98e354a66b6bd70aeea00faf2f62dd11164188224a507c840" +SRC_URI[gix-config-value-0.14.10.sha256sum] = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" +SRC_URI[gix-date-0.8.7.sha256sum] = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0" +SRC_URI[gix-diff-0.44.1.sha256sum] = "1996d5c8a305b59709467d80617c9fde48d9d75fd1f4179ea970912630886c9d" +SRC_URI[gix-discover-0.32.0.sha256sum] = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf" +SRC_URI[gix-features-0.38.2.sha256sum] = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" +SRC_URI[gix-fs-0.11.3.sha256sum] = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" +SRC_URI[gix-glob-0.16.5.sha256sum] = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" +SRC_URI[gix-hash-0.14.2.sha256sum] = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" +SRC_URI[gix-hashtable-0.5.2.sha256sum] = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242" +SRC_URI[gix-index-0.33.1.sha256sum] = "9a9a44eb55bd84bb48f8a44980e951968ced21e171b22d115d1cdcef82a7d73f" +SRC_URI[gix-lock-14.0.0.sha256sum] = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" +SRC_URI[gix-macros-0.1.5.sha256sum] = "999ce923619f88194171a67fb3e6d613653b8d4d6078b529b15a765da0edcc17" +SRC_URI[gix-object-0.42.3.sha256sum] = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386" +SRC_URI[gix-odb-0.61.1.sha256sum] = "20d384fe541d93d8a3bb7d5d5ef210780d6df4f50c4e684ccba32665a5e3bc9b" +SRC_URI[gix-pack-0.51.1.sha256sum] = "3e0594491fffe55df94ba1c111a6566b7f56b3f8d2e1efc750e77d572f5f5229" +SRC_URI[gix-path-0.10.13.sha256sum] = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" +SRC_URI[gix-quote-0.4.14.sha256sum] = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63" +SRC_URI[gix-ref-0.44.1.sha256sum] = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e" +SRC_URI[gix-refspec-0.23.1.sha256sum] = "6868f8cd2e62555d1f7c78b784bece43ace40dd2a462daf3b588d5416e603f37" +SRC_URI[gix-revision-0.27.2.sha256sum] = "01b13e43c2118c4b0537ddac7d0821ae0dfa90b7b8dbf20c711e153fb749adce" +SRC_URI[gix-revwalk-0.13.2.sha256sum] = "1b030ccaab71af141f537e0225f19b9e74f25fefdba0372246b844491cab43e0" +SRC_URI[gix-sec-0.10.10.sha256sum] = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" +SRC_URI[gix-tempfile-14.0.2.sha256sum] = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +SRC_URI[gix-trace-0.1.11.sha256sum] = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" +SRC_URI[gix-traverse-0.39.2.sha256sum] = "e499a18c511e71cf4a20413b743b9f5bcf64b3d9e81e9c3c6cd399eae55a8840" +SRC_URI[gix-url-0.27.5.sha256sum] = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89" +SRC_URI[gix-utils-0.1.13.sha256sum] = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" +SRC_URI[gix-validate-0.8.5.sha256sum] = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf" +SRC_URI[glob-match-0.2.1.sha256sum] = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d" +SRC_URI[globset-0.4.15.sha256sum] = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +SRC_URI[globwalk-0.8.1.sha256sum] = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" +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.2.sha256sum] = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +SRC_URI[http-0.2.12.sha256sum] = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +SRC_URI[http-body-0.4.6.sha256sum] = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +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-0.14.31.sha256sum] = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +SRC_URI[iana-time-zone-0.1.61.sha256sum] = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +SRC_URI[icu_collections-1.5.0.sha256sum] = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +SRC_URI[icu_locid-1.5.0.sha256sum] = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +SRC_URI[icu_locid_transform-1.5.0.sha256sum] = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +SRC_URI[icu_locid_transform_data-1.5.0.sha256sum] = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +SRC_URI[icu_normalizer-1.5.0.sha256sum] = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +SRC_URI[icu_normalizer_data-1.5.0.sha256sum] = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +SRC_URI[icu_properties-1.5.1.sha256sum] = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +SRC_URI[icu_properties_data-1.5.0.sha256sum] = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +SRC_URI[icu_provider-1.5.0.sha256sum] = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +SRC_URI[icu_provider_macros-1.5.0.sha256sum] = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +SRC_URI[idna-1.0.3.sha256sum] = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +SRC_URI[idna_adapter-1.2.0.sha256sum] = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +SRC_URI[ignore-0.4.23.sha256sum] = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +SRC_URI[inflections-1.1.1.sha256sum] = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" +SRC_URI[inventory-0.3.15.sha256sum] = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +SRC_URI[itoa-1.0.13.sha256sum] = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +SRC_URI[jemalloc-sys-0.5.4+5.3.0-patched.sha256sum] = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" +SRC_URI[jemallocator-0.5.4.sha256sum] = "a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc" +SRC_URI[js-sys-0.3.72.sha256sum] = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +SRC_URI[jsonwebtoken-9.3.0.sha256sum] = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +SRC_URI[lazy-regex-3.3.0.sha256sum] = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +SRC_URI[lazy-regex-proc_macros-3.3.0.sha256sum] = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +SRC_URI[libc-0.2.164.sha256sum] = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" +SRC_URI[libredox-0.1.3.sha256sum] = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +SRC_URI[linefeed-0.6.0.sha256sum] = "28715d08e35c6c074f9ae6b2e6a2420bac75d050c66ecd669d7d5b98e2caa036" +SRC_URI[linked-hash-map-0.5.6.sha256sum] = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +SRC_URI[litemap-0.7.4.sha256sum] = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +SRC_URI[lock_api-0.4.12.sha256sum] = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +SRC_URI[matchit-0.7.3.sha256sum] = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +SRC_URI[memmap2-0.9.5.sha256sum] = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +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[mortal-0.2.4.sha256sum] = "2c624fa1b7aab6bd2aff6e9b18565cc0363b6d45cbcd7465c9ed5e3740ebf097" +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[nom_locate-4.2.0.sha256sum] = "1e3c83c053b0713da60c5b8de47fe8e494fe3ece5267b2f23090a07a053ba8f3" +SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +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[num_threads-0.1.7.sha256sum] = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +SRC_URI[object-0.36.5.sha256sum] = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +SRC_URI[parking_lot-0.12.3.sha256sum] = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +SRC_URI[parking_lot_core-0.9.10.sha256sum] = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +SRC_URI[peg-0.6.3.sha256sum] = "9f76678828272f177ac33b7e2ac2e3e73cc6c1cd1e3e387928aa69562fa51367" +SRC_URI[peg-macros-0.6.3.sha256sum] = "636d60acf97633e48d266d7415a9355d4389cea327a193f87df395d88cd2b14d" +SRC_URI[peg-runtime-0.6.3.sha256sum] = "9555b1514d2d99d78150d3c799d4c357a3e2c2a8062cd108e93a06d9057629c5" +SRC_URI[pem-3.0.4.sha256sum] = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +SRC_URI[petgraph-0.6.5.sha256sum] = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +SRC_URI[phf-0.11.2.sha256sum] = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +SRC_URI[phf_codegen-0.11.2.sha256sum] = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +SRC_URI[phf_generator-0.11.2.sha256sum] = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +SRC_URI[phf_shared-0.11.2.sha256sum] = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +SRC_URI[pin-project-1.1.7.sha256sum] = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +SRC_URI[pin-project-internal-1.1.7.sha256sum] = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +SRC_URI[pin-project-lite-0.2.15.sha256sum] = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +SRC_URI[prettyplease-0.2.25.sha256sum] = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +SRC_URI[prodash-28.0.0.sha256sum] = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" +SRC_URI[prost-0.12.6.sha256sum] = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +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[protobuf-src-1.1.0+21.5.sha256sum] = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +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[redox_syscall-0.1.57.sha256sum] = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +SRC_URI[redox_syscall-0.5.7.sha256sum] = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +SRC_URI[redox_users-0.3.5.sha256sum] = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +SRC_URI[redox_users-0.4.6.sha256sum] = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +SRC_URI[regex-syntax-0.7.5.sha256sum] = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +SRC_URI[ring-0.17.8.sha256sum] = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +SRC_URI[rust-argon2-0.8.3.sha256sum] = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +SRC_URI[rustc-demangle-0.1.24.sha256sum] = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +SRC_URI[rustix-0.38.41.sha256sum] = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +SRC_URI[rustls-0.22.4.sha256sum] = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +SRC_URI[rustls-pemfile-2.2.0.sha256sum] = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +SRC_URI[rustls-pki-types-1.10.0.sha256sum] = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +SRC_URI[rustversion-1.0.18.sha256sum] = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +SRC_URI[ryu-1.0.18.sha256sum] = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +SRC_URI[sd-notify-0.4.3.sha256sum] = "1be20c5f7f393ee700f8b2f28ea35812e4e212f40774b550cd2a93ea91684451" +SRC_URI[sealed-0.5.0.sha256sum] = "f4a8caec23b7800fb97971a1c6ae365b6239aaeddfb934d6265f8505e795699d" +SRC_URI[semver-1.0.23.sha256sum] = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +SRC_URI[serde-1.0.215.sha256sum] = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +SRC_URI[serde_derive-1.0.215.sha256sum] = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +SRC_URI[serde_json-1.0.133.sha256sum] = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +SRC_URI[serde_path_to_error-0.1.16.sha256sum] = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +SRC_URI[serde_urlencoded-0.7.1.sha256sum] = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +SRC_URI[sha1_smol-1.0.1.sha256sum] = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +SRC_URI[signal-hook-0.3.17.sha256sum] = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +SRC_URI[signal-hook-registry-1.4.2.sha256sum] = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +SRC_URI[simple_asn1-0.6.2.sha256sum] = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +SRC_URI[siphasher-0.3.11.sha256sum] = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +SRC_URI[smallstr-0.2.0.sha256sum] = "1e922794d168678729ffc7e07182721a14219c65814e66e91b839a272fe5ae4f" +SRC_URI[smallvec-1.13.2.sha256sum] = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +SRC_URI[smart-default-0.7.1.sha256sum] = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" +SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +SRC_URI[socket2-0.5.7.sha256sum] = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +SRC_URI[sqlparser-0.16.0.sha256sum] = "7e9a527b68048eb95495a1508f6c8395c8defcff5ecdbe8ad4106d08a2ef2a3c" +SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +SRC_URI[syn-2.0.89.sha256sum] = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +SRC_URI[synstructure-0.13.1.sha256sum] = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +SRC_URI[synthez-0.3.1.sha256sum] = "a3d2c2202510a1e186e63e596d9318c91a8cbe85cd1a56a7be0c333e5f59ec8d" +SRC_URI[synthez-codegen-0.3.1.sha256sum] = "f724aa6d44b7162f3158a57bccd871a77b39a4aef737e01bcdff41f4772c7746" +SRC_URI[synthez-core-0.3.1.sha256sum] = "78bfa6ec52465e2425fd43ce5bbbe0f0b623964f7c63feb6b10980e816c654ea" +SRC_URI[tempfile-3.14.0.sha256sum] = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +SRC_URI[terminal_size-0.4.0.sha256sum] = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +SRC_URI[terminfo-0.8.0.sha256sum] = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" +SRC_URI[textwrap-0.16.1.sha256sum] = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +SRC_URI[thiserror-2.0.3.sha256sum] = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +SRC_URI[thiserror-impl-2.0.3.sha256sum] = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +SRC_URI[thread_local-1.1.8.sha256sum] = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +SRC_URI[time-0.3.36.sha256sum] = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +SRC_URI[time-macros-0.2.18.sha256sum] = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +SRC_URI[tinystr-0.7.6.sha256sum] = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +SRC_URI[tinyvec-1.8.0.sha256sum] = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +SRC_URI[tokio-1.41.1.sha256sum] = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +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-tungstenite-0.20.1.sha256sum] = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +SRC_URI[tokio-util-0.7.12.sha256sum] = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +SRC_URI[tonic-0.11.0.sha256sum] = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +SRC_URI[tonic-build-0.11.0.sha256sum] = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +SRC_URI[tonic-mock-0.3.0.sha256sum] = "ea9163cf065e21bf30e5ad1789bf334f5ae67e4a25f0e8200a7e375466e755ea" +SRC_URI[tonic-reflection-0.11.0.sha256sum] = "548c227bd5c0fae5925812c4ec6c66ffcfced23ea370cb823f4d18f0fc1cb6a7" +SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" +SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +SRC_URI[tracing-subscriber-0.3.18.sha256sum] = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +SRC_URI[tungstenite-0.20.1.sha256sum] = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +SRC_URI[typed-builder-0.15.2.sha256sum] = "7fe83c85a85875e8c4cb9ce4a890f05b23d38cd0d47647db7895d3d2a79566d2" +SRC_URI[typed-builder-macro-0.15.2.sha256sum] = "29a3151c41d0b13e3d011f98adc24434560ef06673a155a6c7f66b9879eecce2" +SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +SRC_URI[unicode-bom-2.0.3.sha256sum] = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" +SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +SRC_URI[unicode-normalization-0.1.24.sha256sum] = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +SRC_URI[url-2.5.4.sha256sum] = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +SRC_URI[utf-8-0.7.6.sha256sum] = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +SRC_URI[utf16_iter-1.0.5.sha256sum] = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" +SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +SRC_URI[uuid-1.11.0.sha256sum] = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +SRC_URI[vergen-8.3.2.sha256sum] = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +SRC_URI[wasi-0.9.0+wasi-snapshot-preview1.sha256sum] = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +SRC_URI[wasm-bindgen-0.2.95.sha256sum] = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +SRC_URI[wasm-bindgen-backend-0.2.95.sha256sum] = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +SRC_URI[wasm-bindgen-macro-0.2.95.sha256sum] = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +SRC_URI[wasm-bindgen-macro-support-0.2.95.sha256sum] = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +SRC_URI[wasm-bindgen-shared-0.2.95.sha256sum] = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +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[windows-core-0.52.0.sha256sum] = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +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.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +SRC_URI[winnow-0.6.20.sha256sum] = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +SRC_URI[write16-1.0.0.sha256sum] = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +SRC_URI[writeable-0.5.5.sha256sum] = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +SRC_URI[yoke-0.7.5.sha256sum] = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +SRC_URI[yoke-derive-0.7.5.sha256sum] = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +SRC_URI[zerofrom-0.1.5.sha256sum] = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +SRC_URI[zerofrom-derive-0.1.5.sha256sum] = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +SRC_URI[zerovec-0.10.4.sha256sum] = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +SRC_URI[zerovec-derive-0.10.3.sha256sum] = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +# from lib/Cargo.lock +SRC_URI += " \ + crate://crates.io/addr2line/0.24.2 \ + crate://crates.io/adler2/2.0.0 \ + crate://crates.io/aho-corasick/1.1.3 \ + crate://crates.io/anyhow/1.0.93 \ + crate://crates.io/async-stream/0.3.6 \ + crate://crates.io/async-stream-impl/0.3.6 \ + crate://crates.io/async-trait/0.1.83 \ + crate://crates.io/autocfg/1.4.0 \ + crate://crates.io/autotools/0.2.7 \ + crate://crates.io/axum/0.6.20 \ + crate://crates.io/axum-core/0.3.4 \ + crate://crates.io/backtrace/0.3.74 \ + crate://crates.io/base64/0.21.7 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/bitflags/2.6.0 \ + crate://crates.io/byteorder/1.5.0 \ + crate://crates.io/bytes/1.8.0 \ + crate://crates.io/cc/1.2.1 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/either/1.13.0 \ + crate://crates.io/equivalent/1.0.1 \ + crate://crates.io/errno/0.3.9 \ + crate://crates.io/fastrand/2.2.0 \ + crate://crates.io/fixedbitset/0.4.2 \ + crate://crates.io/fnv/1.0.7 \ + crate://crates.io/futures-channel/0.3.31 \ + crate://crates.io/futures-core/0.3.31 \ + crate://crates.io/futures-sink/0.3.31 \ + crate://crates.io/futures-task/0.3.31 \ + crate://crates.io/futures-util/0.3.31 \ + crate://crates.io/getrandom/0.2.15 \ + crate://crates.io/gimli/0.31.1 \ + crate://crates.io/h2/0.3.26 \ + crate://crates.io/hashbrown/0.12.3 \ + crate://crates.io/hashbrown/0.15.2 \ + crate://crates.io/heck/0.5.0 \ + crate://crates.io/hermit-abi/0.3.9 \ + crate://crates.io/http/0.2.12 \ + crate://crates.io/http-body/0.4.6 \ + crate://crates.io/httparse/1.9.5 \ + crate://crates.io/httpdate/1.0.3 \ + crate://crates.io/hyper/0.14.31 \ + crate://crates.io/hyper-timeout/0.4.1 \ + crate://crates.io/indexmap/1.9.3 \ + crate://crates.io/indexmap/2.6.0 \ + crate://crates.io/itertools/0.12.1 \ + crate://crates.io/itoa/1.0.13 \ + crate://crates.io/libc/0.2.164 \ + crate://crates.io/linux-raw-sys/0.4.14 \ + crate://crates.io/log/0.4.22 \ + crate://crates.io/matchit/0.7.3 \ + crate://crates.io/memchr/2.7.4 \ + crate://crates.io/mime/0.3.17 \ + 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/object/0.36.5 \ + crate://crates.io/once_cell/1.20.2 \ + crate://crates.io/percent-encoding/2.3.1 \ + crate://crates.io/petgraph/0.6.5 \ + crate://crates.io/pin-project/1.1.7 \ + crate://crates.io/pin-project-internal/1.1.7 \ + crate://crates.io/pin-project-lite/0.2.15 \ + crate://crates.io/pin-utils/0.1.0 \ + crate://crates.io/ppv-lite86/0.2.20 \ + crate://crates.io/prettyplease/0.2.25 \ + crate://crates.io/proc-macro2/1.0.92 \ + crate://crates.io/prost/0.12.6 \ + 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/protobuf-src/1.1.0+21.5 \ + 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/regex/1.11.1 \ + crate://crates.io/regex-automata/0.4.9 \ + crate://crates.io/regex-syntax/0.8.5 \ + crate://crates.io/ring/0.17.8 \ + crate://crates.io/rustc-demangle/0.1.24 \ + crate://crates.io/rustix/0.38.41 \ + crate://crates.io/rustls/0.22.4 \ + crate://crates.io/rustls-pemfile/2.2.0 \ + crate://crates.io/rustls-pki-types/1.10.0 \ + crate://crates.io/rustls-webpki/0.102.8 \ + crate://crates.io/rustversion/1.0.18 \ + crate://crates.io/serde/1.0.215 \ + crate://crates.io/serde_derive/1.0.215 \ + crate://crates.io/shlex/1.3.0 \ + crate://crates.io/slab/0.4.9 \ + crate://crates.io/socket2/0.5.7 \ + crate://crates.io/spin/0.9.8 \ + crate://crates.io/subtle/2.6.1 \ + crate://crates.io/syn/2.0.89 \ + crate://crates.io/sync_wrapper/0.1.2 \ + crate://crates.io/tempfile/3.14.0 \ + crate://crates.io/tokio/1.41.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-util/0.7.12 \ + crate://crates.io/tonic/0.11.0 \ + crate://crates.io/tonic-build/0.11.0 \ + crate://crates.io/tower/0.4.13 \ + crate://crates.io/tower-layer/0.3.3 \ + crate://crates.io/tower-service/0.3.3 \ + crate://crates.io/tracing/0.1.40 \ + crate://crates.io/tracing-attributes/0.1.27 \ + crate://crates.io/tracing-core/0.1.32 \ + crate://crates.io/try-lock/0.2.5 \ + crate://crates.io/unicode-ident/1.0.14 \ + crate://crates.io/untrusted/0.9.0 \ + crate://crates.io/want/0.3.1 \ + crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/windows-sys/0.52.0 \ + crate://crates.io/windows-sys/0.59.0 \ + crate://crates.io/windows-targets/0.52.6 \ + crate://crates.io/windows_aarch64_gnullvm/0.52.6 \ + crate://crates.io/windows_aarch64_msvc/0.52.6 \ + 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.52.6 \ + crate://crates.io/windows_x86_64_gnu/0.52.6 \ + crate://crates.io/windows_x86_64_gnullvm/0.52.6 \ + crate://crates.io/windows_x86_64_msvc/0.52.6 \ + crate://crates.io/zerocopy/0.7.35 \ + crate://crates.io/zerocopy-derive/0.7.35 \ + crate://crates.io/zeroize/1.8.1 \ +" + +SRC_URI[addr2line-0.24.2.sha256sum] = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +SRC_URI[anyhow-1.0.93.sha256sum] = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +SRC_URI[async-stream-0.3.6.sha256sum] = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +SRC_URI[async-stream-impl-0.3.6.sha256sum] = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +SRC_URI[async-trait-0.1.83.sha256sum] = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +SRC_URI[autotools-0.2.7.sha256sum] = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +SRC_URI[backtrace-0.3.74.sha256sum] = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +SRC_URI[bytes-1.8.0.sha256sum] = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +SRC_URI[cc-1.2.1.sha256sum] = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +SRC_URI[fastrand-2.2.0.sha256sum] = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +SRC_URI[gimli-0.31.1.sha256sum] = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +SRC_URI[h2-0.3.26.sha256sum] = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +SRC_URI[hashbrown-0.15.2.sha256sum] = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +SRC_URI[http-0.2.12.sha256sum] = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +SRC_URI[http-body-0.4.6.sha256sum] = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +SRC_URI[httparse-1.9.5.sha256sum] = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +SRC_URI[hyper-0.14.31.sha256sum] = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +SRC_URI[itoa-1.0.13.sha256sum] = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +SRC_URI[libc-0.2.164.sha256sum] = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" +SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +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[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +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[object-0.36.5.sha256sum] = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +SRC_URI[petgraph-0.6.5.sha256sum] = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +SRC_URI[pin-project-1.1.7.sha256sum] = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +SRC_URI[pin-project-internal-1.1.7.sha256sum] = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +SRC_URI[pin-project-lite-0.2.15.sha256sum] = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +SRC_URI[prettyplease-0.2.25.sha256sum] = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +SRC_URI[prost-0.12.6.sha256sum] = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +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[protobuf-src-1.1.0+21.5.sha256sum] = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +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[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +SRC_URI[ring-0.17.8.sha256sum] = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +SRC_URI[rustc-demangle-0.1.24.sha256sum] = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +SRC_URI[rustix-0.38.41.sha256sum] = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +SRC_URI[rustls-0.22.4.sha256sum] = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +SRC_URI[rustls-pemfile-2.2.0.sha256sum] = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +SRC_URI[rustls-pki-types-1.10.0.sha256sum] = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +SRC_URI[rustversion-1.0.18.sha256sum] = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +SRC_URI[serde-1.0.215.sha256sum] = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +SRC_URI[serde_derive-1.0.215.sha256sum] = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +SRC_URI[socket2-0.5.7.sha256sum] = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +SRC_URI[syn-2.0.89.sha256sum] = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +SRC_URI[tempfile-3.14.0.sha256sum] = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +SRC_URI[tokio-1.41.1.sha256sum] = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +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-util-0.7.12.sha256sum] = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +SRC_URI[tonic-0.11.0.sha256sum] = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +SRC_URI[tonic-build-0.11.0.sha256sum] = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" +SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +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.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch b/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch new file mode 100644 index 00000000..48904dd4 --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch @@ -0,0 +1,133 @@ +From 9e5b68749fb8e9fe932b90f92a95aa2d18d83795 Mon Sep 17 00:00:00 2001 +From: Scott Murray +Date: Wed, 4 Dec 2024 09:53:15 -0500 +Subject: [PATCH] Remove protobuf-src usage + +The vendoring of a protoc and libprotobuf build that was added in +commit 890703c9 by using protobuf-src is not really workable with +OpenEmbedded / Yocto Project, and somewhat undesirable for any +distribution package builds when it comes to transparency and +reproducibility. Remove it so that building in OE/YP will work. + +Upstream-Status: Pending + +Signed-off-by: Scott Murray +--- + Cargo.lock | 19 ------------------- + databroker-proto/Cargo.toml | 1 - + databroker-proto/build.rs | 1 - + lib/Cargo.lock | 19 ------------------- + 4 files changed, 40 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index df1ef1a..56837b5 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -180,15 +180,6 @@ version = "1.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +-[[package]] +-name = "autotools" +-version = "0.2.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "axum" + version = "0.6.20" +@@ -664,7 +655,6 @@ version = "0.5.0" + dependencies = [ + "prost", + "prost-types", +- "protobuf-src", + "tonic", + "tonic-build", + ] +@@ -2494,15 +2484,6 @@ dependencies = [ + "prost", + ] + +-[[package]] +-name = "protobuf-src" +-version = "1.1.0+21.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +-dependencies = [ +- "autotools", +-] +- + [[package]] + name = "quote" + version = "1.0.37" +diff --git a/databroker-proto/Cargo.toml b/databroker-proto/Cargo.toml +index 2475412..877c270 100644 +--- a/databroker-proto/Cargo.toml ++++ b/databroker-proto/Cargo.toml +@@ -25,4 +25,3 @@ prost-types = { workspace = true } + + [build-dependencies] + tonic-build = { workspace = true, features = ["transport", "prost"] } +-protobuf-src = "1.1.0" +diff --git a/databroker-proto/build.rs b/databroker-proto/build.rs +index 1a832c9..8a85b9d 100644 +--- a/databroker-proto/build.rs ++++ b/databroker-proto/build.rs +@@ -14,7 +14,6 @@ + use std::{env, path::PathBuf}; + + fn main() -> Result<(), Box> { +- std::env::set_var("PROTOC", protobuf_src::protoc()); + tonic_build::configure() + .compile_well_known_types(false) + .protoc_arg("--experimental_allow_proto3_optional") +diff --git a/lib/Cargo.lock b/lib/Cargo.lock +index 2a147ff..0835e6f 100644 +--- a/lib/Cargo.lock ++++ b/lib/Cargo.lock +@@ -71,15 +71,6 @@ version = "1.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +-[[package]] +-name = "autotools" +-version = "0.2.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +-dependencies = [ +- "cc", +-] +- + [[package]] + name = "axum" + version = "0.6.20" +@@ -191,7 +182,6 @@ version = "0.5.0" + dependencies = [ + "prost", + "prost-types", +- "protobuf-src", + "tonic", + "tonic-build", + ] +@@ -682,15 +672,6 @@ dependencies = [ + "prost", + ] + +-[[package]] +-name = "protobuf-src" +-version = "1.1.0+21.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +-dependencies = [ +- "autotools", +-] +- + [[package]] + name = "quote" + version = "1.0.37" +-- +2.47.0 + diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb new file mode 100644 index 00000000..de985ddc --- /dev/null +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb @@ -0,0 +1,64 @@ +DESCRIPTION = "KUKSA.val databroker, the KUKSA Vehicle Abstraction Layer" + +SUMMARY = "KUKSA.val databroker, the KUKSA Vehicle Abstraction Layer" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +BRANCH = "main" +SRCREV = "30e5c13abc496d0b39aaa6c25acebb088b9902e3" + +SRC_URI = "git://github.com/eclipse-kuksa/kuksa-databroker.git;protocol=https;branch=${BRANCH}" + +SRC_URI += " \ + file://0001-Remove-protobuf-src-usage.patch \ + file://kuksa-databroker.service \ + file://kuksa-databroker.env \ + file://CA.pem \ + file://Client.key \ + file://Client.pem \ + file://Server.key \ + file://Server.pem \ + file://jwt.key.pub \ +" + +S = "${WORKDIR}/git" + +inherit cargo cargo-update-recipe-crates systemd + +DEPENDS = "protobuf-native grpc-native" + +CARGO_BUILD_FLAGS += "--features viss" + +SYSTEMD_SERVICE:${PN} = "kuksa-databroker.service" + +FILES:${PN} += " \ + ${sysconfdir} \ + ${systemd_system_unitdir} \ +" + +require kuksa-databroker-crates.inc + +do_install:append() { + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/kuksa-databroker.env ${D}${sysconfdir}/default/kuksa-databroker + + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/kuksa-databroker.service ${D}${systemd_system_unitdir} + + + install -d ${D}${sysconfdir}/kuksa-val + install -m 0644 ${WORKDIR}/CA.pem ${D}${sysconfdir}/kuksa-val + + install -m 0644 ${WORKDIR}/Server.key ${D}${sysconfdir}/kuksa-val + install -m 0644 ${WORKDIR}/Server.pem ${D}${sysconfdir}/kuksa-val + install -m 0644 ${WORKDIR}/jwt.key.pub ${D}${sysconfdir}/kuksa-val + install -m 0644 ${WORKDIR}/Client.key ${D}${sysconfdir}/kuksa-val + install -m 0644 ${WORKDIR}/Client.pem ${D}${sysconfdir}/kuksa-val +} + +# The upstream Cargo.toml builds optimized and stripped binaries, for +# now disable the QA check as opposed to tweaking the configuration. +INSANE_SKIP:${PN} = "already-stripped" +INSANE_SKIP:${PN}-cli = "already-stripped" + +RDEPENDS:${PN} += "vss" From 29a12ab91019f3e1f608fc70ee9b0611e6d29495 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Jun 2025 15:59:27 +0300 Subject: [PATCH 027/104] [recipes-connectivity] Add kuksa client recipe Signed-off-by: Mykhailo Lohvynenko --- ...a-client-Update-cmd2-completer-usage.patch | 160 ++++++++++++++++++ ...lient-Tweak-grpcio-tools-requirement.patch | 29 ++++ .../kuksa-client/kuksa-client_git.bb | 34 ++++ 3 files changed, 223 insertions(+) create mode 100644 recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch create mode 100644 recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch create mode 100644 recipes-connectivity/kuksa-client/kuksa-client_git.bb diff --git a/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch b/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch new file mode 100644 index 00000000..0d6d397e --- /dev/null +++ b/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch @@ -0,0 +1,160 @@ +From acb2bbff3de6e9f0bafb8b96a339820a9ddfadca Mon Sep 17 00:00:00 2001 +From: Scott Murray +Date: Mon, 27 Nov 2023 15:31:02 -0500 +Subject: [PATCH 1/2] kuksa-client: Update cmd2 completer usage + +Update cmd2 usage to avoid using internal methods and fix breakage +with newer versions of the cmd2 module. + +Upstream-Status: pending + +Signed-off-by: Scott Murray +--- + kuksa-client/kuksa_client/__main__.py | 33 +++++++++++++-------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +diff --git a/kuksa-client/kuksa_client/__main__.py b/kuksa-client/kuksa_client/__main__.py +index 2b29623..7061ec1 100755 +--- a/kuksa-client/kuksa_client/__main__.py ++++ b/kuksa-client/kuksa_client/__main__.py +@@ -36,7 +36,6 @@ from cmd2 import CompletionItem + from cmd2 import with_argparser + from cmd2 import with_category + from cmd2 import constants +-from cmd2.utils import basic_complete + from urllib.parse import urlparse + + from kuksa_client import KuksaClientThread +@@ -151,7 +150,7 @@ class TestClient(Cmd): + self.pathCompletionItems = [] + for sub_id in self.subscribeIds: + self.pathCompletionItems.append(CompletionItem(sub_id)) +- return basic_complete(text, line, begidx, endidx, self.pathCompletionItems) ++ return Cmd.basic_complete(self, text, line, begidx, endidx, self.pathCompletionItems) + + COMM_SETUP_COMMANDS = "Communication Set-up Commands" + VSS_COMMANDS = "Kuksa Interaction Commands (Supported by both KUKSA Databroker and KUKSA Server)" +@@ -167,19 +166,19 @@ class TestClient(Cmd): + + ap_disconnect = argparse.ArgumentParser() + ap_authorize = argparse.ArgumentParser() +- tokenfile_completer_method = functools.partial( ++ tokenfile_completer = functools.partial( + Cmd.path_complete, + path_filter=lambda path: (os.path.isdir(path) or path.endswith(".token")), + ) + ap_authorize.add_argument( + "token_or_tokenfile", + help="JWT(or the file storing the token) for authorizing the client.", +- completer_method=tokenfile_completer_method, ++ completer=tokenfile_completer, + ) + + ap_setValue = argparse.ArgumentParser() + ap_setValue.add_argument( +- "Path", help="Path to be set", completer_method=path_completer ++ "Path", help="Path to be set", completer=path_completer + ) + ap_setValue.add_argument("Value", nargs="+", help="Value to be set") + ap_setValue.add_argument( +@@ -199,7 +198,7 @@ class TestClient(Cmd): + + ap_getValue = argparse.ArgumentParser() + ap_getValue.add_argument( +- "Path", help="Path to be read", completer_method=path_completer ++ "Path", help="Path to be read", completer=path_completer + ) + ap_getValue.add_argument( + "-a", "--attribute", help="Attribute to be get", default="value" +@@ -210,7 +209,7 @@ class TestClient(Cmd): + "Path", + help="Path whose value is to be read", + nargs="+", +- completer_method=path_completer, ++ completer=path_completer, + ) + ap_getValues.add_argument( + "-a", "--attribute", help="Attribute to be get", default="value" +@@ -220,7 +219,7 @@ class TestClient(Cmd): + ap_setTargetValue.add_argument( + "Path", + help="Path whose target value to be set", +- completer_method=path_completer, ++ completer=path_completer, + ) + ap_setTargetValue.add_argument("Value", help="Value to be set") + +@@ -236,7 +235,7 @@ class TestClient(Cmd): + ap_getTargetValue.add_argument( + "Path", + help="Path whose target value is to be read", +- completer_method=path_completer, ++ completer=path_completer, + ) + + ap_getTargetValues = argparse.ArgumentParser() +@@ -244,12 +243,12 @@ class TestClient(Cmd): + "Path", + help="Path whose target value is to be read", + nargs="+", +- completer_method=path_completer, ++ completer=path_completer, + ) + + ap_subscribe = argparse.ArgumentParser() + ap_subscribe.add_argument( +- "Path", help="Path to subscribe to", completer_method=path_completer ++ "Path", help="Path to subscribe to", completer=path_completer + ) + ap_subscribe.add_argument( + "-a", "--attribute", help="Attribute to subscribe to", default="value" +@@ -264,7 +263,7 @@ class TestClient(Cmd): + + ap_subscribeMultiple = argparse.ArgumentParser() + ap_subscribeMultiple.add_argument( +- "Path", help="Path to subscribe to", nargs="+", completer_method=path_completer ++ "Path", help="Path to subscribe to", nargs="+", completer=path_completer + ) + ap_subscribeMultiple.add_argument( + "-a", "--attribute", help="Attribute to subscribe to", default="value" +@@ -280,18 +279,18 @@ class TestClient(Cmd): + ap_unsubscribe.add_argument( + "SubscribeId", + help="Corresponding subscription Id", +- completer_method=subscriptionIdCompleter, ++ completer=subscriptionIdCompleter, + ) + + ap_getMetaData = argparse.ArgumentParser() + ap_getMetaData.add_argument( + "Path", + help="Path whose metadata is to be read", +- completer_method=path_completer, ++ completer=path_completer, + ) + ap_updateMetaData = argparse.ArgumentParser() + ap_updateMetaData.add_argument( +- "Path", help="Path whose MetaData is to update", completer_method=path_completer ++ "Path", help="Path whose MetaData is to update", completer=path_completer + ) + ap_updateMetaData.add_argument( + "Json", +@@ -300,14 +299,14 @@ class TestClient(Cmd): + ) + + ap_updateVSSTree = argparse.ArgumentParser() +- jsonfile_completer_method = functools.partial( ++ jsonfile_completer = functools.partial( + Cmd.path_complete, + path_filter=lambda path: (os.path.isdir(path) or path.endswith(".json")), + ) + ap_updateVSSTree.add_argument( + "Json", + help="Json tree to update VSS", +- completer_method=jsonfile_completer_method, ++ completer=jsonfile_completer, + ) + + # Constructor, request names after protocol to avoid errors +-- +2.44.0 diff --git a/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch b/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch new file mode 100644 index 00000000..84162572 --- /dev/null +++ b/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch @@ -0,0 +1,29 @@ +From 43823a52a9cb25d906542d15dc207f6516579aa3 Mon Sep 17 00:00:00 2001 +From: Scott Murray +Date: Tue, 18 Jun 2024 16:08:13 -0400 +Subject: [PATCH 2/2] Tweak grpcio-tools requirement + +Lower grpcio-tools requirement to 1.62.0 so building on YP scarthgap +is possible. + +Upstream-Status: Pending + +Signed-off-by: Scott Murray +--- + kuksa-client/pyproject.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kuksa-client/pyproject.toml b/kuksa-client/pyproject.toml +index a7afaca..a8d70ff 100644 +--- a/kuksa-client/pyproject.toml ++++ b/kuksa-client/pyproject.toml +@@ -1,6 +1,6 @@ + [build-system] + requires = [ +- "grpcio-tools>=1.63.0", ++ "grpcio-tools>=1.62.0", + "setuptools>=42", + "setuptools-git-versioning", + "wheel", +-- +2.44.0 diff --git a/recipes-connectivity/kuksa-client/kuksa-client_git.bb b/recipes-connectivity/kuksa-client/kuksa-client_git.bb new file mode 100644 index 00000000..0a1ea75f --- /dev/null +++ b/recipes-connectivity/kuksa-client/kuksa-client_git.bb @@ -0,0 +1,34 @@ +DESCRIPTION = "KUKSA.val client" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +BRANCH = "main" +SRCREV = "d72777a6aec6bd9f9a2bdf5ae5d01a9bc2de423a" + +SRC_URI = "gitsm://github.com/eclipse-kuksa/kuksa-python-sdk.git;protocol=https;branch=${BRANCH}" + +SRC_URI += " \ + file://0001-kuksa-client-Update-cmd2-completer-usage.patch;patchdir=.. \ + file://0002-kuksa-client-Tweak-grpcio-tools-requirement.patch;patchdir=.. \ +" + +S = "${WORKDIR}/git/kuksa-client" + +inherit python_setuptools_build_meta + +DEPENDS = " \ + python3-setuptools-git-versioning-native \ + python3-grpcio-tools-native \ + python3-grpcio \ +" + +RDEPENDS:${PN} += " \ + python3-cmd2 \ + python3-importlib-metadata \ + python3-pkg-resources \ + python3-pygments \ + python3-websockets \ + python3-grpcio \ + python3-grpcio-tools \ + python3-jsonpath-ng \ +" From 207ab05954e8d6b4be74ddaf0bdc2a8099257236 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Jun 2025 16:12:49 +0300 Subject: [PATCH 028/104] [recipes-core] Install kuksa on aos main node Signed-off-by: Mykhailo Lohvynenko --- recipes-core/images/aos-image.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index d11517ad..625a7122 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -104,6 +104,8 @@ IMAGE_INSTALL:append = " \ IMAGE_INSTALL:append:aos-main-node = " \ aos-communicationmanager \ + kuksa-databroker \ + kuksa-client \ " TOOLCHAIN_HOST_TASK:append = " \ From f84baa38a094aca015685bc0509c7f0fbe6727e6 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Tue, 10 Jun 2025 10:10:57 +0300 Subject: [PATCH 029/104] [audit] Filter only avc denied logs Signed-off-by: Mykola Solianko --- recipes-core/images/aos-image.inc | 1 + recipes-security/audit/audit_%.bbappend | 8 ++++++++ recipes-security/audit/files/audit-rules-append.conf | 8 ++++++++ 3 files changed, 17 insertions(+) create mode 100644 recipes-security/audit/audit_%.bbappend create mode 100644 recipes-security/audit/files/audit-rules-append.conf diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 625a7122..55cace19 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -99,6 +99,7 @@ IMAGE_INSTALL:append = " \ packagegroup-selinux-minimal \ packagegroup-selinux-policycoreutils \ selinux-autorelabel \ + auditd \ ', '', d)} \ " diff --git a/recipes-security/audit/audit_%.bbappend b/recipes-security/audit/audit_%.bbappend new file mode 100644 index 00000000..8ff20333 --- /dev/null +++ b/recipes-security/audit/audit_%.bbappend @@ -0,0 +1,8 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI:append = " file://audit-rules-append.conf" + +do_install:append() { + # Append custom audit rules to the end of audit.rules + cat ${WORKDIR}/audit-rules-append.conf >> ${D}${sysconfdir}/audit/audit.rules +} diff --git a/recipes-security/audit/files/audit-rules-append.conf b/recipes-security/audit/files/audit-rules-append.conf new file mode 100644 index 00000000..671fdb0b --- /dev/null +++ b/recipes-security/audit/files/audit-rules-append.conf @@ -0,0 +1,8 @@ +## Never audit any syscall from any user +-a never,task + +## Always audit SELinux denials (AVC is type 1400) +-a always,exclude -F msgtype!=AVC + +## Enable auditing +-e 1 From a890fd3be80e7f7185e45a0fed70c0f0ef44e354 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 23 Jun 2025 16:41:34 +0300 Subject: [PATCH 030/104] Bump v8.2.0 Signed-off-by: Oleksandr Grytsov --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 2 +- recipes-aos/aos-dnsname/aos-dnsname.bb | 2 +- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 2 +- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- recipes-aos/aos-updatemanager/aos-updatemanager_git.bb | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 2b005d44..851434e4 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -6,7 +6,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "main" -SRCREV = "2c694749d00cbcc0db748a4f71ea7ee216a80d9c" +SRCREV = "11a4ef530cf3a0357ffa0d9e45c342c9891b9222" SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" diff --git a/recipes-aos/aos-dnsname/aos-dnsname.bb b/recipes-aos/aos-dnsname/aos-dnsname.bb index e1e4f9b0..c0e0db06 100644 --- a/recipes-aos/aos-dnsname/aos-dnsname.bb +++ b/recipes-aos/aos-dnsname/aos-dnsname.bb @@ -6,7 +6,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "main" -SRCREV = "2b6598aef27f7652c4c26b185dbafa5d1bccaef4" +SRCREV = "2b445820a9b011703cc86bca98f6a419c14c92fb" SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index df3fef46..9c36cd73 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -7,7 +7,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "main" -SRCREV = "85006f422e084e517ae02cfd0395dbad03efcc8a" +SRCREV = "491b0dfb347568ab584c84a6e2c49a0d66d792a8" SRC_URI = "gitsm://github.com/aosedge/aos_core_iam_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index c99e5532..641ebee2 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -3,7 +3,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "9a3190834a2543e38b600c57bac31e7bf7503ff8" +SRCREV = "dc40f007a9ca17292c5e7c9a729cfcabda1b8ec1" SRC_URI = "gitsm://github.com/aosedge/aos_core_mp_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 5e1257c1..5e1fcf65 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -4,7 +4,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "1b657243ed038e1100c8f88da2e88565d76f2fb9" +SRCREV = "b2a692d6a9e1f048866b8b525de31e70794d32fb" SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb b/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb index e7199ee3..d0868404 100644 --- a/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb +++ b/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb @@ -8,7 +8,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "main" -SRCREV = "64ffa05886ee70f2bbc54fd7a831c18d12310c70" +SRCREV = "af4060acc8e074ebbb056ea736813a2efbb236ce" SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" From acf6c37063c3c3a8d0d42b94280f83ec7a2b513b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Mon, 11 Aug 2025 10:51:08 +0300 Subject: [PATCH 031/104] messageproxy: use config variable to set main node hostname for config This patch updates aos messageproxy configuration file by using the AOS_MAIN_NODE_HOSTNAME variable, to make sure that resulting configuration file will contain correct hostname for the main node. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-messageproxy/aos-messageproxy_git.bb | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 522c22d5..c0fbc3a4 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -36,6 +36,30 @@ FILES:${PN} += " \ do_compile[network] = "1" do_configure[network] = "1" +do_fetch[vardeps] += "AOS_MAIN_NODE_HOSTNAME" + +python do_update_config() { + import json + + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_messageproxy.cfg") + + with open(file_name) as f: + data = json.load(f) + + iamConfig = data.get("IAMConfig", {}) + iamConfig["IAMPublicServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8090" + iamConfig["IAMProtectedServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8089" + + cmConfig = data.get("CMConfig", {}) + cmConfig["CMServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8093" + + data["IAMConfig"] = iamConfig + data["CMConfig"] = cmConfig + + with open(file_name, "w") as f: + json.dump(data, f, indent=4) +} + do_install:append() { install -d ${D}${sysconfdir}/aos install -m 0644 ${WORKDIR}/aos_messageproxy.cfg ${D}${sysconfdir}/aos @@ -58,3 +82,5 @@ do_install:append:aos-main-node() { do_install:append() { rm -rf ${D}${includedir} } + +addtask update_config after do_install before do_package From 30a7a20055c362dc2778b2bda74671e30888b1ef Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 12 Aug 2025 15:20:26 +0300 Subject: [PATCH 032/104] messageproxy: update message proxy config This patch updates the message proxy configuration file to set both main and local IAM server URLs. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 7 ++++--- recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index c0fbc3a4..77c93c92 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -36,7 +36,7 @@ FILES:${PN} += " \ do_compile[network] = "1" do_configure[network] = "1" -do_fetch[vardeps] += "AOS_MAIN_NODE_HOSTNAME" +do_fetch[vardeps] += "AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME" python do_update_config() { import json @@ -47,8 +47,9 @@ python do_update_config() { data = json.load(f) iamConfig = data.get("IAMConfig", {}) - iamConfig["IAMPublicServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8090" - iamConfig["IAMProtectedServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8089" + iamConfig["IAMPublicServerURL"] = d.getVar("AOS_NODE_HOSTNAME") + ":8090" + iamConfig["IAMMainPublicServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8090" + iamConfig["IAMMainProtectedServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8089" cmConfig = data.get("CMConfig", {}) cmConfig["CMServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8093" diff --git a/recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg b/recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg index a205e209..2856b4f4 100644 --- a/recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg +++ b/recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg @@ -4,8 +4,9 @@ "WorkingDir": "/var/aos/workdirs/mp", "ImageStoreDir": "/var/aos/workdirs/mp/images", "IAMConfig": { - "IAMPublicServerURL": "main:8090", - "IAMProtectedServerURL": "main:8089", + "IAMPublicServerURL": ":8090", + "IAMMainPublicServerURL": "main:8090", + "IAMMainProtectedServerURL": "main:8089", "CertStorage": "iam", "OpenPort": 1, "SecurePort": 2 From 89c96b885d7f2ea72d557cd9691fafb4311c774a Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:44:59 +0300 Subject: [PATCH 033/104] iam: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-iamanager/aos-iamanager_git.bb | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 8a58bb06..8ea25761 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -4,12 +4,12 @@ FILESEXTRAPATHS:prepend:aos-secondary-node := "${THISDIR}/files/secondary:" DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_iam_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_iamanager.cfg \ @@ -21,8 +21,19 @@ SRC_URI += " \ DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=ON \ + -DWITH_MP=OFF \ + -DWITH_SM=OFF \ +" OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" + +PACKAGECONFIG ??= "openssl" + +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," inherit autotools pkgconfig cmake systemd @@ -99,16 +110,10 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/database/migration" + source_migration_path="/src/iam/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi } -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - addtask update_config after do_install before do_package From cf8634a5800bc4713ed9f98d646b41d4ab2d436d Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:46:26 +0300 Subject: [PATCH 034/104] mp: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-messageproxy/aos-messageproxy_git.bb | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 77c93c92..0503cac5 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_mp_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_messageproxy.cfg \ @@ -21,11 +21,20 @@ inherit autotools pkgconfig cmake systemd DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl" -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" +PACKAGECONFIG ??= "openssl ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" + +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=OFF \ + -DWITH_MP=ON \ + -DWITH_SM=OFF \ +" SYSTEMD_SERVICE:${PN} = "aos-messageproxy.service aos-messageproxy-provisioning.service" @@ -78,10 +87,4 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d/10-aos-cm-service.conf } -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - addtask update_config after do_install before do_package From e0378db54296ba3f88e8853540169087bc887481 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:47:10 +0300 Subject: [PATCH 035/104] sm: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-servicemanager_git.bb | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index c92faf01..4da002f0 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_servicemanager.cfg \ @@ -34,7 +34,19 @@ DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" do_configure[network] = "1" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=OFF \ + -DWITH_MP=OFF \ + -DWITH_SM=ON \ +" +OECMAKE_GENERATOR = "Unix Makefiles" + +PACKAGECONFIG ??= "openssl" + +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" @@ -102,7 +114,7 @@ do_install:append() { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-servicemanager.service ${D}${systemd_system_unitdir} - install -m 0644 ${S}/src/runner/aos-service@.service ${D}${systemd_system_unitdir} + install -m 0644 ${S}/src/sm/runner/aos-service@.service ${D}${systemd_system_unitdir} sed -i 's/@RUNNER@/${AOS_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service install -d ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d @@ -112,7 +124,7 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/${GO_IMPORT}/database/migration" + source_migration_path="/src/sm/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi @@ -129,16 +141,4 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d/10-aos-cm-service.conf } -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - addtask update_config after do_install before do_package From 7c1037515ed0701b5a72ad53d8697c220024f103 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 11 Sep 2025 09:59:07 +0300 Subject: [PATCH 036/104] cm: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager_git.bb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 7234207e..2e934d1b 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -1,14 +1,12 @@ DESCRIPTION = "AOS Communication Manager" -GO_IMPORT = "github.com/aosedge/aos_communicationmanager" - LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_communicationmanager.cfg \ @@ -17,7 +15,9 @@ SRC_URI += " \ file://aos-dirs-service.conf \ " -inherit go goarch systemd +S = "${WORKDIR}/git" + +inherit cmake pkgconfig systemd SYSTEMD_SERVICE:${PN} = "aos-communicationmanager.service" @@ -29,24 +29,28 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "systemd" - -RDEPENDS:${PN} += " \ - aos-rootca \ - nfs-exports \ -" +DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" -RDEPENDS:${PN}-dev += " bash make" -RDEPENDS:${PN}-staticdev += " bash make" +do_configure[network] = "1" -INSANE_SKIP:${PN} = "textrel" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=ON \ + -DWITH_IAM=OFF \ + -DWITH_MP=OFF \ + -DWITH_SM=OFF \ +" +OECMAKE_GENERATOR = "Unix Makefiles" -# embed version -GO_LDFLAGS += '-ldflags="-X main.GitSummary=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' +PACKAGECONFIG ??= "openssl" -# WA to support go install for v 1.18 +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," -GO_LINKSHARED = "" +RDEPENDS:${PN} += " \ + aos-rootca \ + nfs-exports \ +" RRECOMMENDS:${PN} += " \ kernel-module-quota-v1 \ @@ -89,10 +93,6 @@ python do_update_config() { json.dump(data, f, indent=4) } -do_compile:prepend() { - cd ${GOPATH}/src/${GO_IMPORT}/ -} - do_install:append() { install -d ${D}${sysconfdir}/aos install -m 0644 ${WORKDIR}/aos_communicationmanager.cfg ${D}${sysconfdir}/aos @@ -107,7 +107,7 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-communicationmanager.service.d/10-aos-dirs-service.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/${GO_IMPORT}/database/migration" + source_migration_path="/src/cm/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi From 456bfa22aba33456d983b2c5ed255ca7669d6cc0 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Mon, 22 Sep 2025 16:48:28 +0300 Subject: [PATCH 037/104] recipes-connectivity: kuksa-client: update to v0.5.0 Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- ...a-client-Update-cmd2-completer-usage.patch | 2 +- ...lient-Tweak-grpcio-tools-requirement.patch | 11 +++---- ...sion-of-gRPC-subscribe_target_values.patch | 30 +++++++++++++++++++ .../kuksa-client/kuksa-client_git.bb | 7 ++++- 4 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 recipes-connectivity/kuksa-client/kuksa-client/0003-kuksa-client-Fix-AIO-version-of-gRPC-subscribe_target_values.patch diff --git a/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch b/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch index 0d6d397e..752ff72b 100644 --- a/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch +++ b/recipes-connectivity/kuksa-client/kuksa-client/0001-kuksa-client-Update-cmd2-completer-usage.patch @@ -6,7 +6,7 @@ Subject: [PATCH 1/2] kuksa-client: Update cmd2 completer usage Update cmd2 usage to avoid using internal methods and fix breakage with newer versions of the cmd2 module. -Upstream-Status: pending +Upstream-Status: Pending Signed-off-by: Scott Murray --- diff --git a/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch b/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch index 84162572..0b63b60c 100644 --- a/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch +++ b/recipes-connectivity/kuksa-client/kuksa-client/0002-kuksa-client-Tweak-grpcio-tools-requirement.patch @@ -1,6 +1,6 @@ From 43823a52a9cb25d906542d15dc207f6516579aa3 Mon Sep 17 00:00:00 2001 From: Scott Murray -Date: Tue, 18 Jun 2024 16:08:13 -0400 +Date: Thu, 5 Jun 2025 16:03:47 -0400 Subject: [PATCH 2/2] Tweak grpcio-tools requirement Lower grpcio-tools requirement to 1.62.0 so building on YP scarthgap @@ -14,16 +14,17 @@ Signed-off-by: Scott Murray 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kuksa-client/pyproject.toml b/kuksa-client/pyproject.toml -index a7afaca..a8d70ff 100644 +index 46cb1b0..7c8246b 100644 --- a/kuksa-client/pyproject.toml +++ b/kuksa-client/pyproject.toml -@@ -1,6 +1,6 @@ +@@ -1,7 +1,7 @@ [build-system] requires = [ -- "grpcio-tools>=1.63.0", + # Make sure to use the same exact version criteria in setup.cfg and update requirements.txt after changing +- "grpcio-tools==1.68.0", + "grpcio-tools>=1.62.0", "setuptools>=42", "setuptools-git-versioning", "wheel", -- -2.44.0 +2.49.0 diff --git a/recipes-connectivity/kuksa-client/kuksa-client/0003-kuksa-client-Fix-AIO-version-of-gRPC-subscribe_target_values.patch b/recipes-connectivity/kuksa-client/kuksa-client/0003-kuksa-client-Fix-AIO-version-of-gRPC-subscribe_target_values.patch new file mode 100644 index 00000000..738fcea8 --- /dev/null +++ b/recipes-connectivity/kuksa-client/kuksa-client/0003-kuksa-client-Fix-AIO-version-of-gRPC-subscribe_target_values.patch @@ -0,0 +1,30 @@ +From 68fb6dec3e25be3aa0c2b339a3951911e93230ac Mon Sep 17 00:00:00 2001 +From: Scott Murray +Date: Thu, 5 Jun 2025 16:04:44 -0400 +Subject: [PATCH 3/3] Fix AIO version of gRPC subscribe_target_values + +The AIO version of subscribe_target_values was still setting the +try_v2 flag when calling subscribe, which fails since that is +not supported with VAL v2. Update it to match the non-AIO version +and restore working behavior. + +Upstream-Status: Pending +Signed-off-by: Scott Murray +--- + kuksa-client/kuksa_client/grpc/aio.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/kuksa-client/kuksa_client/grpc/aio.py b/kuksa-client/kuksa_client/grpc/aio.py +index 2571b2c..02b9e48 100644 +--- a/kuksa-client/kuksa_client/grpc/aio.py ++++ b/kuksa-client/kuksa_client/grpc/aio.py +@@ -327,7 +327,6 @@ class VSSClient(BaseVSSClient): + SubscribeEntry(path, View.TARGET_VALUE, (Field.ACTUATOR_TARGET,)) + for path in paths + ), +- try_v2=True, + **rpc_kwargs, + ): + yield { +-- +2.49.0 diff --git a/recipes-connectivity/kuksa-client/kuksa-client_git.bb b/recipes-connectivity/kuksa-client/kuksa-client_git.bb index 0a1ea75f..412db9b5 100644 --- a/recipes-connectivity/kuksa-client/kuksa-client_git.bb +++ b/recipes-connectivity/kuksa-client/kuksa-client_git.bb @@ -3,19 +3,24 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "d72777a6aec6bd9f9a2bdf5ae5d01a9bc2de423a" +SRCREV = "cdf8f8215043b56cad3deaacb59322926b70418a" SRC_URI = "gitsm://github.com/eclipse-kuksa/kuksa-python-sdk.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://0001-kuksa-client-Update-cmd2-completer-usage.patch;patchdir=.. \ file://0002-kuksa-client-Tweak-grpcio-tools-requirement.patch;patchdir=.. \ + file://0003-kuksa-client-Fix-AIO-version-of-gRPC-subscribe_target_values.patch;patchdir=.. \ " S = "${WORKDIR}/git/kuksa-client" inherit python_setuptools_build_meta +do_compile:prepend() { + nativepython3 -m proto +} + DEPENDS = " \ python3-setuptools-git-versioning-native \ python3-grpcio-tools-native \ From 9a933186b9d5c2fcb2f770136d769ce425fb900a Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 23 Sep 2025 09:49:06 +0300 Subject: [PATCH 038/104] layers: pylibs: move kuksa-client to the aos pylibs layer This patch moves the kuksa-client package from the main node's rootfs to the aos-pylibs-layer. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb | 1 + recipes-core/images/aos-image.inc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb index 79ffb4b8..5dac3f94 100644 --- a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb +++ b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb @@ -14,6 +14,7 @@ AOS_LAYER_FEATURES += " \ python3-socketio \ python3-threading \ python3-websocket-client \ + kuksa-client \ " AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 55cace19..204e4ade 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -106,7 +106,6 @@ IMAGE_INSTALL:append = " \ IMAGE_INSTALL:append:aos-main-node = " \ aos-communicationmanager \ kuksa-databroker \ - kuksa-client \ " TOOLCHAIN_HOST_TASK:append = " \ From e8e02ae86e4f2b14e3c4b4270c2422fb88fe819e Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 24 Sep 2025 15:10:07 +0300 Subject: [PATCH 039/104] Revert "iam: update to new repo" This reverts commit 89c96b885d7f2ea72d557cd9691fafb4311c774a. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-iamanager/aos-iamanager_git.bb | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 8ea25761..8a58bb06 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -4,12 +4,12 @@ FILESEXTRAPATHS:prepend:aos-secondary-node := "${THISDIR}/files/secondary:" DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_iam_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_iamanager.cfg \ @@ -21,19 +21,8 @@ SRC_URI += " \ DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" -EXTRA_OECMAKE += " \ - -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ - -DWITH_CM=OFF \ - -DWITH_IAM=ON \ - -DWITH_MP=OFF \ - -DWITH_SM=OFF \ -" OECMAKE_GENERATOR = "Unix Makefiles" - -PACKAGECONFIG ??= "openssl" - -PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," -PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" inherit autotools pkgconfig cmake systemd @@ -110,10 +99,16 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/iam/database/migration" + source_migration_path="/src/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi } +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + addtask update_config after do_install before do_package From f7826d813aa9bec4b41ecd364d78771a52bddc05 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 24 Sep 2025 15:10:14 +0300 Subject: [PATCH 040/104] Revert "mp: update to new repo" This reverts commit cf8634a5800bc4713ed9f98d646b41d4ab2d436d. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-messageproxy/aos-messageproxy_git.bb | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 0503cac5..77c93c92 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_mp_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_messageproxy.cfg \ @@ -21,20 +21,11 @@ inherit autotools pkgconfig cmake systemd DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl" -PACKAGECONFIG ??= "openssl ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" -PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," -PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," OECMAKE_GENERATOR = "Unix Makefiles" - -EXTRA_OECMAKE += " \ - -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ - -DWITH_CM=OFF \ - -DWITH_IAM=OFF \ - -DWITH_MP=ON \ - -DWITH_SM=OFF \ -" +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" SYSTEMD_SERVICE:${PN} = "aos-messageproxy.service aos-messageproxy-provisioning.service" @@ -87,4 +78,10 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d/10-aos-cm-service.conf } +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + addtask update_config after do_install before do_package From 6ac8bf1a193f0cc9420ef91282ddfcf425717099 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 24 Sep 2025 15:10:27 +0300 Subject: [PATCH 041/104] Revert "sm: update to new repo" This reverts commit e0378db54296ba3f88e8853540169087bc887481. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-servicemanager_git.bb | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 4da002f0..c92faf01 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_servicemanager.cfg \ @@ -34,19 +34,7 @@ DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" do_configure[network] = "1" -EXTRA_OECMAKE += " \ - -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ - -DWITH_CM=OFF \ - -DWITH_IAM=OFF \ - -DWITH_MP=OFF \ - -DWITH_SM=ON \ -" -OECMAKE_GENERATOR = "Unix Makefiles" - -PACKAGECONFIG ??= "openssl" - -PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," -PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," +EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" @@ -114,7 +102,7 @@ do_install:append() { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-servicemanager.service ${D}${systemd_system_unitdir} - install -m 0644 ${S}/src/sm/runner/aos-service@.service ${D}${systemd_system_unitdir} + install -m 0644 ${S}/src/runner/aos-service@.service ${D}${systemd_system_unitdir} sed -i 's/@RUNNER@/${AOS_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service install -d ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d @@ -124,7 +112,7 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/sm/database/migration" + source_migration_path="/src/${GO_IMPORT}/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi @@ -141,4 +129,16 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d/10-aos-cm-service.conf } +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + +# Do not install headers files +# This is temporary solution and should be removed when switching to new repo approach +do_install:append() { + rm -rf ${D}${includedir} +} + addtask update_config after do_install before do_package From ad3383aa1165603831088540645bda1616c78746 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 24 Sep 2025 15:10:30 +0300 Subject: [PATCH 042/104] Revert "cm: update to new repo" This reverts commit 7c1037515ed0701b5a72ad53d8697c220024f103. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager_git.bb | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 2e934d1b..7234207e 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -1,12 +1,14 @@ DESCRIPTION = "AOS Communication Manager" +GO_IMPORT = "github.com/aosedge/aos_communicationmanager" + LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" +LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" BRANCH = "develop" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" SRC_URI += " \ file://aos_communicationmanager.cfg \ @@ -15,9 +17,7 @@ SRC_URI += " \ file://aos-dirs-service.conf \ " -S = "${WORKDIR}/git" - -inherit cmake pkgconfig systemd +inherit go goarch systemd SYSTEMD_SERVICE:${PN} = "aos-communicationmanager.service" @@ -29,29 +29,25 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" - -do_configure[network] = "1" - -EXTRA_OECMAKE += " \ - -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ - -DWITH_CM=ON \ - -DWITH_IAM=OFF \ - -DWITH_MP=OFF \ - -DWITH_SM=OFF \ -" -OECMAKE_GENERATOR = "Unix Makefiles" - -PACKAGECONFIG ??= "openssl" - -PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," -PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," +DEPENDS = "systemd" RDEPENDS:${PN} += " \ aos-rootca \ nfs-exports \ " +RDEPENDS:${PN}-dev += " bash make" +RDEPENDS:${PN}-staticdev += " bash make" + +INSANE_SKIP:${PN} = "textrel" + +# embed version +GO_LDFLAGS += '-ldflags="-X main.GitSummary=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' + +# WA to support go install for v 1.18 + +GO_LINKSHARED = "" + RRECOMMENDS:${PN} += " \ kernel-module-quota-v1 \ kernel-module-quota-v2 \ @@ -93,6 +89,10 @@ python do_update_config() { json.dump(data, f, indent=4) } +do_compile:prepend() { + cd ${GOPATH}/src/${GO_IMPORT}/ +} + do_install:append() { install -d ${D}${sysconfdir}/aos install -m 0644 ${WORKDIR}/aos_communicationmanager.cfg ${D}${sysconfdir}/aos @@ -107,7 +107,7 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-communicationmanager.service.d/10-aos-dirs-service.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/cm/database/migration" + source_migration_path="/src/${GO_IMPORT}/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi From 8c638b085161898cf8a22601198965810b8ecea3 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 23 Sep 2025 14:07:41 +0300 Subject: [PATCH 043/104] layers: kuksa: move kuksa client to a dedicated layer Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- .../aos-kuksa-client-layer/aos-kuksa-client-layer.bb | 9 +++++++++ recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb diff --git a/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb b/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb new file mode 100644 index 00000000..3e6356c9 --- /dev/null +++ b/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb @@ -0,0 +1,9 @@ +SUMMARY = "kuksa client layer" + +require recipes-aos-layers/aos-base-layer/aos-base-layer.inc + +AOS_LAYER_FEATURES += " \ + kuksa-client \ +" + +AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb index 5dac3f94..79ffb4b8 100644 --- a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb +++ b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb @@ -14,7 +14,6 @@ AOS_LAYER_FEATURES += " \ python3-socketio \ python3-threading \ python3-websocket-client \ - kuksa-client \ " AOS_LAYER_VERSION = "1.0.0" From 66d4c47eb4961fba4264ba011d4e23fce488eb52 Mon Sep 17 00:00:00 2001 From: Artem Mygaiev Date: Tue, 21 Oct 2025 17:21:32 +0200 Subject: [PATCH 044/104] README: fix AosCore naming from Aos in the title and text ditto Signed-off-by: Artem Mygaiev --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c5751715..8846d110 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# Aos meta layer +# AosCore meta layer -This meta layer contains recipes for Aos components such as: +This meta layer contains recipes for AosCore components such as: -* aos-communicationmanager - Aos communication manager; -* aos-iamanager - Aos identity and access manager; -* aos-servicemanager - Aos service manager; -* aos-updatemanager - Aos update manager; -* aos-vis - Aos vehicle information service; -* Aos CNI plugins; -* other tools and utility for AosEdge core part. +* aos-communicationmanager - AosCore communication manager; +* aos-iamanager - AosCore identity and access manager; +* aos-servicemanager - AosCore service manager; +* aos-updatemanager - AosCore update manager; +* aos-vis - AosCore vehicle information service; +* CNI plugins; +* other tools and utility for AosCore operation. ## How to integrate Aos meta layer to custom product From 63ff9068f9722dee8cc8b877a987450703afc0dc Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 4 Feb 2026 13:19:50 +0200 Subject: [PATCH 045/104] Bump v8.2.2 Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 5e1fcf65..2f67b2c8 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -4,7 +4,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "b2a692d6a9e1f048866b8b525de31e70794d32fb" +SRCREV = "75fc911cc6e5d0fa4ebc840766f17003374768ca" SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" From 500796942b1c8c2f7ba571bbd57d77cb571fe123 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 6 Feb 2026 13:00:39 +0200 Subject: [PATCH 046/104] Bump v8.2.3 Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 20315b92..5b00bd18 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -3,7 +3,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "dc40f007a9ca17292c5e7c9a729cfcabda1b8ec1" +SRCREV = "1aef7f007eb48697e8290b2c8202f66b5d472ed0" SRC_URI = "gitsm://github.com/aosedge/aos_core_mp_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 2f67b2c8..7a52f118 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -4,7 +4,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" -SRCREV = "75fc911cc6e5d0fa4ebc840766f17003374768ca" +SRCREV = "993e585709ebee9ecc01d30ecc111aab55740c26" SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" From 931ace3c1eff377f944b5225a9ea440f05ee361b Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:44:59 +0300 Subject: [PATCH 047/104] iam: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-iamanager/aos-iamanager_git.bb | 45 ++++++++++--------- ...g.service => aos-iam-provisioning.service} | 2 +- ...{aos-iamanager.service => aos-iam.service} | 2 +- .../aos-iamanager/files/aos-target.conf | 8 ++-- .../files/{aos_iamanager.cfg => aos_iam.cfg} | 0 5 files changed, 31 insertions(+), 26 deletions(-) rename recipes-aos/aos-iamanager/files/{aos-iamanager-provisioning.service => aos-iam-provisioning.service} (77%) rename recipes-aos/aos-iamanager/files/{aos-iamanager.service => aos-iam.service} (78%) rename recipes-aos/aos-iamanager/files/{aos_iamanager.cfg => aos_iam.cfg} (100%) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 9c36cd73..e375f933 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -4,29 +4,40 @@ FILESEXTRAPATHS:prepend:aos-secondary-node := "${THISDIR}/files/secondary:" DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" SRCREV = "491b0dfb347568ab584c84a6e2c49a0d66d792a8" -SRC_URI = "gitsm://github.com/aosedge/aos_core_iam_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_iamanager.cfg \ - file://aos-iamanager.service \ - file://aos-iamanager-provisioning.service \ + file://aos_iam.cfg \ + file://aos-iam.service \ + file://aos-iam-provisioning.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ " DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=ON \ + -DWITH_MP=OFF \ + -DWITH_SM=OFF \ +" OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" + +PACKAGECONFIG ??= "openssl" + +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," inherit autotools pkgconfig cmake systemd -SYSTEMD_SERVICE:${PN} = "aos-iamanager.service aos-iamanager-provisioning.service" +SYSTEMD_SERVICE:${PN} = "aos-iam.service aos-iam-provisioning.service" MIGRATION_SCRIPTS_PATH = "${base_prefix}/usr/share/aos/iam/migration" @@ -50,7 +61,7 @@ do_fetch[vardeps] += "AOS_MAIN_NODE AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME AOS python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_iamanager.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_iam.cfg") with open(file_name) as f: data = json.load(f) @@ -86,29 +97,23 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_iamanager.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/aos_iam.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-iamanager.service ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-iamanager-provisioning.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-iam.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-iam-provisioning.service ${D}${systemd_system_unitdir} - install -d ${D}${sysconfdir}/systemd/system/aos-iamanager-provisioning.service.d - install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-iamanager-provisioning.service.d/20-aos-dirs-service.conf + install -d ${D}${sysconfdir}/systemd/system/aos-iam-provisioning.service.d + install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-iam-provisioning.service.d/20-aos-dirs-service.conf install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/database/migration" + source_migration_path="/src/iam/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi } -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-iamanager/files/aos-iamanager-provisioning.service b/recipes-aos/aos-iamanager/files/aos-iam-provisioning.service similarity index 77% rename from recipes-aos/aos-iamanager/files/aos-iamanager-provisioning.service rename to recipes-aos/aos-iamanager/files/aos-iam-provisioning.service index d9d39fb7..ccb2ee9d 100644 --- a/recipes-aos/aos-iamanager/files/aos-iamanager-provisioning.service +++ b/recipes-aos/aos-iamanager/files/aos-iam-provisioning.service @@ -8,7 +8,7 @@ PartOf=aos.target [Service] Type=notify ExecStartPre=-/opt/aos/deprovision.sh -ExecStart=/usr/bin/aos_iamanager -c /etc/aos/aos_iamanager.cfg -provisioning -v debug -j +ExecStart=/usr/bin/aos_iam_app -c /etc/aos/aos_iam.cfg -provisioning -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-iamanager/files/aos-iamanager.service b/recipes-aos/aos-iamanager/files/aos-iam.service similarity index 78% rename from recipes-aos/aos-iamanager/files/aos-iamanager.service rename to recipes-aos/aos-iamanager/files/aos-iam.service index 2d3ca183..b6fcba5e 100644 --- a/recipes-aos/aos-iamanager/files/aos-iamanager.service +++ b/recipes-aos/aos-iamanager/files/aos-iam.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_iamanager -c /etc/aos/aos_iamanager.cfg -v debug -j +ExecStart=/usr/bin/aos_iam_app -c /etc/aos/aos_iam.cfg -v debug -j Restart=always RestartSec=10 KillMode=process diff --git a/recipes-aos/aos-iamanager/files/aos-target.conf b/recipes-aos/aos-iamanager/files/aos-target.conf index a582cd4a..cc197b39 100644 --- a/recipes-aos/aos-iamanager/files/aos-target.conf +++ b/recipes-aos/aos-iamanager/files/aos-target.conf @@ -1,5 +1,5 @@ [Unit] -Wants=aos-iamanager.service -After=aos-iamanager.service -Wants=aos-iamanager-provisioning.service -After=aos-iamanager-provisioning.service +Wants=aos-iam.service +After=aos-iam.service +Wants=aos-iam-provisioning.service +After=aos-iam-provisioning.service diff --git a/recipes-aos/aos-iamanager/files/aos_iamanager.cfg b/recipes-aos/aos-iamanager/files/aos_iam.cfg similarity index 100% rename from recipes-aos/aos-iamanager/files/aos_iamanager.cfg rename to recipes-aos/aos-iamanager/files/aos_iam.cfg From c285fa4b6a140f1bbe3c18582826e83578d6020f Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:46:26 +0300 Subject: [PATCH 048/104] mp: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-messageproxy/aos-messageproxy_git.bb | 41 ++++++++++--------- .../files/aos-cm-service.conf | 4 +- .../aos-messageproxy-provisioning.service | 15 ------- .../files/aos-mp-provisioning.service | 15 +++++++ ...os-messageproxy.service => aos-mp.service} | 6 +-- .../aos-messageproxy/files/aos-target.conf | 4 +- .../{aos_messageproxy.cfg => aos_mp.cfg} | 0 7 files changed, 44 insertions(+), 41 deletions(-) delete mode 100644 recipes-aos/aos-messageproxy/files/aos-messageproxy-provisioning.service create mode 100644 recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service rename recipes-aos/aos-messageproxy/files/{aos-messageproxy.service => aos-mp.service} (51%) rename recipes-aos/aos-messageproxy/files/{aos_messageproxy.cfg => aos_mp.cfg} (100%) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 5b00bd18..c76d85c4 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -5,12 +5,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" SRCREV = "1aef7f007eb48697e8290b2c8202f66b5d472ed0" -SRC_URI = "gitsm://github.com/aosedge/aos_core_mp_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_messageproxy.cfg \ - file://aos-messageproxy.service \ - file://aos-messageproxy-provisioning.service \ + file://aos_mp.cfg \ + file://aos-mp.service \ + file://aos-mp-provisioning.service \ file://aos-target.conf \ file://aos-cm-service.conf \ " @@ -21,13 +21,22 @@ inherit autotools pkgconfig cmake systemd DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl" -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" +PACKAGECONFIG ??= "openssl ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," OECMAKE_GENERATOR = "Unix Makefiles" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" -SYSTEMD_SERVICE:${PN} = "aos-messageproxy.service aos-messageproxy-provisioning.service" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=OFF \ + -DWITH_MP=ON \ + -DWITH_SM=OFF \ +" + +SYSTEMD_SERVICE:${PN} = "aos-mp.service aos-mp-provisioning.service" FILES:${PN} += " \ ${sysconfdir} \ @@ -41,7 +50,7 @@ do_fetch[vardeps] += "AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME" python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_messageproxy.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_mp.cfg") with open(file_name) as f: data = json.load(f) @@ -63,25 +72,19 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_messageproxy.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/aos_mp.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-messageproxy.service ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-messageproxy-provisioning.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-mp.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-mp-provisioning.service ${D}${systemd_system_unitdir} install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf } do_install:append:aos-main-node() { - install -d ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d - install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-messageproxy.service.d/10-aos-cm-service.conf -} - -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} + install -d ${D}${sysconfdir}/systemd/system/aos-mp.service.d + install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-mp.service.d/10-aos-cm-service.conf } addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-messageproxy/files/aos-cm-service.conf b/recipes-aos/aos-messageproxy/files/aos-cm-service.conf index d9fc3ec2..6c070080 100644 --- a/recipes-aos/aos-messageproxy/files/aos-cm-service.conf +++ b/recipes-aos/aos-messageproxy/files/aos-cm-service.conf @@ -1,3 +1,3 @@ [Unit] -Wants=aos-communicationmanager.service -After=aos-communicationmanager.service +Wants=aos-mp.service +After=aos-mp.service diff --git a/recipes-aos/aos-messageproxy/files/aos-messageproxy-provisioning.service b/recipes-aos/aos-messageproxy/files/aos-messageproxy-provisioning.service deleted file mode 100644 index 945ce204..00000000 --- a/recipes-aos/aos-messageproxy/files/aos-messageproxy-provisioning.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=AOS Message Proxy -Wants=network-online.target aos-iamanager.service -After=network-online.target aos-iamanager.service -ConditionPathExists=!/var/aos/.provisionstate -PartOf=aos.target - -[Service] -Type=notify -ExecStart=/usr/bin/aos_messageproxy -c /etc/aos/aos_messageproxy.cfg -provisioning -v debug -j -Restart=always -RestartSec=10 - -[Install] -WantedBy=multi-user.target diff --git a/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service b/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service new file mode 100644 index 00000000..8bb44f82 --- /dev/null +++ b/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service @@ -0,0 +1,15 @@ +[Unit] +Description=AOS Message Proxy +Wants=network-online.target aos-iam.service +After=network-online.target aos-iam.service +ConditionPathExists=!/var/aos/.provisionstate +PartOf=aos.target + +[Service] +Type=notify +ExecStart=/usr/bin/aos_mp_app -c /etc/aos/aos_mp.cfg -provisioning -v debug -j +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/recipes-aos/aos-messageproxy/files/aos-messageproxy.service b/recipes-aos/aos-messageproxy/files/aos-mp.service similarity index 51% rename from recipes-aos/aos-messageproxy/files/aos-messageproxy.service rename to recipes-aos/aos-messageproxy/files/aos-mp.service index b54baa4f..627f2d36 100644 --- a/recipes-aos/aos-messageproxy/files/aos-messageproxy.service +++ b/recipes-aos/aos-messageproxy/files/aos-mp.service @@ -1,13 +1,13 @@ [Unit] Description=AOS Message Proxy -Wants=network-online.target aos-iamanager.service -After=network-online.target aos-iamanager.service +Wants=network-online.target aos-iam.service +After=network-online.target aos-iam.service ConditionPathExists=/var/aos/.provisionstate PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_messageproxy -c /etc/aos/aos_messageproxy.cfg -v debug -j +ExecStart=/usr/bin/aos_mp_app -c /etc/aos/aos_mp.cfg -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-messageproxy/files/aos-target.conf b/recipes-aos/aos-messageproxy/files/aos-target.conf index 729dd8dd..6c070080 100644 --- a/recipes-aos/aos-messageproxy/files/aos-target.conf +++ b/recipes-aos/aos-messageproxy/files/aos-target.conf @@ -1,3 +1,3 @@ [Unit] -Wants=aos-messageproxy.service -After=aos-messageproxy.service +Wants=aos-mp.service +After=aos-mp.service diff --git a/recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg b/recipes-aos/aos-messageproxy/files/aos_mp.cfg similarity index 100% rename from recipes-aos/aos-messageproxy/files/aos_messageproxy.cfg rename to recipes-aos/aos-messageproxy/files/aos_mp.cfg From 4ed0eec61896812737c12539261fa74b5b533c30 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 20 Aug 2025 15:47:10 +0300 Subject: [PATCH 049/104] sm: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-servicemanager_git.bb | 58 +++++++++---------- .../files/aos-cm-service.conf | 4 +- ...-servicemanager.service => aos-sm.service} | 6 +- .../aos-servicemanager/files/aos-target.conf | 4 +- .../{aos_servicemanager.cfg => aos_sm.cfg} | 0 5 files changed, 33 insertions(+), 39 deletions(-) rename recipes-aos/aos-servicemanager/files/{aos-servicemanager.service => aos-sm.service} (57%) rename recipes-aos/aos-servicemanager/files/{aos_servicemanager.cfg => aos_sm.cfg} (100%) diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 7a52f118..e03e012c 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -6,11 +6,11 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" SRCREV = "993e585709ebee9ecc01d30ecc111aab55740c26" -SRC_URI = "gitsm://github.com/aosedge/aos_core_sm_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_servicemanager.cfg \ - file://aos-servicemanager.service \ + file://aos_sm.cfg \ + file://aos-sm.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ file://aos-cm-service.conf \ @@ -20,7 +20,7 @@ S = "${WORKDIR}/git" inherit cmake pkgconfig systemd -SYSTEMD_SERVICE:${PN} = "aos-servicemanager.service" +SYSTEMD_SERVICE:${PN} = "aos-sm.service" MIGRATION_SCRIPTS_PATH = "${base_prefix}/usr/share/aos/sm/migration" @@ -34,7 +34,19 @@ DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" do_configure[network] = "1" -EXTRA_OECMAKE += "-DFETCHCONTENT_FULLY_DISCONNECTED=OFF -DWITH_MBEDTLS=OFF -DWITH_OPENSSL=ON" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=OFF \ + -DWITH_IAM=OFF \ + -DWITH_MP=OFF \ + -DWITH_SM=ON \ +" +OECMAKE_GENERATOR = "Unix Makefiles" + +PACKAGECONFIG ??= "openssl" + +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" @@ -74,7 +86,7 @@ RRECOMMENDS:${PN} += " \ python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_servicemanager.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_sm.cfg") with open(file_name) as f: data = json.load(f) @@ -97,48 +109,30 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_servicemanager.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/aos_sm.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-servicemanager.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-sm.service ${D}${systemd_system_unitdir} - install -m 0644 ${S}/src/runner/aos-service@.service ${D}${systemd_system_unitdir} + install -m 0644 ${S}/src/sm/runner/aos-service@.service ${D}${systemd_system_unitdir} sed -i 's/@RUNNER@/${AOS_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service - install -d ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d - install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d/20-aos-dirs-service.conf + install -d ${D}${sysconfdir}/systemd/system/aos-sm.service.d + install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-sm.service.d/20-aos-dirs-service.conf install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/${GO_IMPORT}/database/migration" + source_migration_path="/src/sm/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi } -# Remove conflicting with iam dev headers -do_install:append() { - rm -rf ${D}${includedir}/aos/common - rm -rf ${D}${includedir}/utils/image.hpp -} - do_install:append:aos-main-node() { - install -d ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d - install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-servicemanager.service.d/10-aos-cm-service.conf -} - -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} -} - -# Do not install headers files -# This is temporary solution and should be removed when switching to new repo approach -do_install:append() { - rm -rf ${D}${includedir} + install -d ${D}${sysconfdir}/systemd/system/aos-sm.service.d + install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-sm.service.d/10-aos-cm-service.conf } addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-servicemanager/files/aos-cm-service.conf b/recipes-aos/aos-servicemanager/files/aos-cm-service.conf index d9fc3ec2..59102c98 100644 --- a/recipes-aos/aos-servicemanager/files/aos-cm-service.conf +++ b/recipes-aos/aos-servicemanager/files/aos-cm-service.conf @@ -1,3 +1,3 @@ [Unit] -Wants=aos-communicationmanager.service -After=aos-communicationmanager.service +Wants=aos-cm.service +After=aos-cm.service diff --git a/recipes-aos/aos-servicemanager/files/aos-servicemanager.service b/recipes-aos/aos-servicemanager/files/aos-sm.service similarity index 57% rename from recipes-aos/aos-servicemanager/files/aos-servicemanager.service rename to recipes-aos/aos-servicemanager/files/aos-sm.service index 1260e49b..92afa223 100644 --- a/recipes-aos/aos-servicemanager/files/aos-servicemanager.service +++ b/recipes-aos/aos-servicemanager/files/aos-sm.service @@ -1,13 +1,13 @@ [Unit] Description=AOS Service Manager -Wants=network-online.target dbus.service aos-iamanager.service -After=network-online.target dbus.service aos-iamanager.service +Wants=network-online.target dbus.service aos-iam.service +After=network-online.target dbus.service aos-iam.service ConditionPathExists=/var/aos/.provisionstate PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_servicemanager -c /etc/aos/aos_servicemanager.cfg -v debug -j +ExecStart=/usr/bin/aos_sm_app -c /etc/aos/aos_sm.cfg -v debug -j ExecStop=/bin/sh -c "/bin/kill -s TERM $MAINPID; while [ -d /proc/$MAINPID ]; do sleep 1; done" Restart=always RestartSec=10 diff --git a/recipes-aos/aos-servicemanager/files/aos-target.conf b/recipes-aos/aos-servicemanager/files/aos-target.conf index ed8832e7..4beb671d 100644 --- a/recipes-aos/aos-servicemanager/files/aos-target.conf +++ b/recipes-aos/aos-servicemanager/files/aos-target.conf @@ -1,3 +1,3 @@ [Unit] -Wants=aos-servicemanager.service -After=aos-servicemanager.service +Wants=aos-sm.service +After=aos-sm.service diff --git a/recipes-aos/aos-servicemanager/files/aos_servicemanager.cfg b/recipes-aos/aos-servicemanager/files/aos_sm.cfg similarity index 100% rename from recipes-aos/aos-servicemanager/files/aos_servicemanager.cfg rename to recipes-aos/aos-servicemanager/files/aos_sm.cfg From cfa7ba59f4ca07f46b7445d5d35d05a634ee2c8a Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 11 Sep 2025 09:59:07 +0300 Subject: [PATCH 050/104] cm: update to new repo Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager_git.bb | 62 +++++++++---------- ...nicationmanager.service => aos-cm.service} | 6 +- .../files/aos-target.conf | 4 +- ...os_communicationmanager.cfg => aos_cm.cfg} | 0 4 files changed, 36 insertions(+), 36 deletions(-) rename recipes-aos/aos-communicationmanager/files/{aos-communicationmanager.service => aos-cm.service} (50%) rename recipes-aos/aos-communicationmanager/files/{aos_communicationmanager.cfg => aos_cm.cfg} (100%) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 851434e4..ed8c16dc 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -1,25 +1,25 @@ DESCRIPTION = "AOS Communication Manager" -GO_IMPORT = "github.com/aosedge/aos_communicationmanager" - LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "main" SRCREV = "11a4ef530cf3a0357ffa0d9e45c342c9891b9222" -SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" +SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_communicationmanager.cfg \ - file://aos-communicationmanager.service \ + file://aos_cm.cfg \ + file://aos-cm.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ " -inherit go goarch systemd +S = "${WORKDIR}/git" + +inherit cmake pkgconfig systemd -SYSTEMD_SERVICE:${PN} = "aos-communicationmanager.service" +SYSTEMD_SERVICE:${PN} = "aos-cm.service" MIGRATION_SCRIPTS_PATH = "${base_prefix}/usr/share/aos/cm/migration" @@ -29,24 +29,28 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "systemd" - -RDEPENDS:${PN} += " \ - aos-rootca \ - nfs-exports \ -" +DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" -RDEPENDS:${PN}-dev += " bash make" -RDEPENDS:${PN}-staticdev += " bash make" +do_configure[network] = "1" -INSANE_SKIP:${PN} = "textrel" +EXTRA_OECMAKE += " \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DWITH_CM=ON \ + -DWITH_IAM=OFF \ + -DWITH_MP=OFF \ + -DWITH_SM=OFF \ +" +OECMAKE_GENERATOR = "Unix Makefiles" -# embed version -GO_LDFLAGS += '-ldflags="-X main.GitSummary=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' +PACKAGECONFIG ??= "openssl" -# WA to support go install for v 1.18 +PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," +PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," -GO_LINKSHARED = "" +RDEPENDS:${PN} += " \ + aos-rootca \ + nfs-exports \ +" RRECOMMENDS:${PN} += " \ kernel-module-quota-v1 \ @@ -57,7 +61,7 @@ RRECOMMENDS:${PN} += " \ python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_communicationmanager.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_cm.cfg") with open(file_name) as f: data = json.load(f) @@ -89,25 +93,21 @@ python do_update_config() { json.dump(data, f, indent=4) } -do_compile:prepend() { - cd ${GOPATH}/src/${GO_IMPORT}/ -} - do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_communicationmanager.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/aos_cm.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-communicationmanager.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-cm.service ${D}${systemd_system_unitdir} install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf - install -d ${D}${sysconfdir}/systemd/system/aos-communicationmanager.service.d - install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-communicationmanager.service.d/10-aos-dirs-service.conf + install -d ${D}${sysconfdir}/systemd/system/aos-cm.service.d + install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-cm.service.d/10-aos-dirs-service.conf install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="/src/${GO_IMPORT}/database/migration" + source_migration_path="/src/cm/database/migration" if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi diff --git a/recipes-aos/aos-communicationmanager/files/aos-communicationmanager.service b/recipes-aos/aos-communicationmanager/files/aos-cm.service similarity index 50% rename from recipes-aos/aos-communicationmanager/files/aos-communicationmanager.service rename to recipes-aos/aos-communicationmanager/files/aos-cm.service index 9a6ef76e..49573de4 100644 --- a/recipes-aos/aos-communicationmanager/files/aos-communicationmanager.service +++ b/recipes-aos/aos-communicationmanager/files/aos-cm.service @@ -1,13 +1,13 @@ [Unit] Description=AOS Communication Manager -Wants=network-online.target aos-iamanager.service -After=network-online.target aos-iamanager.service +Wants=network-online.target aos-iam.service +After=network-online.target aos-iam.service ConditionPathExists=/var/aos/.provisionstate PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_communicationmanager -c /etc/aos/aos_communicationmanager.cfg -v debug -j +ExecStart=/usr/bin/aos_cm_app -c /etc/aos/aos_cm.cfg -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-communicationmanager/files/aos-target.conf b/recipes-aos/aos-communicationmanager/files/aos-target.conf index d9fc3ec2..59102c98 100644 --- a/recipes-aos/aos-communicationmanager/files/aos-target.conf +++ b/recipes-aos/aos-communicationmanager/files/aos-target.conf @@ -1,3 +1,3 @@ [Unit] -Wants=aos-communicationmanager.service -After=aos-communicationmanager.service +Wants=aos-cm.service +After=aos-cm.service diff --git a/recipes-aos/aos-communicationmanager/files/aos_communicationmanager.cfg b/recipes-aos/aos-communicationmanager/files/aos_cm.cfg similarity index 100% rename from recipes-aos/aos-communicationmanager/files/aos_communicationmanager.cfg rename to recipes-aos/aos-communicationmanager/files/aos_cm.cfg From 080b4ae867c243d1ee6fc784072c43709ee598b7 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Mon, 29 Sep 2025 17:22:21 +0300 Subject: [PATCH 051/104] remove aos-updatemanager Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- doc/integration.md | 37 +---- .../aos-updatemanager_git.bb | 137 ------------------ .../files/aos-cm-service.conf | 3 - .../files/aos-dirs-service.conf | 3 - .../aos-updatemanager/files/aos-target.conf | 3 - .../files/aos-updatemanager.service | 20 --- .../files/aos_updatemanager.cfg | 20 --- recipes-core/images/aos-image.inc | 1 - 8 files changed, 5 insertions(+), 219 deletions(-) delete mode 100644 recipes-aos/aos-updatemanager/aos-updatemanager_git.bb delete mode 100644 recipes-aos/aos-updatemanager/files/aos-cm-service.conf delete mode 100644 recipes-aos/aos-updatemanager/files/aos-dirs-service.conf delete mode 100644 recipes-aos/aos-updatemanager/files/aos-target.conf delete mode 100644 recipes-aos/aos-updatemanager/files/aos-updatemanager.service delete mode 100644 recipes-aos/aos-updatemanager/files/aos_updatemanager.cfg diff --git a/doc/integration.md b/doc/integration.md index b3c8c279..20f759a8 100644 --- a/doc/integration.md +++ b/doc/integration.md @@ -74,12 +74,11 @@ WKS_FILE = "custom.wks.in" Aos main components should be added into the target image by appending `IMAGE_INSTALL` variable in `local.conf`: ```bash -IMAGE_INSTALL:append = " aos-iamanager aos-provfirewall aos-communicationmanager aos-servicemanager aos-updatemanager" +IMAGE_INSTALL:append = " aos-iamanager aos-provfirewall aos-communicationmanager aos-servicemanager" ``` -`aos-iamanager`, `aos-communicationmanager`, `aos-servicemanager` are core Aos components. `aos-updatemanager` is -responsible for Aos OTA updates. If OTA system components update is not needed, `aos-updatemanager` may be removed from -the target image. It also required `umController` section to be removed from `aos-communicationmanager` config as +`aos-iamanager`, `aos-communicationmanager`, `aos-servicemanager` are core Aos components. +It also required `umController` section to be removed from `aos-communicationmanager` config as well as `um` storage to be removed from `aos-iamanager` config. `aos-provfirewall` is helper service that closes provisioning ports after provisioning for security reason. @@ -177,33 +176,7 @@ by other layer recipes. See [aos-vm][aos-vm] layers as example. ## Integrate Aos FOTA update -`aos-updatemanager` performs Aos OTA update of different system components with dedicated plugins. `aos-updatemanager` -has an example implementation of updating disk partitions using dual partition (A/B) approach as well as using overlay -approach. Aos overlay OTA update supports incremental update (delta update) whereas dual partition update supports only -full partition update. - -See reference Aos products as example of boot and roofs partitions update. At these products, rootfs is updated using -overlay approach, boot partition is updated using A/B approach. In [aos-vm][aos-vm] switching between A/B partition is -done by using `efi` boot manager at same time in [aos-rcar-gen3][aos-rcar-gen3] and [aos-rcar-gen4][aos-rcar-gen4] -switching A/B partition is done by using U-Boot environment variables. - -For a custom component update, the appropriate `aos-updatemanager` shall be implemented and integrated. - -Reference Aos FOTA implementation requires readonly rootfs. It can be enabled by setting the following variable in -`local.conf`: - -```bash -IMAGE_FEATURES:append = " read-only-rootfs" -``` - -`meta-aos` provides base Aos image recipe with RO rootfs and generating required for FOTA versioning files. You can -simple use it as your image file or include it in your own image file: - -```bash -require recipes-core/images/aos-image.inc -``` - -See [aos-vm][aos-vm] for reference. +*TBD* ## Integration using moulin meta build system @@ -238,7 +211,7 @@ components: - [DISTRO_FEATURES:append, " virtualization security"] # selinux is optional - [DISTRO_FEATURES:append, " acl xattr pam selinux"] - - [IMAGE_INSTALL:append, " aos-iamanager aos-provfirewall aos-communicationmanager aos-servicemanager aos-updatemanager"] + - [IMAGE_INSTALL:append, " aos-iamanager aos-provfirewall aos-communicationmanager aos-servicemanager"] # AOS VIS is optional - [IMAGE_INSTALL:append, " aos-vis"] # AOS FOTA specific option diff --git a/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb b/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb deleted file mode 100644 index d0868404..00000000 --- a/recipes-aos/aos-updatemanager/aos-updatemanager_git.bb +++ /dev/null @@ -1,137 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/files:" - -DESCRIPTION = "AOS Update Manager" - -GO_IMPORT = "github.com/aosedge/aos_updatemanager" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" - -BRANCH = "main" -SRCREV = "af4060acc8e074ebbb056ea736813a2efbb236ce" - -SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" - -SRC_URI += " \ - file://aos_updatemanager.cfg \ - file://aos-updatemanager.service \ - file://aos-target.conf \ - file://aos-dirs-service.conf \ - file://aos-cm-service.conf \ -" - -inherit go goarch systemd - -SYSTEMD_SERVICE:${PN} = "aos-updatemanager.service" - -AOS_UM_UPDATE_MODULES ?= " \ - updatemodules/testmodule \ -" - -MIGRATION_SCRIPTS_PATH = "${base_prefix}/usr/share/aos/um/migration" - -FILES:${PN} += " \ - ${sysconfdir} \ - ${systemd_system_unitdir} \ - ${MIGRATION_SCRIPTS_PATH} \ -" - -DEPENDS:append = " \ - pkgconfig-native \ - util-linux \ - efivar \ -" - -RDEPENDS:${PN} = " \ - aos-rootca \ -" - -RDEPENDS:${PN}-dev += " bash make" -RDEPENDS:${PN}-staticdev += " bash make" - -INSANE_SKIP:${PN} = "textrel" - -# embed version -GO_LDFLAGS += '-ldflags="-X main.GitSummary=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' - -# WA to support go install for v 1.18 - -GO_LINKSHARED = "" - -do_compile:prepend() { - cd ${GOPATH}/src/${GO_IMPORT}/ -} - -do_prepare_modules() { - file="${S}/src/${GO_IMPORT}/updatemodules/modules.go" - - echo 'package updatemodules' > ${file} - echo 'import (' >> ${file} - - for module in ${AOS_UM_UPDATE_MODULES}; do - echo "\t_ \"${GO_IMPORT}/${module}\"" >> ${file} - done - - echo ')' >> ${file} -} - -python do_update_config() { - import json - - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_updatemanager.cfg") - - with open(file_name) as f: - data = json.load(f) - - node_hostname = d.getVar("AOS_NODE_HOSTNAME") - main_node_hostname = d.getVar("AOS_MAIN_NODE_HOSTNAME") - - # Update IAM servers - - data["IAMPublicServerURL"] = node_hostname+":8090" - - # Update CM server - - data["CMServerURL"] = main_node_hostname+":8091" - - # Update component Types - - comp_prefix = d.getVar("AOS_UM_COMPONENT_PREFIX") - - for update_module in data["UpdateModules"]: - if not update_module["Type"].startswith(comp_prefix): - update_module["Type"] = comp_prefix+update_module["Type"] - - with open(file_name, "w") as f: - json.dump(data, f, indent=4) -} - -do_fetch[vardeps] += "AOS_UM_COMPONENT_PREFIX" - -do_install:append() { - install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_updatemanager.cfg ${D}${sysconfdir}/aos - - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-updatemanager.service ${D}${systemd_system_unitdir} - - install -d ${D}${sysconfdir}/systemd/system/aos.target.d - install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf - - install -d ${D}${sysconfdir}/systemd/system/aos-updatemanager.service.d - install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-updatemanager.service.d/20-aos-dirs-service.conf - - install -d ${D}${MIGRATION_SCRIPTS_PATH} - source_migration_path="src/${GO_IMPORT}/database/migration" - if [ -d ${S}/${source_migration_path} ]; then - install -m 0644 ${S}/${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} - fi -} - -do_install:append:aos-main-node() { - install -d ${D}${sysconfdir}/systemd/system/aos-updatemanager.service.d - install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-updatemanager.service.d/10-aos-cm-service.conf -} - -addtask update_config after do_install before do_package -addtask prepare_modules after do_unpack before do_compile diff --git a/recipes-aos/aos-updatemanager/files/aos-cm-service.conf b/recipes-aos/aos-updatemanager/files/aos-cm-service.conf deleted file mode 100644 index d9fc3ec2..00000000 --- a/recipes-aos/aos-updatemanager/files/aos-cm-service.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Unit] -Wants=aos-communicationmanager.service -After=aos-communicationmanager.service diff --git a/recipes-aos/aos-updatemanager/files/aos-dirs-service.conf b/recipes-aos/aos-updatemanager/files/aos-dirs-service.conf deleted file mode 100644 index c1b4f2aa..00000000 --- a/recipes-aos/aos-updatemanager/files/aos-dirs-service.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Unit] -Requires=var-aos-workdirs.mount -After=var-aos-workdirs.mount diff --git a/recipes-aos/aos-updatemanager/files/aos-target.conf b/recipes-aos/aos-updatemanager/files/aos-target.conf deleted file mode 100644 index 9e8f8b93..00000000 --- a/recipes-aos/aos-updatemanager/files/aos-target.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Unit] -Wants=aos-updatemanager.service -After=aos-updatemanager.service diff --git a/recipes-aos/aos-updatemanager/files/aos-updatemanager.service b/recipes-aos/aos-updatemanager/files/aos-updatemanager.service deleted file mode 100644 index eeec1540..00000000 --- a/recipes-aos/aos-updatemanager/files/aos-updatemanager.service +++ /dev/null @@ -1,20 +0,0 @@ -[Unit] -Description=AOS Update Manager -Wants=network-online.target aos-iamanager.service -After=network-online.target aos-iamanager.service -StartLimitInterval=300 -StartLimitBurst=3 -ConditionPathExists=/var/aos/.provisionstate -PartOf=aos.target - -[Service] -Type=notify -ExecStart=/usr/bin/aos_updatemanager -c /etc/aos/aos_updatemanager.cfg -v debug -j -# It is important to do not restart UM on normal exit. This case is used when system -# reboot scheduled: UM returns exit code 0. -Restart=on-failure -RestartSec=30 -TimeoutStartSec=60 - -[Install] -WantedBy=multi-user.target diff --git a/recipes-aos/aos-updatemanager/files/aos_updatemanager.cfg b/recipes-aos/aos-updatemanager/files/aos_updatemanager.cfg deleted file mode 100644 index 5ba4b2d0..00000000 --- a/recipes-aos/aos-updatemanager/files/aos_updatemanager.cfg +++ /dev/null @@ -1,20 +0,0 @@ -{ - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem", - "CertStorage": "um", - "IAMPublicServerURL": "aosiam:8090", - "CMServerURL": "aoscm:8091", - "WorkingDir": "/var/aos/workdirs/um", - "UpdateModules": [ - { - "ID": "test-component", - "Disabled": false, - "UpdatePriority": 0, - "RebootPriority": 0, - "Plugin": "testmodule" - } - ], - "Migration": { - "MigrationPath": "/usr/share/aos/um/migration", - "MergedMigrationPath": "/var/aos/workdirs/um/migration" - } -} \ No newline at end of file diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 204e4ade..5655b2ce 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -92,7 +92,6 @@ addtask create_rw_parts after do_image_qa do_image_wic before do_image_complete IMAGE_INSTALL:append = " \ aos-iamanager \ aos-servicemanager \ - aos-updatemanager \ aos-deprov \ aos-provfirewall \ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' \ From 21e94c8bc013868d4f37bded35a9e7cb3a704a4f Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 10 Dec 2025 20:49:17 +0200 Subject: [PATCH 052/104] recipes-aos: switch AosCore components to feature_unification branch Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 4 ++-- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 4 ++-- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 4 ++-- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index ed8c16dc..c29ec3b3 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -3,8 +3,8 @@ DESCRIPTION = "AOS Communication Manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "main" -SRCREV = "11a4ef530cf3a0357ffa0d9e45c342c9891b9222" +BRANCH = "feature_unification" +SRCREV = "${AUTOREV}" SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index e375f933..32e79e06 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -6,8 +6,8 @@ DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "main" -SRCREV = "491b0dfb347568ab584c84a6e2c49a0d66d792a8" +BRANCH = "feature_unification" +SRCREV = "${AUTOREV}" SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index c76d85c4..28b98639 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -2,8 +2,8 @@ DESCRIPTION = "AOS Message Proxy" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "main" -SRCREV = "1aef7f007eb48697e8290b2c8202f66b5d472ed0" +BRANCH = "feature_unification" +SRCREV = "${AUTOREV}" SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index e03e012c..de8630fc 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -3,8 +3,8 @@ DESCRIPTION = "AOS Service Manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "main" -SRCREV = "993e585709ebee9ecc01d30ecc111aab55740c26" +BRANCH = "feature_unification" +SRCREV = "${AUTOREV}" SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" From 7511ee0979f222aa454230e3e49e9ead2b402f1b Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 10 Dec 2025 20:52:08 +0200 Subject: [PATCH 053/104] recipes-aos: iam: rename aos-iam-provisioning service to aos-iam-prov Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 10 +++++----- ...s-iam-provisioning.service => aos-iam-prov.service} | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename recipes-aos/aos-iamanager/files/{aos-iam-provisioning.service => aos-iam-prov.service} (100%) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 32e79e06..cb885b92 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -14,7 +14,7 @@ SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${B SRC_URI += " \ file://aos_iam.cfg \ file://aos-iam.service \ - file://aos-iam-provisioning.service \ + file://aos-iam-prov.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ " @@ -37,7 +37,7 @@ PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," inherit autotools pkgconfig cmake systemd -SYSTEMD_SERVICE:${PN} = "aos-iam.service aos-iam-provisioning.service" +SYSTEMD_SERVICE:${PN} = "aos-iam.service aos-iam-prov.service" MIGRATION_SCRIPTS_PATH = "${base_prefix}/usr/share/aos/iam/migration" @@ -101,10 +101,10 @@ do_install:append() { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-iam.service ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/aos-iam-provisioning.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-iam-prov.service ${D}${systemd_system_unitdir} - install -d ${D}${sysconfdir}/systemd/system/aos-iam-provisioning.service.d - install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-iam-provisioning.service.d/20-aos-dirs-service.conf + install -d ${D}${sysconfdir}/systemd/system/aos-iam-prov.service.d + install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-iam-prov.service.d/20-aos-dirs-service.conf install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf diff --git a/recipes-aos/aos-iamanager/files/aos-iam-provisioning.service b/recipes-aos/aos-iamanager/files/aos-iam-prov.service similarity index 100% rename from recipes-aos/aos-iamanager/files/aos-iam-provisioning.service rename to recipes-aos/aos-iamanager/files/aos-iam-prov.service From 07e212b1e4e097810a1105778792fa29ceb7ce8c Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Thu, 18 Dec 2025 15:38:04 +0200 Subject: [PATCH 054/104] all: remove AOS_RUNNER references The AOS_RUNNER variable is deprecated in preference to the runtime configuration. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- README.md | 2 -- conf/layer.conf | 2 -- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 4 +--- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 -- 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index 8846d110..01e8c0b1 100644 --- a/README.md +++ b/README.md @@ -18,5 +18,3 @@ see [Aos Core integration](doc/integration.md) document. ## Misc * Set PREFERRED_PROVIDER_virtual/runc = "runc-opencontainers" to build runc from opencontainers. -* Set AOS_RUNNER to define which runner will be used to run Aos services. Currently supported: runc and crun. -Default is crun. diff --git a/conf/layer.conf b/conf/layer.conf index 17dd2dad..7440da33 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -22,8 +22,6 @@ AOS_MAIN_NODE ?= "1" AOS_NODE_TYPE ?= "${AOS_UNIT_MODEL}-${AOS_UNIT_VERSION}-${@'main' \ if bb.utils.to_boolean(d.getVar('AOS_MAIN_NODE')) else 'secondary'}" -AOS_RUNNER ??= "crun" - AOS_NODE_HOSTNAME ?= "${@'main' if bb.utils.to_boolean(d.getVar('AOS_MAIN_NODE')) else 'secondary'}" AOS_MAIN_NODE_HOSTNAME ?= "main" diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index cb885b92..d7556fca 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -56,7 +56,7 @@ S = "${WORKDIR}/git" do_compile[network] = "1" do_configure[network] = "1" -do_fetch[vardeps] += "AOS_MAIN_NODE AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME AOS_NODE_TYPE AOS_RUNNER" +do_fetch[vardeps] += "AOS_MAIN_NODE AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME AOS_NODE_TYPE" python do_update_config() { import json @@ -70,9 +70,7 @@ python do_update_config() { node_info["NodeType"] = d.getVar("AOS_NODE_TYPE") # Set Node Attributes - aos_runner = d.getVar("AOS_RUNNER") node_attributes = node_info.get("Attrs", {}) - node_attributes["NodeRunners"] = aos_runner node_info["Attrs"] = node_attributes diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index de8630fc..f7afb10e 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -57,7 +57,6 @@ RDEPENDS:${PN} += " \ cni \ aos-firewall \ aos-dnsname \ - ${@bb.utils.contains("AOS_RUNNER", "runc", "${VIRTUAL_RUNC}", "${AOS_RUNNER}", d)} \ " RDEPENDS:${PN}:append:aos-secondary-node = " \ @@ -115,7 +114,6 @@ do_install:append() { install -m 0644 ${WORKDIR}/aos-sm.service ${D}${systemd_system_unitdir} install -m 0644 ${S}/src/sm/runner/aos-service@.service ${D}${systemd_system_unitdir} - sed -i 's/@RUNNER@/${AOS_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service install -d ${D}${sysconfdir}/systemd/system/aos-sm.service.d install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-sm.service.d/20-aos-dirs-service.conf From 58754b08d68f8521c3a8b7c72467ff52142c9fea Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Thu, 18 Dec 2025 15:43:12 +0200 Subject: [PATCH 055/104] recipes-aos: iam: populate node info Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- .../aos-iamanager/aos-iamanager_git.bb | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index d7556fca..5c48f356 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -56,7 +56,16 @@ S = "${WORKDIR}/git" do_compile[network] = "1" do_configure[network] = "1" -do_fetch[vardeps] += "AOS_MAIN_NODE AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME AOS_NODE_TYPE" +do_fetch[vardeps] += " \ + AOS_MAIN_NODE \ + AOS_MAIN_NODE_HOSTNAME \ + AOS_NODE_HOSTNAME \ + AOS_NODE_TYPE \ + AOS_ARCHITECTURE \ + AOS_ARCHITECTURE_VARIANT \ + AOS_OS \ + AOS_OS_VERSION \ +" python do_update_config() { import json @@ -69,6 +78,18 @@ python do_update_config() { node_info = data.get("NodeInfo", {}) node_info["NodeType"] = d.getVar("AOS_NODE_TYPE") + if d.getVar("AOS_ARCHITECTURE"): + node_info["Architecture"] = d.getVar("AOS_ARCHITECTURE") + + if d.getVar("AOS_ARCHITECTURE_VARIANT"): + node_info["ArchitectureVariant"] = d.getVar("AOS_ARCHITECTURE_VARIANT") + + if d.getVar("AOS_OS"): + node_info["OS"] = d.getVar("AOS_OS") + + if d.getVar("AOS_OS_VERSION"): + node_info["OSVersion"] = d.getVar("AOS_OS_VERSION") + # Set Node Attributes node_attributes = node_info.get("Attrs", {}) From a12bb06d57282e16ce13252287f0f786033b9398 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 19 Dec 2025 15:34:23 +0200 Subject: [PATCH 056/104] recipes-aos: aos-communicationmanager: set FileServerURL to config This patch removes deprecated SMController and UMController entries from the Communication Manager configuration file and sets the FileServerURL directly in the root of the configuration. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager_git.bb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index c29ec3b3..1b7f67f2 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -81,13 +81,9 @@ python do_update_config() { main_node_hostname = d.getVar("AOS_MAIN_NODE_HOSTNAME") - # Update SM controller - sm_controller = data["SMController"] - sm_controller["FileServerURL"] = main_node_hostname+":8094" + # Update File Server URL - # Update CM controller - um_controller = data["UMController"] - um_controller["FileServerURL"] = main_node_hostname+":8092" + data["FileServerURL"] = main_node_hostname+":8094" with open(file_name, "w") as f: json.dump(data, f, indent=4) From 2509038b30fb5d218aee6d85ccd2c8fe66ce5f38 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Thu, 18 Dec 2025 14:19:36 +0200 Subject: [PATCH 057/104] recipes-aos: aos-communicationmanager: update service config Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager/files/aos_cm.cfg | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/files/aos_cm.cfg b/recipes-aos/aos-communicationmanager/files/aos_cm.cfg index e7d1e973..9a9402a4 100644 --- a/recipes-aos/aos-communicationmanager/files/aos_cm.cfg +++ b/recipes-aos/aos-communicationmanager/files/aos_cm.cfg @@ -3,26 +3,20 @@ "CACert": "/etc/ssl/certs/Aos_Root_CA.pem" }, "CertStorage": "cm", - "ServiceDiscoveryURL": "https://aoscloud.io:9000", - "IAMProtectedServerURL": "aosiam:8089", - "IAMPublicServerURL": "aosiam:8090", - "CMServerURL": ":8095", + "ServiceDiscoveryURL": "https://aoscloud.io:9000/sd/v7/", + "IAMProtectedServerURL": "main:8089", + "IAMPublicServerURL": "main:8090", + "CMServerURL": "main:8093", "WorkingDir": "/var/aos/workdirs/cm", "StorageDir": "/var/aos/storages", "StateDir": "/var/aos/states", - "Downloader": { - "DownloadDir": "/var/aos/downloads" - }, - "SMController": { - "CMServerURL": ":8093", - "UpdateTTL": "24h" - }, - "UMController": { - "CMServerURL": ":8091", - "UpdateTTL": "24h" - }, "Migration": { "MigrationPath": "/usr/share/aos/cm/migration", "MergedMigrationPath": "/var/aos/workdirs/cm/migration" + }, + "ImageManager": { + "InstallPath": "/var/aos/workdirs/cm/imagemanager/install", + "DownloadPath": "/var/aos/workdirs/cm/imagemanager/downloads", + "UpdateItemTTL": "30d" } } From 14b22004f060480cb81556b7de6b55ca2e592bb1 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 19 Dec 2025 16:35:29 +0200 Subject: [PATCH 058/104] recipes-aos: aos-communicationmanager: set CMServerURL to config Use node hostname for CMServerURL in aos_cm.cfg Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 1b7f67f2..79433665 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -73,6 +73,10 @@ python do_update_config() { data["IAMProtectedServerURL"]= node_hostname+":8089" data["IAMPublicServerURL"] = node_hostname+":8090" + # Update CM server + + data["CMServerURL"] = node_hostname+":8093" + # Update DNS IP dns_ip = d.getVar("AOS_DNS_IP") From 09c0b3c9f8ac7b83f40ba4c77b0dbd904d36aa25 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Sun, 4 Jan 2026 18:05:44 +0200 Subject: [PATCH 059/104] recipes-aos: cm: update config Use camelCase for item names and update to latest implementation. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager_git.bb | 12 +++--- .../aos-communicationmanager/files/aos_cm.cfg | 37 ++++++++++--------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 79433665..2c6f8b84 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -69,25 +69,25 @@ python do_update_config() { node_hostname = d.getVar("AOS_NODE_HOSTNAME") # Update IAM servers - - data["IAMProtectedServerURL"]= node_hostname+":8089" - data["IAMPublicServerURL"] = node_hostname+":8090" + + data["iamProtectedServerUrl"]= node_hostname + ":8089" + data["iamPublicServerUrl"] = node_hostname + ":8090" # Update CM server - data["CMServerURL"] = node_hostname+":8093" + data["cmServerUrl"] = node_hostname + ":8093" # Update DNS IP dns_ip = d.getVar("AOS_DNS_IP") if dns_ip: - data["DNSIP"] = dns_ip + data["dnsIp"] = dns_ip main_node_hostname = d.getVar("AOS_MAIN_NODE_HOSTNAME") # Update File Server URL - data["FileServerURL"] = main_node_hostname+":8094" + data["fileServerUrl"] = main_node_hostname + ":8094" with open(file_name, "w") as f: json.dump(data, f, indent=4) diff --git a/recipes-aos/aos-communicationmanager/files/aos_cm.cfg b/recipes-aos/aos-communicationmanager/files/aos_cm.cfg index 9a9402a4..99dcc284 100644 --- a/recipes-aos/aos-communicationmanager/files/aos_cm.cfg +++ b/recipes-aos/aos-communicationmanager/files/aos_cm.cfg @@ -1,22 +1,23 @@ { - "Fcrypt": { - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem" + "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "certStorage": "cm", + "serviceDiscoveryUrl": "https://aoscloud.io:9000/sd/v7/", + "iamProtectedServerUrl": "main:8089", + "iamPublicServerUrl": "main:8090", + "cmServerUrl": "main:8093", + "workingDir": "/var/aos/workdirs/cm", + "storageDir": "/var/aos/storages", + "stateDir": "/var/aos/states", + "dnsIp": "10.0.0.100", + "fileServerUrl": "main:8094", + "imageManager": { + "installPath": "/var/aos/workdirs/cm/imagemanager/install", + "downloadPath": "/var/aos/workdirs/cm/imagemanager/downloads", + "updateItemTTL": "30d", + "removeOutdatedPeriod": "24h" }, - "CertStorage": "cm", - "ServiceDiscoveryURL": "https://aoscloud.io:9000/sd/v7/", - "IAMProtectedServerURL": "main:8089", - "IAMPublicServerURL": "main:8090", - "CMServerURL": "main:8093", - "WorkingDir": "/var/aos/workdirs/cm", - "StorageDir": "/var/aos/storages", - "StateDir": "/var/aos/states", - "Migration": { - "MigrationPath": "/usr/share/aos/cm/migration", - "MergedMigrationPath": "/var/aos/workdirs/cm/migration" - }, - "ImageManager": { - "InstallPath": "/var/aos/workdirs/cm/imagemanager/install", - "DownloadPath": "/var/aos/workdirs/cm/imagemanager/downloads", - "UpdateItemTTL": "30d" + "migration": { + "migrationPath": "/usr/share/aos/cm/migration", + "mergedMigrationPath": "/var/aos/workdirs/cm/migration" } } From 2539ba137543c236cade61ae3fc651b3660c878e Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Sun, 4 Jan 2026 18:06:49 +0200 Subject: [PATCH 060/104] recipes-aos: iam: update config Use camelCase for item names and update to latest implementation. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-iamanager/aos-iamanager_git.bb | 33 ++- recipes-aos/aos-iamanager/files/aos_iam.cfg | 199 +++++++++++------- 2 files changed, 142 insertions(+), 90 deletions(-) diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 5c48f356..7aaa1e2f 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -6,10 +6,10 @@ DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "feature_unification" +BRANCH = "integration" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "gitsm://github.com/al1img/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_iam.cfg \ @@ -75,40 +75,35 @@ python do_update_config() { with open(file_name) as f: data = json.load(f) - node_info = data.get("NodeInfo", {}) - node_info["NodeType"] = d.getVar("AOS_NODE_TYPE") + node_info = data.get("nodeInfo", {}) + node_info["nodeType"] = d.getVar("AOS_NODE_TYPE") if d.getVar("AOS_ARCHITECTURE"): - node_info["Architecture"] = d.getVar("AOS_ARCHITECTURE") + node_info["architecture"] = d.getVar("AOS_ARCHITECTURE") if d.getVar("AOS_ARCHITECTURE_VARIANT"): - node_info["ArchitectureVariant"] = d.getVar("AOS_ARCHITECTURE_VARIANT") + node_info["architectureVariant"] = d.getVar("AOS_ARCHITECTURE_VARIANT") if d.getVar("AOS_OS"): - node_info["OS"] = d.getVar("AOS_OS") + node_info["os"] = d.getVar("AOS_OS") if d.getVar("AOS_OS_VERSION"): - node_info["OSVersion"] = d.getVar("AOS_OS_VERSION") + node_info["osVersion"] = d.getVar("AOS_OS_VERSION") - # Set Node Attributes - node_attributes = node_info.get("Attrs", {}) - - node_info["Attrs"] = node_attributes - - data["NodeInfo"] = node_info + data["nodeInfo"] = node_info main_node_host_name = d.getVar("AOS_MAIN_NODE_HOSTNAME") # Set main IAM server URLs for secondary IAM nodes if not d.getVar("AOS_MAIN_NODE") or d.getVar("AOS_MAIN_NODE") == "0": - data["MainIAMPublicServerURL"] = main_node_host_name+":8090" - data["MainIAMProtectedServerURL"] = main_node_host_name+":8089" + data["mainIamPublicServerUrl"] = main_node_host_name + ":8090" + data["mainIamProtectedServerUrl"] = main_node_host_name + ":8089" # Set alternative names for server certificates - for cert_module in data["CertModules"]: - if "ExtendedKeyUsage" in cert_module and "serverAuth" in cert_module["ExtendedKeyUsage"]: - cert_module["AlternativeNames"] = [d.getVar("AOS_NODE_HOSTNAME")] + for cert_module in data["certModules"]: + if "extendedKeyUsage" in cert_module and "serverAuth" in cert_module["extendedKeyUsage"]: + cert_module["alternativeNames"] = [d.getVar("AOS_NODE_HOSTNAME")] with open(file_name, "w") as f: json.dump(data, f, indent=4) diff --git a/recipes-aos/aos-iamanager/files/aos_iam.cfg b/recipes-aos/aos-iamanager/files/aos_iam.cfg index bf96463e..59b61374 100644 --- a/recipes-aos/aos-iamanager/files/aos_iam.cfg +++ b/recipes-aos/aos-iamanager/files/aos_iam.cfg @@ -1,103 +1,160 @@ { - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem", - "CertStorage": "iam", - "IAMProtectedServerURL": ":8089", - "IAMPublicServerURL": ":8090", - "WorkingDir": "/var/aos/iam", - "FinishProvisioningCmdArgs": [ + "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "certStorage": "iam", + "iamProtectedServerUrl": ":8089", + "iamPublicServerUrl": ":8090", + "workingDir": "/var/aos/iam", + "nodeInfo": { + "nodeIdPath": "/etc/machine-id", + "nodeName": "main", + "maxDmips": 10000, + "attrs": { + "MainNode": "", + "AosComponents": "cm,iam,sm" + }, + "partitions": [ + { + "name": "storages", + "types": [ + "storages" + ], + "path": "/var/aos/storages" + }, + { + "name": "states", + "types": [ + "states" + ], + "path": "/var/aos/states" + }, + { + "name": "workdirs", + "types": [ + "services", + "layers", + "generic" + ], + "path": "/var/aos/workdirs" + }, + { + "name": "var", + "types": [ + "generic" + ], + "path": "/var" + } + ] + }, + "diskEncryptionCmdArgs": [ + "/bin/sh", + "-c", + "/opt/aos/setupdisk.sh create $(cat /proc/cmdline | sed -e 's/^.*opendisk.target=//' -e 's/ .*$//') -m /usr/lib/softhsm/libsofthsm2.so -p $(cat /var/aos/iam/.usrpin) 2>&1 | systemd-cat; systemctl restart nfs-server.service || true" + ], + "finishProvisioningCmdArgs": [ "/opt/aos/provfinish.sh" ], - "DeprovisionCmdArgs": [ - "/opt/aos/deprovision.sh", "async" + "deprovisionCmdArgs": [ + "/opt/aos/deprovision.sh", + "async" ], - "Identifier": { - "Plugin": "fileidentifier", - "Params": { - "SystemIdPath": "/etc/machine-id", - "BoardModelPath": "/sys/devices/virtual/dmi/id/product_name" + "identifier": { + "plugin": "fileidentifier", + "params": { + "systemIdPath": "/etc/machine-id", + "unitModelPath": "/etc/aos/unit_model", + "subjectsPath": "/etc/aos/subjects" } }, - "Migration": { - "MigrationPath": "/usr/share/aos/iam/migration", - "MergedMigrationPath": "/var/aos/iam/migration" - }, - "CertModules": [ + "certModules": [ { - "ID": "online", - "Plugin": "swmodule", - "Algorithm": "ecc", - "MaxItems": 1, - "Params": { - "StoragePath": "/var/aos/crypt/online" + "id": "online", + "plugin": "pkcs11module", + "algorithm": "ecc", + "maxItems": 2, + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscloud", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } }, { - "ID": "offline", - "Plugin": "swmodule", - "Algorithm": "rsa", - "MaxItems": 5, - "Params": { - "StoragePath": "/var/aos/crypt/offline" + "id": "offline", + "plugin": "pkcs11module", + "algorithm": "rsa", + "maxItems": 5, + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscloud", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } }, { - "ID": "iam", - "Plugin": "swmodule", - "Algorithm": "ecc", - "MaxItems": 1, - "ExtendedKeyUsage": [ - "serverAuth" - ], - "AlternativeNames": [ - "aosiam" + "id": "iam", + "plugin": "pkcs11module", + "algorithm": "ecc", + "maxItems": 2, + "extendedKeyUsage": [ + "serverAuth", + "clientAuth" ], - "Params": { - "StoragePath": "/var/aos/crypt/iam" + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscore", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } }, { - "ID": "sm", - "Plugin": "swmodule", - "Algorithm": "ecc", - "MaxItems": 1, - "ExtendedKeyUsage": [ + "id": "sm", + "plugin": "pkcs11module", + "algorithm": "ecc", + "maxItems": 2, + "extendedKeyUsage": [ "serverAuth", "clientAuth" ], - "AlternativeNames": [ - "aossm" - ], - "Params": { - "StoragePath": "/var/aos/crypt/sm" + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscore", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } }, { - "ID": "cm", - "Plugin": "swmodule", - "Algorithm": "ecc", - "MaxItems": 1, - "ExtendedKeyUsage": [ + "id": "cm", + "plugin": "pkcs11module", + "algorithm": "ecc", + "maxItems": 2, + "extendedKeyUsage": [ "serverAuth", "clientAuth" ], - "AlternativeNames": [ - "aoscm" - ], - "Params": { - "StoragePath": "/var/aos/crypt/cm" + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscore", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } }, { - "ID": "um", - "Plugin": "swmodule", - "Algorithm": "ecc", - "MaxItems": 1, - "ExtendedKeyUsage": [ - "clientAuth" - ], - "Params": { - "StoragePath": "/var/aos/crypt/um" + "id": "diskencryption", + "plugin": "pkcs11module", + "algorithm": "rsa", + "maxItems": 1, + "disabled": false, + "selfSigned": true, + "params": { + "library": "/usr/lib/softhsm/libsofthsm2.so", + "tokenLabel": "aoscore", + "userPinPath": "/var/aos/iam/.usrpin", + "modulePathInUrl": true } } - ] + ], + "migration": { + "migrationPath": "/usr/share/aos/iam/migration", + "mergedMigrationPath": "/var/aos/iam/migration" + } } From 8ef51fdb05a888dc727d6d99e7fa8b4c3a17965d Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Sun, 4 Jan 2026 18:08:35 +0200 Subject: [PATCH 061/104] recipes-aos: mp: update config Use camelCase for item names and update to latest implementation. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-messageproxy/aos-messageproxy_git.bb | 16 +++---- recipes-aos/aos-messageproxy/files/aos_mp.cfg | 46 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 28b98639..e5ef4fed 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -55,16 +55,16 @@ python do_update_config() { with open(file_name) as f: data = json.load(f) - iamConfig = data.get("IAMConfig", {}) - iamConfig["IAMPublicServerURL"] = d.getVar("AOS_NODE_HOSTNAME") + ":8090" - iamConfig["IAMMainPublicServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8090" - iamConfig["IAMMainProtectedServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8089" + iamConfig = data.get("iamConfig", {}) + iamConfig["iamPublicServerUrl"] = d.getVar("AOS_NODE_HOSTNAME") + ":8090" + iamConfig["iamMainPublicServerUrl"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8090" + iamConfig["iamMainProtectedServerUrl"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8089" - cmConfig = data.get("CMConfig", {}) - cmConfig["CMServerURL"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8093" + cmConfig = data.get("cmConfig", {}) + cmConfig["cmServerUrl"] = d.getVar("AOS_MAIN_NODE_HOSTNAME") + ":8093" - data["IAMConfig"] = iamConfig - data["CMConfig"] = cmConfig + data["iamConfig"] = iamConfig + data["cmConfig"] = cmConfig with open(file_name, "w") as f: json.dump(data, f, indent=4) diff --git a/recipes-aos/aos-messageproxy/files/aos_mp.cfg b/recipes-aos/aos-messageproxy/files/aos_mp.cfg index 2856b4f4..8f5b98f9 100644 --- a/recipes-aos/aos-messageproxy/files/aos_mp.cfg +++ b/recipes-aos/aos-messageproxy/files/aos_mp.cfg @@ -1,29 +1,29 @@ { - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem", - "CertStorage": "sm", - "WorkingDir": "/var/aos/workdirs/mp", - "ImageStoreDir": "/var/aos/workdirs/mp/images", - "IAMConfig": { - "IAMPublicServerURL": ":8090", - "IAMMainPublicServerURL": "main:8090", - "IAMMainProtectedServerURL": "main:8089", - "CertStorage": "iam", - "OpenPort": 1, - "SecurePort": 2 + "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "certStorage": "sm", + "workingDir": "/var/aos/workdirs/mp", + "imageStoreDir": "/var/aos/workdirs/mp/images", + "iamConfig": { + "iamPublicServerUrl": ":8090", + "iamMainPublicServerUrl": "main:8090", + "iamMainProtectedServerUrl": "main:8089", + "certStorage": "iam", + "openPort": 1, + "securePort": 2 }, - "CMConfig": { - "CMServerURL": "main:8093", - "OpenPort": 3, - "SecurePort": 4 + "cmConfig": { + "cmServerUrl": "main:8093", + "openPort": 3, + "securePort": 4 }, - "VChan": { - "XSRXPath": "tmp/vchan/aos/rx", - "XSTXPath": "tmp/vchan/aos/tx", - "IAMCertStorage": "iam", - "SMCertStorage": "sm", - "Domain": 0 + "vchan": { + "xsRxPath": "tmp/vchan/aos/rx", + "xsTxPath": "tmp/vchan/aos/tx", + "iamCertStorage": "iam", + "smCertStorage": "sm", + "domain": 0 }, - "Downloader": { - "DownloadDir": "/var/aos/workdirs/mp/downloads" + "downloader": { + "downloadDir": "/var/aos/workdirs/mp/downloads" } } From f68747f07f631b3490406baf0c72f145b76852e6 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Sun, 4 Jan 2026 18:09:15 +0200 Subject: [PATCH 062/104] recipes-aos: sm: update config Use camelCase for item names and update to latest implementation. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- conf/layer.conf | 2 +- .../aos-servicemanager_git.bb | 22 +++++++-- .../aos-servicemanager/files/aos_sm.cfg | 46 +++++++++++-------- 3 files changed, 45 insertions(+), 25 deletions(-) diff --git a/conf/layer.conf b/conf/layer.conf index 7440da33..f435ae5a 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -25,7 +25,7 @@ AOS_NODE_TYPE ?= "${AOS_UNIT_MODEL}-${AOS_UNIT_VERSION}-${@'main' \ AOS_NODE_HOSTNAME ?= "${@'main' if bb.utils.to_boolean(d.getVar('AOS_MAIN_NODE')) else 'secondary'}" AOS_MAIN_NODE_HOSTNAME ?= "main" -AOS_UM_COMPONENT_PREFIX ?= "" +AOS_COMPONENT_RUNTIME_PREFIX ?= "" # Overrides diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index f7afb10e..b0ffb4a1 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -82,6 +82,10 @@ RRECOMMENDS:${PN} += " \ kernel-module-act-mirred \ " +do_fetch[vardeps] += " \ + AOS_COMPONENT_RUNTIME_PREFIX \ +" + python do_update_config() { import json @@ -95,12 +99,22 @@ python do_update_config() { # Update IAM servers - data["IAMProtectedServerURL"] = node_hostname+":8089" - data["IAMPublicServerURL"] = node_hostname+":8090" + data["iamProtectedServerUrl"] = node_hostname + ":8089" + data["iamPublicServerUrl"] = node_hostname + ":8090" # Update CM server - data["CMServerURL"] = main_node_hostname+":8093" + data["cmServerUrl"] = main_node_hostname + ":8093" + + # Update component prefixes + + comp_prefix = d.getVar("AOS_COMPONENT_RUNTIME_PREFIX") + + for runtime in data["runtimes"]: + isComponent = runtime.get("isComponent", False) + + if isComponent and not runtime["type"].startswith(comp_prefix): + runtime["type"] = comp_prefix + runtime["type"] with open(file_name, "w") as f: json.dump(data, f, indent=4) @@ -112,8 +126,6 @@ do_install:append() { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-sm.service ${D}${systemd_system_unitdir} - - install -m 0644 ${S}/src/sm/runner/aos-service@.service ${D}${systemd_system_unitdir} install -d ${D}${sysconfdir}/systemd/system/aos-sm.service.d install -m 0644 ${WORKDIR}/aos-dirs-service.conf ${D}${sysconfdir}/systemd/system/aos-sm.service.d/20-aos-dirs-service.conf diff --git a/recipes-aos/aos-servicemanager/files/aos_sm.cfg b/recipes-aos/aos-servicemanager/files/aos_sm.cfg index 2966dc87..6f16b0c9 100644 --- a/recipes-aos/aos-servicemanager/files/aos_sm.cfg +++ b/recipes-aos/aos-servicemanager/files/aos_sm.cfg @@ -1,22 +1,30 @@ { - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem", - "CertStorage": "sm", - "IAMProtectedServerURL": "aosiam:8089", - "IAMPublicServerURL": "aosiam:8090", - "CMServerURL": "aoscm:8093", - "WorkingDir": "/var/aos/workdirs/sm", - "ServicesDir": "/var/aos/workdirs/sm/services", - "ServicesPartLimit": 40, - "LayersDir": "/var/aos/workdirs/sm/layers", - "LayersPartLimit": 40, - "StateDir": "/var/aos/states", - "StorageDir": "/var/aos/storages", - "RunnerFeatures": [ - "crun", - "runc" + "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "certStorage": "sm", + "iamProtectedServerUrl": "aosiam:8089", + "iamPublicServerUrl": "aosiam:8090", + "cmServerUrl": "aoscm:8093", + "workingDir": "/var/aos/workdirs/sm", + "stateDir": "/var/aos/states", + "storageDir": "/var/aos/storages", + "runtimes": [ + { + "plugin": "container", + "type": "runc" + }, + { + "plugin": "rootfs", + "type": "rootfs", + "isComponent": true + }, + { + "plugin": "boot", + "type": "boot", + "isComponent": true + } ], - "Migration": { - "MigrationPath": "/usr/share/aos/sm/migration", - "MergedMigrationPath": "/var/aos/workdirs/sm/migration" + "migration": { + "migrationPath": "/usr/share/aos/sm/migration", + "mergedMigrationPath": "/var/aos/workdirs/sm/migration" } -} \ No newline at end of file +} From 988549be20ef5e0d6961ff94de1d7336c8b9c7e7 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 5 Jan 2026 15:00:06 +0200 Subject: [PATCH 063/104] recipes-aos: remove using git submodule to fetch sources Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Solianko --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 2 +- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 4 ++-- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 2c6f8b84..ae74f4bf 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "feature_unification" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_cm.cfg \ diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 7aaa1e2f..fcfb4de2 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -6,10 +6,10 @@ DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "integration" +BRANCH = "feature_unification" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/al1img/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_iam.cfg \ diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index e5ef4fed..961cd3a7 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "feature_unification" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_mp.cfg \ diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index b0ffb4a1..c7359a57 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" BRANCH = "feature_unification" SRCREV = "${AUTOREV}" -SRC_URI = "gitsm://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" +SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ file://aos_sm.cfg \ From 2a1943b5fbdca0e9a646e5da99bc1d06a55992b9 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Tue, 3 Jun 2025 11:11:21 +0300 Subject: [PATCH 064/104] [base-files] Move hostname to DNS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use main node’s DNS server for all domain name resolution Signed-off-by: Mykola Solianko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- recipes-core/base-files/base-files_%.bbappend | 5 ----- 1 file changed, 5 deletions(-) diff --git a/recipes-core/base-files/base-files_%.bbappend b/recipes-core/base-files/base-files_%.bbappend index 56e535d6..44d37c9e 100644 --- a/recipes-core/base-files/base-files_%.bbappend +++ b/recipes-core/base-files/base-files_%.bbappend @@ -2,11 +2,6 @@ hostname = "${AOS_NODE_HOSTNAME}" aos_disks_timeout = "30" do_install:append() { - # add Aos related hosts - for host in ${AOS_HOSTS}; do - echo ${host} | sed "s/=/ /g" >> ${D}${sysconfdir}/hosts - done - # remove /run from fstab, run is mounted in initramfs sed -i "\:[[:blank:]]*/run:d" ${D}${sysconfdir}/fstab From 08952d4e6c05d440ca92d7d4ee4cb8f498fc3aa3 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 7 Jan 2026 16:07:04 +0200 Subject: [PATCH 065/104] recipes-aos: sm: set rootfs runtime config Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- recipes-aos/aos-servicemanager/files/aos_sm.cfg | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes-aos/aos-servicemanager/files/aos_sm.cfg b/recipes-aos/aos-servicemanager/files/aos_sm.cfg index 6f16b0c9..36314864 100644 --- a/recipes-aos/aos-servicemanager/files/aos_sm.cfg +++ b/recipes-aos/aos-servicemanager/files/aos_sm.cfg @@ -15,7 +15,16 @@ { "plugin": "rootfs", "type": "rootfs", - "isComponent": true + "isComponent": true, + "config": { + "workingDir": "/var/aos/workdirs/sm/runtimes/rootfs", + "versionFilePath": "/etc/aos/version", + "healthCheckServices": [ + "aos-cm.service", + "aos-iam.service", + "aos-sm.service" + ] + } }, { "plugin": "boot", From 975ebc722b7ac5e4de44d7776a3f9ce0d8ea4f24 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 19 Jan 2026 20:27:02 +0200 Subject: [PATCH 066/104] recipes-aos: add AOS_CONTAINER_RUNNER to set container runner Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko --- conf/layer.conf | 2 ++ .../aos-servicemanager/aos-servicemanager_git.bb | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/conf/layer.conf b/conf/layer.conf index f435ae5a..8de8fae1 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -27,6 +27,8 @@ AOS_MAIN_NODE_HOSTNAME ?= "main" AOS_COMPONENT_RUNTIME_PREFIX ?= "" +AOS_CONTAINER_RUNNER ??= "crun" + # Overrides OVERRIDES:append = "${@':aos-main-node' if bb.utils.to_boolean(d.getVar('AOS_MAIN_NODE')) else ':aos-secondary-node'}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index c7359a57..19855033 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -57,6 +57,7 @@ RDEPENDS:${PN} += " \ cni \ aos-firewall \ aos-dnsname \ + ${@bb.utils.contains("AOS_CONTAINER_RUNNER", "runc", "${VIRTUAL_RUNC}", "${AOS_CONTAINER_RUNNER}", d)} \ " RDEPENDS:${PN}:append:aos-secondary-node = " \ @@ -84,6 +85,7 @@ RRECOMMENDS:${PN} += " \ do_fetch[vardeps] += " \ AOS_COMPONENT_RUNTIME_PREFIX \ + AOS_CONTAINER_RUNNER \ " python do_update_config() { @@ -106,11 +108,15 @@ python do_update_config() { data["cmServerUrl"] = main_node_hostname + ":8093" - # Update component prefixes + # Update component prefixes and set container runner comp_prefix = d.getVar("AOS_COMPONENT_RUNTIME_PREFIX") + container_runner = d.getVar("AOS_CONTAINER_RUNNER") for runtime in data["runtimes"]: + if runtime["plugin"] == "container": + runtime["type"] = container_runner + isComponent = runtime.get("isComponent", False) if isComponent and not runtime["type"].startswith(comp_prefix): @@ -133,6 +139,9 @@ do_install:append() { install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf + install -m 0644 ${S}/src/sm/launcher/runtimes/container/aos-service@.service ${D}${systemd_system_unitdir} + sed -i 's/@RUNNER@/${AOS_CONTAINER_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service + install -d ${D}${MIGRATION_SCRIPTS_PATH} source_migration_path="/src/sm/database/migration" if [ -d ${S}${source_migration_path} ]; then From 9b3a584f1d56fd6ce67c9154f590005fe75044f0 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 19 Jan 2026 20:41:55 +0200 Subject: [PATCH 067/104] recipes-aos: remove aos prefix from aos configs Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager_git.bb | 6 +++--- recipes-aos/aos-communicationmanager/files/aos-cm.service | 2 +- .../aos-communicationmanager/files/{aos_cm.cfg => cm.cfg} | 0 recipes-aos/aos-iamanager/aos-iamanager_git.bb | 6 +++--- recipes-aos/aos-iamanager/files/aos-iam-prov.service | 2 +- recipes-aos/aos-iamanager/files/aos-iam.service | 2 +- recipes-aos/aos-iamanager/files/{aos_iam.cfg => iam.cfg} | 0 recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 6 +++--- .../aos-messageproxy/files/aos-mp-provisioning.service | 2 +- recipes-aos/aos-messageproxy/files/aos-mp.service | 2 +- recipes-aos/aos-messageproxy/files/{aos_mp.cfg => mp.cfg} | 0 recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 6 +++--- recipes-aos/aos-servicemanager/files/aos-sm.service | 2 +- recipes-aos/aos-servicemanager/files/{aos_sm.cfg => sm.cfg} | 0 14 files changed, 18 insertions(+), 18 deletions(-) rename recipes-aos/aos-communicationmanager/files/{aos_cm.cfg => cm.cfg} (100%) rename recipes-aos/aos-iamanager/files/{aos_iam.cfg => iam.cfg} (100%) rename recipes-aos/aos-messageproxy/files/{aos_mp.cfg => mp.cfg} (100%) rename recipes-aos/aos-servicemanager/files/{aos_sm.cfg => sm.cfg} (100%) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index ae74f4bf..83830c2b 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -9,7 +9,7 @@ SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_cm.cfg \ + file://cm.cfg \ file://aos-cm.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ @@ -61,7 +61,7 @@ RRECOMMENDS:${PN} += " \ python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_cm.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "cm.cfg") with open(file_name) as f: data = json.load(f) @@ -95,7 +95,7 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_cm.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/cm.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-cm.service ${D}${systemd_system_unitdir} diff --git a/recipes-aos/aos-communicationmanager/files/aos-cm.service b/recipes-aos/aos-communicationmanager/files/aos-cm.service index 49573de4..1fc98f52 100644 --- a/recipes-aos/aos-communicationmanager/files/aos-cm.service +++ b/recipes-aos/aos-communicationmanager/files/aos-cm.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_cm_app -c /etc/aos/aos_cm.cfg -v debug -j +ExecStart=/usr/bin/aos_cm_app -c /etc/aos/cm.cfg -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-communicationmanager/files/aos_cm.cfg b/recipes-aos/aos-communicationmanager/files/cm.cfg similarity index 100% rename from recipes-aos/aos-communicationmanager/files/aos_cm.cfg rename to recipes-aos/aos-communicationmanager/files/cm.cfg diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index fcfb4de2..d4283755 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -12,7 +12,7 @@ SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_iam.cfg \ + file://iam.cfg \ file://aos-iam.service \ file://aos-iam-prov.service \ file://aos-target.conf \ @@ -70,7 +70,7 @@ do_fetch[vardeps] += " \ python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_iam.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "iam.cfg") with open(file_name) as f: data = json.load(f) @@ -111,7 +111,7 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_iam.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/iam.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-iam.service ${D}${systemd_system_unitdir} diff --git a/recipes-aos/aos-iamanager/files/aos-iam-prov.service b/recipes-aos/aos-iamanager/files/aos-iam-prov.service index ccb2ee9d..79f5e20f 100644 --- a/recipes-aos/aos-iamanager/files/aos-iam-prov.service +++ b/recipes-aos/aos-iamanager/files/aos-iam-prov.service @@ -8,7 +8,7 @@ PartOf=aos.target [Service] Type=notify ExecStartPre=-/opt/aos/deprovision.sh -ExecStart=/usr/bin/aos_iam_app -c /etc/aos/aos_iam.cfg -provisioning -v debug -j +ExecStart=/usr/bin/aos_iam_app -c /etc/aos/iam.cfg -provisioning -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-iamanager/files/aos-iam.service b/recipes-aos/aos-iamanager/files/aos-iam.service index b6fcba5e..e44e85f7 100644 --- a/recipes-aos/aos-iamanager/files/aos-iam.service +++ b/recipes-aos/aos-iamanager/files/aos-iam.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_iam_app -c /etc/aos/aos_iam.cfg -v debug -j +ExecStart=/usr/bin/aos_iam_app -c /etc/aos/iam.cfg -v debug -j Restart=always RestartSec=10 KillMode=process diff --git a/recipes-aos/aos-iamanager/files/aos_iam.cfg b/recipes-aos/aos-iamanager/files/iam.cfg similarity index 100% rename from recipes-aos/aos-iamanager/files/aos_iam.cfg rename to recipes-aos/aos-iamanager/files/iam.cfg diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 961cd3a7..27134ced 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -8,7 +8,7 @@ SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_mp.cfg \ + file://mp.cfg \ file://aos-mp.service \ file://aos-mp-provisioning.service \ file://aos-target.conf \ @@ -50,7 +50,7 @@ do_fetch[vardeps] += "AOS_MAIN_NODE_HOSTNAME AOS_NODE_HOSTNAME" python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_mp.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "mp.cfg") with open(file_name) as f: data = json.load(f) @@ -72,7 +72,7 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_mp.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/mp.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-mp.service ${D}${systemd_system_unitdir} diff --git a/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service b/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service index 8bb44f82..097af320 100644 --- a/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service +++ b/recipes-aos/aos-messageproxy/files/aos-mp-provisioning.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_mp_app -c /etc/aos/aos_mp.cfg -provisioning -v debug -j +ExecStart=/usr/bin/aos_mp_app -c /etc/aos/mp.cfg -provisioning -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-messageproxy/files/aos-mp.service b/recipes-aos/aos-messageproxy/files/aos-mp.service index 627f2d36..8d1900af 100644 --- a/recipes-aos/aos-messageproxy/files/aos-mp.service +++ b/recipes-aos/aos-messageproxy/files/aos-mp.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_mp_app -c /etc/aos/aos_mp.cfg -v debug -j +ExecStart=/usr/bin/aos_mp_app -c /etc/aos/mp.cfg -v debug -j Restart=always RestartSec=10 diff --git a/recipes-aos/aos-messageproxy/files/aos_mp.cfg b/recipes-aos/aos-messageproxy/files/mp.cfg similarity index 100% rename from recipes-aos/aos-messageproxy/files/aos_mp.cfg rename to recipes-aos/aos-messageproxy/files/mp.cfg diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 19855033..14312241 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -9,7 +9,7 @@ SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" SRC_URI += " \ - file://aos_sm.cfg \ + file://sm.cfg \ file://aos-sm.service \ file://aos-target.conf \ file://aos-dirs-service.conf \ @@ -91,7 +91,7 @@ do_fetch[vardeps] += " \ python do_update_config() { import json - file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "aos_sm.cfg") + file_name = oe.path.join(d.getVar("D"), d.getVar("sysconfdir"), "aos", "sm.cfg") with open(file_name) as f: data = json.load(f) @@ -128,7 +128,7 @@ python do_update_config() { do_install:append() { install -d ${D}${sysconfdir}/aos - install -m 0644 ${WORKDIR}/aos_sm.cfg ${D}${sysconfdir}/aos + install -m 0644 ${WORKDIR}/sm.cfg ${D}${sysconfdir}/aos install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/aos-sm.service ${D}${systemd_system_unitdir} diff --git a/recipes-aos/aos-servicemanager/files/aos-sm.service b/recipes-aos/aos-servicemanager/files/aos-sm.service index 92afa223..02251a15 100644 --- a/recipes-aos/aos-servicemanager/files/aos-sm.service +++ b/recipes-aos/aos-servicemanager/files/aos-sm.service @@ -7,7 +7,7 @@ PartOf=aos.target [Service] Type=notify -ExecStart=/usr/bin/aos_sm_app -c /etc/aos/aos_sm.cfg -v debug -j +ExecStart=/usr/bin/aos_sm_app -c /etc/aos/sm.cfg -v debug -j ExecStop=/bin/sh -c "/bin/kill -s TERM $MAINPID; while [ -d /proc/$MAINPID ]; do sleep 1; done" Restart=always RestartSec=10 diff --git a/recipes-aos/aos-servicemanager/files/aos_sm.cfg b/recipes-aos/aos-servicemanager/files/sm.cfg similarity index 100% rename from recipes-aos/aos-servicemanager/files/aos_sm.cfg rename to recipes-aos/aos-servicemanager/files/sm.cfg From 81ddf2aa9950dfedca6e784ce713f80d0c8e0e23 Mon Sep 17 00:00:00 2001 From: Mykola Kobets Date: Tue, 20 Jan 2026 20:58:39 +0200 Subject: [PATCH 068/104] openssl: WA for GRPC MTLS handshake problem During certificate verification pkcs11-provider tries to import public key into pkcs11 storage and fails. By default it tries to import the key as a session object into default slot(which is the first slot in `softhsm2-util --show-slots` list). In case when the first slot is aoscore, provider takes opened session from pool and operation succeeds, but when the default slot is aoscloud - it fails. As a temporary solution set default pin until investigation why pcks11-provider is used for cert verification(default provider should be able to handle verification). Signed-off-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko --- recipes-connectivity/openssl/files/openssl-engine.conf | 2 ++ recipes-connectivity/openssl/openssl_%.bbappend | 2 ++ 2 files changed, 4 insertions(+) diff --git a/recipes-connectivity/openssl/files/openssl-engine.conf b/recipes-connectivity/openssl/files/openssl-engine.conf index acb7e94a..a541b65a 100644 --- a/recipes-connectivity/openssl/files/openssl-engine.conf +++ b/recipes-connectivity/openssl/files/openssl-engine.conf @@ -17,4 +17,6 @@ module = @LEGACY_PROVIDER_PATH@ [pkcs11_sect] module = @PKCS11_PROVIDER_PATH@ pkcs11-module-path = @HSM_MODULE_PATH@ +pkcs11-module-cache-keys = false +pkcs11-module-token-pin = @PKCS11_PIN_PATH@ activate = 1 diff --git a/recipes-connectivity/openssl/openssl_%.bbappend b/recipes-connectivity/openssl/openssl_%.bbappend index e9139e93..31c067fe 100644 --- a/recipes-connectivity/openssl/openssl_%.bbappend +++ b/recipes-connectivity/openssl/openssl_%.bbappend @@ -5,12 +5,14 @@ SRC_URI += "file://openssl-engine.conf" PKCS11_PROVIDER_PATH ?= "${libdir}/ossl-modules/pkcs11.so" LEGACY_PROVIDER_PATH ?= "${libdir}/ossl-modules/legacy.so" HSM_MODULE_PATH ?= "${libdir}/softhsm/libsofthsm2.so" +PKCS11_PIN_PATH ?= "file:/var/aos/iam/.usrpin" do_install:append:class-target() { if ! grep -q "^\[pkcs11_sect\]" ${D}${sysconfdir}/ssl/openssl.cnf; then sed -e 's,@PKCS11_PROVIDER_PATH@,${PKCS11_PROVIDER_PATH},g' \ -e 's,@LEGACY_PROVIDER_PATH@,${LEGACY_PROVIDER_PATH},g' \ -e 's,@HSM_MODULE_PATH@,${HSM_MODULE_PATH},g' \ + -e 's,@PKCS11_PIN_PATH@,${PKCS11_PIN_PATH},g' \ ${WORKDIR}/openssl-engine.conf >> ${D}${sysconfdir}/ssl/openssl.cnf fi } From ff7f7af6b54d22457afd3a7cfc118353ebb26680 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 22 Jan 2026 15:54:19 +0200 Subject: [PATCH 069/104] recipes-aos: sm: add state, storage dirs to container config Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets --- recipes-aos/aos-servicemanager/files/sm.cfg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes-aos/aos-servicemanager/files/sm.cfg b/recipes-aos/aos-servicemanager/files/sm.cfg index 36314864..3133e989 100644 --- a/recipes-aos/aos-servicemanager/files/sm.cfg +++ b/recipes-aos/aos-servicemanager/files/sm.cfg @@ -10,7 +10,11 @@ "runtimes": [ { "plugin": "container", - "type": "runc" + "type": "runc", + "config": { + "stateDir": "/var/aos/states", + "storageDir": "/var/aos/storages" + } }, { "plugin": "rootfs", From b8eedf1731752f39a4f775cc04d8765eca276f59 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 27 Jan 2026 11:59:35 +0200 Subject: [PATCH 070/104] sdk: fix include conflicts Remove CM, SM, MP header files installation to prevent conflicts during SDK build. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager_git.bb | 6 ++++++ recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 6 ++++++ recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 83830c2b..cb8a8048 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -113,4 +113,10 @@ do_install:append() { fi } +do_install:append() { + # Do not install headers files to prevent SDK build conflicts + rm -rf ${D}${includedir} +} + + addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 27134ced..d850989b 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -87,4 +87,10 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-mp.service.d/10-aos-cm-service.conf } +do_install:append() { + # Do not install headers files to prevent SDK build conflicts + rm -rf ${D}${includedir} +} + + addtask update_config after do_install before do_package diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 14312241..1c709a86 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -154,4 +154,10 @@ do_install:append:aos-main-node() { install -m 0644 ${WORKDIR}/aos-cm-service.conf ${D}${sysconfdir}/systemd/system/aos-sm.service.d/10-aos-cm-service.conf } +do_install:append() { + # Do not install headers files to prevent SDK build conflicts + rm -rf ${D}${includedir} +} + + addtask update_config after do_install before do_package From bf439d2cc2e993f5002c2989d0b61c532a43c975 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 11 Feb 2026 19:19:40 +0200 Subject: [PATCH 071/104] recipes-aos: cm: bind CM server to all interfaces Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko --- recipes-aos/aos-communicationmanager/files/cm.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-aos/aos-communicationmanager/files/cm.cfg b/recipes-aos/aos-communicationmanager/files/cm.cfg index 99dcc284..5702d228 100644 --- a/recipes-aos/aos-communicationmanager/files/cm.cfg +++ b/recipes-aos/aos-communicationmanager/files/cm.cfg @@ -4,7 +4,7 @@ "serviceDiscoveryUrl": "https://aoscloud.io:9000/sd/v7/", "iamProtectedServerUrl": "main:8089", "iamPublicServerUrl": "main:8090", - "cmServerUrl": "main:8093", + "cmServerUrl": ":8093", "workingDir": "/var/aos/workdirs/cm", "storageDir": "/var/aos/storages", "stateDir": "/var/aos/states", From 076041114cd0b05bd54abee7127bbe5e3caab3bc Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 23 Feb 2026 12:37:55 +0200 Subject: [PATCH 072/104] recipes-aos: do not update CM server option CM server option should be defined in product meta layers and should not be updated automatically. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Solianko Reviewed-by: Mykola Kobets --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index cb8a8048..009afb38 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -73,10 +73,6 @@ python do_update_config() { data["iamProtectedServerUrl"]= node_hostname + ":8089" data["iamPublicServerUrl"] = node_hostname + ":8090" - # Update CM server - - data["cmServerUrl"] = node_hostname + ":8093" - # Update DNS IP dns_ip = d.getVar("AOS_DNS_IP") From efab5a3184f03cba5b0577b783aec7e4955ccb18 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Wed, 25 Feb 2026 10:18:45 +0200 Subject: [PATCH 073/104] recipes-extended: quota: add systemd service to enable rpc.quotad rpc.quotad daemon required to retrieve quotas on remote nodes on disk mounted by nfs. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Solianko Reviewed-by: Mykola Kobets --- recipes-extended/quota/files/rpc-rquotad.service | 14 ++++++++++++++ recipes-extended/quota/quota_%.bbappend | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 recipes-extended/quota/files/rpc-rquotad.service create mode 100644 recipes-extended/quota/quota_%.bbappend diff --git a/recipes-extended/quota/files/rpc-rquotad.service b/recipes-extended/quota/files/rpc-rquotad.service new file mode 100644 index 00000000..96545a24 --- /dev/null +++ b/recipes-extended/quota/files/rpc-rquotad.service @@ -0,0 +1,14 @@ +[Unit] +Description=Remote quota server +Documentation=man:rpc.rquotad(8) +Requires=rpcbind.service +PartOf=rpcbind.service +After=rpcbind.service + +[Service] +Type=forking +ExecStart=/usr/sbin/rpc.rquotad + +[Install] +WantedBy=multi-user.target +WantedBy=nfs-server.service diff --git a/recipes-extended/quota/quota_%.bbappend b/recipes-extended/quota/quota_%.bbappend new file mode 100644 index 00000000..06c1165b --- /dev/null +++ b/recipes-extended/quota/quota_%.bbappend @@ -0,0 +1,16 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI += " \ + file://rpc-rquotad.service \ +" + +inherit systemd + +SYSTEMD_SERVICE:${PN} = "rpc-rquotad.service" + +FILES:${PN} += "${systemd_system_unitdir}/rpc-rquotad.service" + +do_install:append() { + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/rpc-rquotad.service ${D}${systemd_system_unitdir} +} From b7a345737abce66a4190d2a5ae88feac66f9fea8 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Fri, 27 Feb 2026 15:33:46 +0200 Subject: [PATCH 074/104] Revert "recipes-aos: switch AosCore components to feature_unification branch" This reverts commit 8b2488ff64bbcce21a0d560e1f85e0f64ba6afec. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-communicationmanager/aos-communicationmanager_git.bb | 2 +- recipes-aos/aos-iamanager/aos-iamanager_git.bb | 2 +- recipes-aos/aos-messageproxy/aos-messageproxy_git.bb | 2 +- recipes-aos/aos-servicemanager/aos-servicemanager_git.bb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index 009afb38..f5cd4d38 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -3,7 +3,7 @@ DESCRIPTION = "AOS Communication Manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "feature_unification" +BRANCH = "develop" SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index d4283755..5363a714 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -6,7 +6,7 @@ DESCRIPTION = "AOS Identity and Access Manager CPP" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "feature_unification" +BRANCH = "develop" SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index d850989b..45a4153c 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -2,7 +2,7 @@ DESCRIPTION = "AOS Message Proxy" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "feature_unification" +BRANCH = "develop" SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 1c709a86..d23ed5ab 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -3,7 +3,7 @@ DESCRIPTION = "AOS Service Manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "feature_unification" +BRANCH = "develop" SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/aos_core_cpp.git;protocol=https;branch=${BRANCH}" From 1d37266dd6a5bddbfc289d63bd7c75688e071f10 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 5 Mar 2026 18:18:03 +0200 Subject: [PATCH 075/104] recipes-extended: start rpc-rquotad after network-online service rpc-rquotad doesn't work if started before network-online service. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko --- recipes-extended/quota/files/rpc-rquotad.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-extended/quota/files/rpc-rquotad.service b/recipes-extended/quota/files/rpc-rquotad.service index 96545a24..1df36140 100644 --- a/recipes-extended/quota/files/rpc-rquotad.service +++ b/recipes-extended/quota/files/rpc-rquotad.service @@ -3,7 +3,7 @@ Description=Remote quota server Documentation=man:rpc.rquotad(8) Requires=rpcbind.service PartOf=rpcbind.service -After=rpcbind.service +After=rpcbind.service network-online.target [Service] Type=forking From 979842d08185d32298d767a3b5d1d41275e7ad18 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 17 Mar 2026 14:20:30 +0200 Subject: [PATCH 076/104] openssl: update aos openssl configuration This patch moves aos related configuration from openssl-engine.conf to openssl-aos.cnf and includes it in openssl.cnf. And removes pkcs11 pin path option, as it is platform specific. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../{openssl-engine.conf => openssl-aos.cnf} | 1 - recipes-connectivity/openssl/openssl_%.bbappend | 16 +++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) rename recipes-connectivity/openssl/files/{openssl-engine.conf => openssl-aos.cnf} (88%) diff --git a/recipes-connectivity/openssl/files/openssl-engine.conf b/recipes-connectivity/openssl/files/openssl-aos.cnf similarity index 88% rename from recipes-connectivity/openssl/files/openssl-engine.conf rename to recipes-connectivity/openssl/files/openssl-aos.cnf index a541b65a..1d40283e 100644 --- a/recipes-connectivity/openssl/files/openssl-engine.conf +++ b/recipes-connectivity/openssl/files/openssl-aos.cnf @@ -18,5 +18,4 @@ module = @LEGACY_PROVIDER_PATH@ module = @PKCS11_PROVIDER_PATH@ pkcs11-module-path = @HSM_MODULE_PATH@ pkcs11-module-cache-keys = false -pkcs11-module-token-pin = @PKCS11_PIN_PATH@ activate = 1 diff --git a/recipes-connectivity/openssl/openssl_%.bbappend b/recipes-connectivity/openssl/openssl_%.bbappend index 31c067fe..be78e5b3 100644 --- a/recipes-connectivity/openssl/openssl_%.bbappend +++ b/recipes-connectivity/openssl/openssl_%.bbappend @@ -1,20 +1,18 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" -SRC_URI += "file://openssl-engine.conf" +SRC_URI += "file://openssl-aos.cnf" PKCS11_PROVIDER_PATH ?= "${libdir}/ossl-modules/pkcs11.so" LEGACY_PROVIDER_PATH ?= "${libdir}/ossl-modules/legacy.so" HSM_MODULE_PATH ?= "${libdir}/softhsm/libsofthsm2.so" -PKCS11_PIN_PATH ?= "file:/var/aos/iam/.usrpin" do_install:append:class-target() { - if ! grep -q "^\[pkcs11_sect\]" ${D}${sysconfdir}/ssl/openssl.cnf; then - sed -e 's,@PKCS11_PROVIDER_PATH@,${PKCS11_PROVIDER_PATH},g' \ - -e 's,@LEGACY_PROVIDER_PATH@,${LEGACY_PROVIDER_PATH},g' \ - -e 's,@HSM_MODULE_PATH@,${HSM_MODULE_PATH},g' \ - -e 's,@PKCS11_PIN_PATH@,${PKCS11_PIN_PATH},g' \ - ${WORKDIR}/openssl-engine.conf >> ${D}${sysconfdir}/ssl/openssl.cnf - fi + sed -e 's,@PKCS11_PROVIDER_PATH@,${PKCS11_PROVIDER_PATH},g' \ + -e 's,@LEGACY_PROVIDER_PATH@,${LEGACY_PROVIDER_PATH},g' \ + -e 's,@HSM_MODULE_PATH@,${HSM_MODULE_PATH},g' \ + ${WORKDIR}/openssl-aos.cnf > ${D}${sysconfdir}/ssl/openssl-aos.cnf + + echo ".include ${sysconfdir}/ssl/openssl-aos.cnf" >> ${D}${sysconfdir}/ssl/openssl.cnf } PREFERRED_VERSION_pkcs11-provider = "1.0" From 5d3cf3f17c5e2b3eaa62c78b4f505383ebc15e70 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 23 Mar 2026 19:26:21 +0200 Subject: [PATCH 077/104] recipes-support: add Aos root cert to ca-certificates recipe In yocto it is not enough to put root cert into specific directory. It should be updated then using update-ca-certificates tool. We can't call this tool in post inst script as we have readonly rootfs. ca-certificates recipe performs update certificates as it has access to sysroot update-ca-certificates tool. The proper way to deploy root cert to yocto rootfs is to add it in specifi directory as part of ca-certificates recipe. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko --- .../aos-communicationmanager_git.bb | 1 - .../aos-communicationmanager/files/cm.cfg | 2 +- .../aos-iamanager/aos-iamanager_git.bb | 1 - recipes-aos/aos-iamanager/files/iam.cfg | 2 +- recipes-aos/aos-messageproxy/files/mp.cfg | 2 +- recipes-aos/aos-rootca/aos-rootca.bb | 23 ------------- .../aos-servicemanager_git.bb | 1 - recipes-aos/aos-servicemanager/files/sm.cfg | 2 +- recipes-aos/aos-vis/aos-vis_git.bb | 1 - recipes-aos/aos-vis/files/aos_vis.cfg | 2 +- .../ca-certificates/AosRootCA.crt | 32 +++++++------------ .../ca-certificates_%.bbappend | 10 ++++++ 12 files changed, 26 insertions(+), 53 deletions(-) delete mode 100644 recipes-aos/aos-rootca/aos-rootca.bb rename recipes-aos/aos-rootca/files/Aos_Root_CA.pem => recipes-support/ca-certificates/ca-certificates/AosRootCA.crt (79%) create mode 100644 recipes-support/ca-certificates/ca-certificates_%.bbappend diff --git a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb index f5cd4d38..58a89a08 100644 --- a/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb +++ b/recipes-aos/aos-communicationmanager/aos-communicationmanager_git.bb @@ -48,7 +48,6 @@ PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl," PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," RDEPENDS:${PN} += " \ - aos-rootca \ nfs-exports \ " diff --git a/recipes-aos/aos-communicationmanager/files/cm.cfg b/recipes-aos/aos-communicationmanager/files/cm.cfg index 5702d228..c1af01d0 100644 --- a/recipes-aos/aos-communicationmanager/files/cm.cfg +++ b/recipes-aos/aos-communicationmanager/files/cm.cfg @@ -1,5 +1,5 @@ { - "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "caCert": "/usr/share/ca-certificates/aos/AosRootCA.crt", "certStorage": "cm", "serviceDiscoveryUrl": "https://aoscloud.io:9000/sd/v7/", "iamProtectedServerUrl": "main:8089", diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 5363a714..8ba0b260 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -47,7 +47,6 @@ FILES:${PN} += " \ " RDEPENDS:${PN} += " \ - aos-rootca \ aos-provfinish \ " diff --git a/recipes-aos/aos-iamanager/files/iam.cfg b/recipes-aos/aos-iamanager/files/iam.cfg index 59b61374..88181856 100644 --- a/recipes-aos/aos-iamanager/files/iam.cfg +++ b/recipes-aos/aos-iamanager/files/iam.cfg @@ -1,5 +1,5 @@ { - "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "caCert": "/usr/share/ca-certificates/aos/AosRootCA.crt", "certStorage": "iam", "iamProtectedServerUrl": ":8089", "iamPublicServerUrl": ":8090", diff --git a/recipes-aos/aos-messageproxy/files/mp.cfg b/recipes-aos/aos-messageproxy/files/mp.cfg index 8f5b98f9..3ee5c482 100644 --- a/recipes-aos/aos-messageproxy/files/mp.cfg +++ b/recipes-aos/aos-messageproxy/files/mp.cfg @@ -1,5 +1,5 @@ { - "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "caCert": "/usr/share/ca-certificates/aos/AosRootCA.crt", "certStorage": "sm", "workingDir": "/var/aos/workdirs/mp", "imageStoreDir": "/var/aos/workdirs/mp/images", diff --git a/recipes-aos/aos-rootca/aos-rootca.bb b/recipes-aos/aos-rootca/aos-rootca.bb deleted file mode 100644 index 3b570937..00000000 --- a/recipes-aos/aos-rootca/aos-rootca.bb +++ /dev/null @@ -1,23 +0,0 @@ -DESCRIPTION = "Aos root certificate" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" - -SRC_URI = " \ - file://Aos_Root_CA.pem \ -" - -S = "${WORKDIR}" - -FILES:${PN} = " \ - ${sysconfdir} \ -" - -RDEPENDS:${PN} += "\ - ca-certificates \ -" - -do_install() { - install -d ${D}${sysconfdir}/ssl/certs - install -m 0644 ${S}/Aos_Root_CA.pem ${D}${sysconfdir}/ssl/certs/ -} diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index d23ed5ab..4538b46b 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -51,7 +51,6 @@ PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" RDEPENDS:${PN} += " \ - aos-rootca \ iptables \ quota \ cni \ diff --git a/recipes-aos/aos-servicemanager/files/sm.cfg b/recipes-aos/aos-servicemanager/files/sm.cfg index 3133e989..a4929fbb 100644 --- a/recipes-aos/aos-servicemanager/files/sm.cfg +++ b/recipes-aos/aos-servicemanager/files/sm.cfg @@ -1,5 +1,5 @@ { - "caCert": "/etc/ssl/certs/Aos_Root_CA.pem", + "caCert": "/usr/share/ca-certificates/aos/AosRootCA.crt", "certStorage": "sm", "iamProtectedServerUrl": "aosiam:8089", "iamPublicServerUrl": "aosiam:8090", diff --git a/recipes-aos/aos-vis/aos-vis_git.bb b/recipes-aos/aos-vis/aos-vis_git.bb index 6b92f5fc..e8c17639 100644 --- a/recipes-aos/aos-vis/aos-vis_git.bb +++ b/recipes-aos/aos-vis/aos-vis_git.bb @@ -44,7 +44,6 @@ FILES:${PN} += " \ " RDEPENDS:${PN} += " \ - aos-rootca \ ${@bb.utils.contains('AOS_VIS_DATA_PROVIDER', 'telemetryemulatoradapter', 'telemetry-emulator', '', d)} \ " diff --git a/recipes-aos/aos-vis/files/aos_vis.cfg b/recipes-aos/aos-vis/files/aos_vis.cfg index f9e46830..605ff5eb 100644 --- a/recipes-aos/aos-vis/files/aos_vis.cfg +++ b/recipes-aos/aos-vis/files/aos_vis.cfg @@ -1,5 +1,5 @@ { - "CACert": "/etc/ssl/certs/Aos_Root_CA.pem", + "CACert": "/usr/share/ca-certificates/aos/AosRootCA.crt", "VISServerURL": ":443", "VISCert": "/usr/share/aos/vis/certs/wwwivi.crt.pem", "VISKey": "/usr/share/aos/vis/certs/wwwivi.key.pem", diff --git a/recipes-aos/aos-rootca/files/Aos_Root_CA.pem b/recipes-support/ca-certificates/ca-certificates/AosRootCA.crt similarity index 79% rename from recipes-aos/aos-rootca/files/Aos_Root_CA.pem rename to recipes-support/ca-certificates/ca-certificates/AosRootCA.crt index ef163c2f..543dd61b 100644 --- a/recipes-aos/aos-rootca/files/Aos_Root_CA.pem +++ b/recipes-support/ca-certificates/ca-certificates/AosRootCA.crt @@ -1,17 +1,4 @@ -----BEGIN CERTIFICATE----- -MIIB9jCCAX2gAwIBAgIUJiJIopZeqXR/Sy+S38HCM4R+IA4wCgYIKoZIzj0EAwMw -OzERMA8GA1UECgwIRVBBTSBJbmMxDDAKBgNVBAsMA0FvczEYMBYGA1UEAwwPQW9z -RWRnZSBSb290IENBMB4XDTI0MTIyNjEyMDExM1oXDTQ0MTIyMTEyMDExM1owOzER -MA8GA1UECgwIRVBBTSBJbmMxDDAKBgNVBAsMA0FvczEYMBYGA1UEAwwPQW9zRWRn -ZSBSb290IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYXvRxDhY0eeJx1KjFAtH -heMLTPKPHviav8XtbZZz/OIj+7xwC3EhDq+Y8cwzuZvqWM9ZmPcD52DNx7hg1oOc -T4WXri1G1ga49iqDJhR9BcdCBhvMUOIKCj2Io0dhJ/r6o0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQU+SBVz9bppAZGuUCxj1iJ -+Qgyd38wCgYIKoZIzj0EAwMDZwAwZAIwGo3tCLKyVJL57RAJmQ7+ZO2sRvAAas82 -7cbowyJBTZmR4WVDNcDHrKv5zNvWNZ1XAjA/dbxBlaZKN132ULvkOcNe1IXADtOP -hYQ0VMoHFIo5LOyzsJCdiaUQkksyKPQkxtY= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- MIIEAjCCAuqgAwIBAgIJAPwk2NFfSDPjMA0GCSqGSIb3DQEBCwUAMIGNMRcwFQYD VQQDDA5GdXNpb24gUm9vdCBDQTEpMCcGCSqGSIb3DQEJARYadm9sb2R5bXlyX2Jh YmNodWtAZXBhbS5jb20xDTALBgNVBAoMBEVQQU0xHDAaBgNVBAsME05vdnVzIE9y @@ -36,12 +23,15 @@ VHEOzvaGk9miP6nBrDfNv7mIkgEKARrjjSpmJasIEU+mNtzeOIEiMtW1EMRc457o 0PdFI3jseyLVPVhEzUkuC7mwjb7CeQ== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIBdzCCAR2gAwIBAgIUSWWq88ZtNjcD1qScBtThMuKlk5YwCgYIKoZIzj0EAwIw -GjEYMBYGA1UEAwwPQW9zRWRnZSBSb290IENBMCAXDTI0MTIyMDA5MjkwNloYDzIw -NTQxMjEzMDkyOTA2WjAaMRgwFgYDVQQDDA9Bb3NFZGdlIFJvb3QgQ0EwWTATBgcq -hkjOPQIBBggqhkjOPQMBBwNCAAQgaFpO9TjXW/K3y4GwFTi+y+Rb36nxwWVJqnk3 -IwEihvbssFYp+dwmMX2sGGkJy+dS66LohSTRIR/L6WuC6341oz8wPTAPBgNVHRMB -Af8EBTADAQH/MB0GA1UdDgQWBBRB329EoluTc3waQPwT1ig9zD+zbDALBgNVHQ8E -BAMCAYYwCgYIKoZIzj0EAwIDSAAwRQIgDLJnJy86bVImRIGz4vJ9UfUC/hLc5VpQ -AqrFOYwtG4ICIQCfS6XNFk8BMb/lbzMjyoVnt0ONhvpWuD+bGI/rxCrPLQ== +MIIB9jCCAX2gAwIBAgIUJiJIopZeqXR/Sy+S38HCM4R+IA4wCgYIKoZIzj0EAwMw +OzERMA8GA1UECgwIRVBBTSBJbmMxDDAKBgNVBAsMA0FvczEYMBYGA1UEAwwPQW9z +RWRnZSBSb290IENBMB4XDTI0MTIyNjEyMDExM1oXDTQ0MTIyMTEyMDExM1owOzER +MA8GA1UECgwIRVBBTSBJbmMxDDAKBgNVBAsMA0FvczEYMBYGA1UEAwwPQW9zRWRn +ZSBSb290IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYXvRxDhY0eeJx1KjFAtH +heMLTPKPHviav8XtbZZz/OIj+7xwC3EhDq+Y8cwzuZvqWM9ZmPcD52DNx7hg1oOc +T4WXri1G1ga49iqDJhR9BcdCBhvMUOIKCj2Io0dhJ/r6o0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQU+SBVz9bppAZGuUCxj1iJ ++Qgyd38wCgYIKoZIzj0EAwMDZwAwZAIwGo3tCLKyVJL57RAJmQ7+ZO2sRvAAas82 +7cbowyJBTZmR4WVDNcDHrKv5zNvWNZ1XAjA/dbxBlaZKN132ULvkOcNe1IXADtOP +hYQ0VMoHFIo5LOyzsJCdiaUQkksyKPQkxtY= -----END CERTIFICATE----- diff --git a/recipes-support/ca-certificates/ca-certificates_%.bbappend b/recipes-support/ca-certificates/ca-certificates_%.bbappend new file mode 100644 index 00000000..74a929cd --- /dev/null +++ b/recipes-support/ca-certificates/ca-certificates_%.bbappend @@ -0,0 +1,10 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/ca-certificates:" + +SRC_URI += " \ + file://AosRootCA.crt \ +" + +do_install:prepend() { + install -d ${D}${datadir}/ca-certificates/aos + install -m 0644 ${WORKDIR}/AosRootCA.crt ${D}${datadir}/ca-certificates/aos +} From 295479003c0fd4b008bbce9a35166f561b6526b4 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Mon, 6 Apr 2026 17:50:39 +0300 Subject: [PATCH 078/104] classes: remove unused bbclass files Remove bundle-generator.bbclass and metadata-generator.bbclass as metadata generation is moved to unified Python scripts. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- classes/bundle-generator.bbclass | 9 -- classes/metadata-generator.bbclass | 169 ----------------------------- 2 files changed, 178 deletions(-) delete mode 100644 classes/bundle-generator.bbclass delete mode 100644 classes/metadata-generator.bbclass diff --git a/classes/bundle-generator.bbclass b/classes/bundle-generator.bbclass deleted file mode 100644 index 573ef356..00000000 --- a/classes/bundle-generator.bbclass +++ /dev/null @@ -1,9 +0,0 @@ -# This class contains functions to generate update bundle - -AOS_BUNDLE_DIR ??= "${DEPLOY_DIR_IMAGE}/update" -AOS_BUNDLE_FILE ??= "${IMAGE_BASENAME}-${MACHINE}-${PV}.bundle.tar" -AOS_BUNDLE_WORK_DIR ??= "${WORKDIR}/update" - -do_pack_bundle() { - tar cf ${AOS_BUNDLE_DIR}/${AOS_BUNDLE_FILE} -C ${AOS_BUNDLE_WORK_DIR}/ . -} diff --git a/classes/metadata-generator.bbclass b/classes/metadata-generator.bbclass deleted file mode 100644 index 686a6dbe..00000000 --- a/classes/metadata-generator.bbclass +++ /dev/null @@ -1,169 +0,0 @@ -# This class contains functions to generate uppdate bundle metadata - -# Update bundle metadata - -def create_dep(id, required_version, min_version=None, max_version=None): - FIELD_ID = "id" - FIELD_REQUIRED_VERSION = "requiredVersion" - FIELD_MIN_VERSION = "minVersion" - FIELD_MAX_VERSION = "maxVersion" - - if required_version and (min_version or max_version): - raise RuntimeError( - "{} should not be set along with {} or {}".format(FIELD_REQUIRED_VERSION, FIELD_MIN_VERSION, FIELD_MAX_VERSION)) - - return {FIELD_ID: id, FIELD_REQUIRED_VERSION: required_version, FIELD_MIN_VERSION: min_version, FIELD_MAX_VERSION: max_version} - - -def create_component_metadata(id, file_name, version, description=None, install_dep=None, runtime_deps=None, annotations=None, download_ttl=None): - FIELD_ID = "id" - FIELD_FILE_NAME = "fileName" - FIELD_VERSION = "version" - FIELD_DESCRIPTION = "description" - FIELD_REQUIRED_VERSION = "requiredVersion" - FIELD_MIN_VERSION = "minVersion" - FIELD_MAX_VERSION = "maxVersion" - FIELD_RUNTIME_DEPS = "runtimeDependencies" - FIELD_ANNOTATIONS = "annotations" - FIELD_DOWNLOAD_TTL = "downloadTTL" - - # check mandatory fields - if not id or not file_name or not version: - raise RuntimeError( - "mandatory field ({} or {} or {}) is missing".format(FIELD_ID, FIELD_FILE_NAME, FIELD_VERSION)) - - component = {FIELD_ID: id, FIELD_FILE_NAME: file_name, - FIELD_VERSION: version, FIELD_DESCRIPTION: description, FIELD_ANNOTATIONS: annotations, - FIELD_DOWNLOAD_TTL: download_ttl} - - # install dep - if install_dep: - if not isinstance(install_dep, dict): - raise RuntimeError( - "install_deps should be dictionary") - - if install_dep.get(FIELD_REQUIRED_VERSION) and (install_dep.get(FIELD_MIN_VERSION) or install_dep.get(FIELD_MAX_VERSION)): - raise RuntimeError( - "{} should not be set along with {} or {}".format(FIELD_REQUIRED_VERSION, FIELD_MIN_VERSION, FIELD_MAX_VERSION)) - - install_deps_id = install_dep.get(FIELD_ID) - - if install_deps_id and install_deps_id != id: - raise RuntimeError( - "install deps {} should be equal to item {}".format(FIELD_ID, FIELD_ID)) - - component[FIELD_REQUIRED_VERSION] = install_dep.get( - FIELD_REQUIRED_VERSION) - component[FIELD_MIN_VERSION] = install_dep.get(FIELD_MIN_VERSION) - component[FIELD_MAX_VERSION] = install_dep.get(FIELD_MAX_VERSION) - - # runtime deps - if runtime_deps: - if not isinstance(runtime_deps, list): - raise RuntimeError( - "runtime_deps should be list") - - component[FIELD_RUNTIME_DEPS] = [] - - for dep in runtime_deps: - if not isinstance(dep, dict): - raise RuntimeError( - "runtime_deps item should be dict") - - if not dep.get(FIELD_ID): - raise RuntimeError( - "missing mandatory field {} in runtime deps".format(FIELD_ID)) - - if dep.get(FIELD_REQUIRED_VERSION) and (dep.get(FIELD_MIN_VERSION) or dep.get(FIELD_MAX_VERSION)): - raise RuntimeError( - "{} should not be set along with {} or {}".format(FIELD_REQUIRED_VERSION, FIELD_MIN_VERSION, FIELD_MAX_VERSION)) - - component[FIELD_RUNTIME_DEPS].append( - {FIELD_ID: dep.get(FIELD_ID), FIELD_REQUIRED_VERSION: dep.get(FIELD_REQUIRED_VERSION), - FIELD_MIN_VERSION: dep.get(FIELD_MIN_VERSION), FIELD_MAX_VERSION: dep.get(FIELD_MAX_VERSION)}) - - return component - -def remove_empty_elements(metadata): - def empty(value): - return not value or value == {} or value == [] - - if not isinstance(metadata, (dict, list)): - return metadata - elif isinstance(metadata, list): - return [value for value in (remove_empty_elements(value) for value in metadata) if not empty(value)] - else: - return {key: value for key, value in ((key, remove_empty_elements(value)) for key, value in metadata.items()) if not empty(value)} - -def write_image_metadata(output_dir, components): - import os - import json - - FORMAT_VERSION = 1 - METADATA_FILE_NAME = "metadata.json" - - FIELD_FORMAT_VERSION = "formatVersion" - FIELD_COMPONENTS = "components" - - # check mandatory fields - if not components: - raise RuntimeError( - "mandatory field ({}) is missing".format(FIELD_COMPONENTS)) - - if not isinstance(components, list): - raise RuntimeError( - "components should be list") - - for component in components: - if not isinstance(component, dict): - raise RuntimeError( - "components item should be dict") - - metadata = {FIELD_FORMAT_VERSION: FORMAT_VERSION, FIELD_COMPONENTS: components} - - metadata = remove_empty_elements(metadata) - - with open(os.path.join(output_dir, METADATA_FILE_NAME), 'w') as outfile: - json.dump(metadata, outfile, indent=4) - -# Layer metadata - -def create_layer_platform_info(arch, os, os_version, os_features): - FIELD_ARCH = "architecture" - FIELD_OS = "os" - FIELD_OS_VERSION = "osVersion" - FIELD_OS_FEATURES = "osFeatures" - - return {FIELD_ARCH : arch, FIELD_OS: os, FIELD_OS_VERSION: os_version, FIELD_OS_FEATURES: os_features} - -def create_layer_annotations(layer_id, parent_layer_id=None, parent_layer_digest=None): - FIELD_LAYER_ID = "layerId" - FIELD_PARENT_LAYER_ID = "parrentLayerId" - FIELD_PARENT_LAYER_DIGEST = "parrentLayerDigest" - - return {FIELD_LAYER_ID : layer_id, FIELD_PARENT_LAYER_ID: parent_layer_id, FIELD_PARENT_LAYER_DIGEST: parent_layer_digest} - -def write_layer_metadata(output_dir, media_type, digest, size, platform_info=None, annotations=None): - import os - import json - - FIELD_MEDIATYPE = "mediaType" - FIELD_DIGEST = "digest" - FIELD_SIZE = "size" - FIELD_PLATFORM = "platform" - FIELD_ANNOTATIONS = "annotations" - - METADATA_FILE_NAME = "metadata.json" - - # check mandatory fields - if not media_type or not digest or not size: - raise RuntimeError( - "mandatory field ({} or {} or {}) is missing".format(FIELD_MEDIATYPE, FIELD_DIGEST, FIELD_SIZE)) - - metadata = {FIELD_MEDIATYPE: media_type, FIELD_DIGEST: digest, FIELD_SIZE: size, - FIELD_PLATFORM: platform_info, FIELD_ANNOTATIONS: annotations} - - metadata = remove_empty_elements(metadata) - - with open(os.path.join(output_dir, METADATA_FILE_NAME), 'w') as outfile: - json.dump(metadata, outfile, indent=4) From feaf07e9a525886f029761ae316ec44d0652efdc Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 9 Apr 2026 08:00:38 +0300 Subject: [PATCH 079/104] scripts: add unified metadata builder module Add metadata_builder.py with Pydantic-based data models for AOS update items. Provides BundleBuilder class that organizes build artifacts into per-item subdirectories and generates config.yaml metadata with publisher and publish configuration. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- scripts/metadata_builder.py | 278 ++++++++++++++++++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 scripts/metadata_builder.py diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py new file mode 100644 index 00000000..a1db6064 --- /dev/null +++ b/scripts/metadata_builder.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python3 +"""Unified metadata module for AOS update items (layers and components).""" + +import os +from typing import List, Literal, Optional + +import yaml +from moulin import rouge +from pydantic import BaseModel, Field + +LAYER_MEDIA_TYPE = "application/vnd.oci.image.layer.v1.tar+gzip" +COMPONENT_FULL_MEDIA_TYPE = "vnd.aos.image.component.full.v1+gzip" +COMPONENT_INC_MEDIA_TYPE = "vnd.aos.image.component.inc.v1+gzip" + +ItemType = Literal["layer", "component", "service"] + + +class AosArchInfo(BaseModel): + """CPU architecture information.""" + + architecture: str # amd64, arm64, arm + variant: Optional[str] = None + + +class AosOsInfo(BaseModel): + """Operating system information.""" + + os: str = "linux" + version: Optional[str] = None + features: Optional[List[str]] = None + + +class AosIdentity(BaseModel): + """AOS object identifier.""" + + codename: str + type: ItemType + title: Optional[str] = None + description: Optional[str] = None + + +class AosImage(BaseModel): + """Image information for an update item.""" + + media_type: str = Field(alias="mediaType") + arch_info: AosArchInfo = Field(alias="archInfo") + os_info: AosOsInfo = Field(default_factory=AosOsInfo, alias="osInfo") + source_folder: Optional[str] = Field(default=None, alias="sourceFolder") + path: Optional[str] = None + + class Config: + populate_by_name = True + + +class AosDependencyIdentity(BaseModel): + """Identity for dependency reference.""" + + codename: str + type: ItemType + + +class AosDependency(BaseModel): + """Dependency on another AOS object.""" + + identity: AosDependencyIdentity + versions: str # semver constraint, e.g., ">=1.0.0", "5.2.1" + + +class AosUpdateItem(BaseModel): + """Single update item (layer, component, or service).""" + + identity: AosIdentity + version: str + images: List[AosImage] + dependencies: Optional[List[AosDependency]] = None + + +class AosPublisher(BaseModel): + """Publisher information.""" + + company: Optional[str] = None + author: Optional[str] = None + + +class AosPublish(BaseModel): + """Publish configuration.""" + + tls_key: Optional[str] = Field(default=None, alias="tlsKey") + domain: Optional[str] = None + + class Config: + populate_by_name = True + + +class AosUploadMetaConfig(BaseModel): + """Root configuration for update items upload.""" + + schema_version: int = Field(default=2, alias="schemaVersion") + publisher: Optional[AosPublisher] = None + publish: Optional[AosPublish] = None + items: List[AosUpdateItem] + + class Config: + populate_by_name = True + + +def write_config_yaml(config: AosUploadMetaConfig, output_path: str) -> None: + """Write AosUploadMetaConfig to YAML file.""" + + data = config.model_dump(by_alias=True, exclude_none=True) + + with open(output_path, "w", encoding="utf-8") as f: + yaml.dump( + data, f, default_flow_style=False, sort_keys=False, allow_unicode=True + ) + + +class BundleBuilder: + """Builder for creating update metadata and organizing output artifacts.""" + + def __init__(self, conf: rouge.YamlValue, item_type: ItemType) -> None: + self._item_type = item_type + self._conf = conf + + self._machine = conf.get("machine", "genericx86-64").as_str + self._architecture = conf.get("architecture", "amd64").as_str + self._os = conf.get("os", "linux").as_str + self._output_dir = os.path.abspath( + conf.get("output_dir", "../output").as_str + ) + + publisher_conf = conf.get("publisher", None) + self._publisher = None + if publisher_conf: + company = publisher_conf.get("company", None) + author = publisher_conf.get("author", None) + self._publisher = AosPublisher( + company=company.as_str if company else None, + author=author.as_str if author else None, + ) + + publish_conf = conf.get("publish", None) + self._publish = None + if publish_conf: + tls_key = publish_conf.get("tlsKey", None) + domain = publish_conf.get("domain", None) + self._publish = AosPublish( + tlsKey=tls_key.as_str if tls_key else None, + domain=domain.as_str if domain else None, + ) + + self._items: List[AosUpdateItem] = [] + + def prepare(self) -> None: + """Prepare output directory.""" + + os.makedirs(self._output_dir, exist_ok=True) + + def add_item(self, item: AosUpdateItem) -> None: + """Add update item.""" + + self._items.append(item) + + def add_item_from_conf(self, name: str, item_conf: rouge.YamlValue) -> bool: + """Create and add item from config. Returns True on success.""" + + version = item_conf.get("version", "1.0.0").as_str + codename = item_conf.get("codename", name).as_str + os_name = item_conf.get("os", self._os).as_str + architecture = item_conf.get("architecture", self._architecture).as_str + + archive_path = self._find_archive(name, item_conf) + if not archive_path: + print(f"Warning: Archive not found for: {name}") + + return False + + rel_path = os.path.relpath(archive_path, self._output_dir) + image = self._create_image(rel_path, architecture, os_name) + + title = item_conf.get("title", None) + description = item_conf.get("description", None) + item = AosUpdateItem( + identity=AosIdentity( + codename=codename, + type=self._item_type, + title=title.as_str if title else None, + description=description.as_str if description else None, + ), + version=version, + images=[image], + dependencies=self._create_dependencies(item_conf), + ) + + self._items.append(item) + + return True + + def _find_archive( + self, name: str, item_conf: rouge.YamlValue + ) -> Optional[str]: + """Find built archive in item subdirectory.""" + + version = item_conf.get("version", "1.0.0").as_str + os_name = item_conf.get("os", self._os).as_str + architecture = item_conf.get("architecture", self._architecture).as_str + item_dir = os.path.join(self._output_dir, name) + + if not os.path.isdir(item_dir): + return None + + filename = f"{os_name}-{architecture}-{version}.tar.gz" + filepath = os.path.join(item_dir, filename) + + if os.path.exists(filepath): + return filepath + + # Fallback: find any tar.gz in the directory + for fname in os.listdir(item_dir): + if fname.endswith(".tar.gz"): + return os.path.join(item_dir, fname) + + return None + + def _create_image(self, path: str, architecture: str, os_name: str) -> AosImage: + """Create AosImage based on item type.""" + + if self._item_type == "layer": + media_type = LAYER_MEDIA_TYPE + else: + media_type = COMPONENT_FULL_MEDIA_TYPE + + return AosImage( + mediaType=media_type, + path=path, + archInfo=AosArchInfo(architecture=architecture), + osInfo=AosOsInfo(os=os_name), + ) + + def _create_dependencies( + self, item_conf: rouge.YamlValue + ) -> Optional[List[AosDependency]]: + """Create dependencies list from config.""" + + deps_conf = item_conf.get("dependencies", None) + if not deps_conf: + return None + + dependencies = [] + for dep in deps_conf: + dependencies.append( + AosDependency( + identity=AosDependencyIdentity( + codename=dep["codename"].as_str, + type=dep.get("type", "component").as_str, + ), + versions=dep["versions"].as_str, + ) + ) + + return dependencies if dependencies else None + + def build(self) -> None: + """Write config.yaml to output_dir/.""" + + if not self._items: + print("No items to bundle") + + return + + config = AosUploadMetaConfig( + items=self._items, + publisher=self._publisher, + publish=self._publish, + ) + config_path = os.path.join(self._output_dir, "config.yaml") + write_config_yaml(config, config_path) + print(f"Created: {config_path}") From 70f2de73a709ded78cb59b3c39575aae1386766c Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 9 Apr 2026 08:00:47 +0300 Subject: [PATCH 080/104] scripts: refactor layer_builder to use metadata builder Use BundleBuilder for metadata generation. Each layer is built into its own subdirectory under output_dir/layers/. Layer directory is cleared before each build. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- scripts/layer_builder.py | 96 ++++++++++++++++++++++++++++------------ 1 file changed, 67 insertions(+), 29 deletions(-) diff --git a/scripts/layer_builder.py b/scripts/layer_builder.py index 2e764655..859a4f58 100755 --- a/scripts/layer_builder.py +++ b/scripts/layer_builder.py @@ -1,54 +1,92 @@ #!/usr/bin/env python3 -"""Script for building Aos layers""" +"""Script for building AOS layers with unified metadata generation.""" + import argparse import os +import shutil import sys import yaml from bitbake import call_bitbake +from metadata_builder import BundleBuilder +from moulin import rouge -def main(): - """Main function""" - ret = 0 +def build_layer( + layers_conf: rouge.YamlValue, + layer_conf: rouge.YamlValue, + layer_dir: str, +) -> int: + """Build a single layer using bitbake into its own subdirectory.""" + + if os.path.exists(layer_dir): + shutil.rmtree(layer_dir) + os.makedirs(layer_dir) + + bbake_conf = [ + ("AOS_BASE_IMAGE", layers_conf["base_image"].as_str), + ("AOS_LAYER_DEPLOY_DIR", layer_dir), + ] - parser = argparse.ArgumentParser(description="Layer builder") + version = layer_conf.get("version", None) + if version: + bbake_conf.append(("AOS_LAYER_VERSION", version.as_str)) + + return call_bitbake( + layers_conf.get("work_dir", "workdir").as_str, + layers_conf.get("yocto_dir", "yocto").as_str, + layers_conf.get("build_dir", "build").as_str, + layer_conf["target"].as_str, + bbake_conf, + ) + + +def main(): + """Main function.""" + parser = argparse.ArgumentParser(description="AOS Layer builder") parser.add_argument( "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" ) - args = parser.parse_args() - with open(args.conf, "r", encoding="utf-8") as conf_file: - conf = yaml.load(conf_file, Loader=yaml.CLoader) + with open(args.conf, "r", encoding="utf-8") as f: + conf = rouge.YamlValue(yaml.compose(f)) + + layers_conf = conf.get("layers", conf) + + builder = BundleBuilder(layers_conf, "layer") + builder.prepare() + + ret = 0 + items = layers_conf["items"] + + for name in items.keys(): + item_conf = items[name] + + if not item_conf.get("enabled", True).as_bool: + continue + + print(f"Building layer: {name}") + + layer_dir = os.path.join(builder._output_dir, name) + result = build_layer(layers_conf, item_conf, layer_dir) - layers_conf = conf["layers"] + if result != 0: + print(f"Failed to build layer: {name}") - for layer in layers_conf["items"]: - layer_conf = layers_conf["items"][layer] + ret = result + else: + builder.add_item_from_conf(name, item_conf) - bbake_conf = [ - ("AOS_BASE_IMAGE", layers_conf["base_image"]), - ( - "AOS_LAYER_DEPLOY_DIR", - os.path.abspath(layers_conf.get("output_dir", "../output/layers")), - ), - ] + if ret != 0: + print("Some layers failed to build") - if layer_conf.get("enabled", True): - result = call_bitbake( - conf.get("work_dir", "workdir"), - layers_conf.get("yocto_dir", "yocto"), - layers_conf.get("build_dir", "build"), - layer_conf["target"], - bbake_conf, - ) + return ret - if result != 0: - ret = result + builder.build() - return ret + return 0 if __name__ == "__main__": From db9ca5874ffc71473a140cd2e46c17926104e654 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 9 Apr 2026 08:00:57 +0300 Subject: [PATCH 081/104] scripts: refactor fota_builder to use metadata builder Use BundleBuilder for metadata generation. Each component is built into its own subdirectory under output_dir/fota/. Incremental type is now determined per-item from config instead of per-bundle. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- scripts/fota_builder.py | 352 +++++++++++++++++++++------------------- 1 file changed, 184 insertions(+), 168 deletions(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index de62eeab..f1c68aa7 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -1,100 +1,72 @@ #!/usr/bin/env python3 -"""Create fota archive""" +"""Script for building AOS components with unified metadata generation.""" + import argparse -import json import os import shutil import subprocess import sys -from pathlib import Path import yaml from bitbake import call_bitbake +from metadata_builder import ( + COMPONENT_FULL_MEDIA_TYPE, + COMPONENT_INC_MEDIA_TYPE, + AosArchInfo, + AosDependency, + AosDependencyIdentity, + AosIdentity, + AosImage, + AosOsInfo, + AosUpdateItem, + BundleBuilder, +) from moulin import rouge class FotaError(Exception): - """Exception raised for errors during creating FOTA archive - - Attributes: - error code -- Error code - message -- explanation of the error - """ + """Exception raised for errors during creating FOTA archive.""" def __init__(self, error_code, message="FOTA error"): self.code = error_code self.message = f"{message} ({self.code})" - super().__init__(self.message) -class FotaBuilder: - """Create fota archive class""" +class ComponentBuilder: + """Builder for individual AOS components.""" - def __init__(self, conf, verbose) -> None: + def __init__(self, conf: rouge.YamlValue, output_dir: str) -> None: + self._conf = conf self._work_dir = conf["work_dir"].as_str - self._components = conf["components"] - self._verbose = verbose - self._bundle_name = conf["target_images"][0].as_str - self._metadata = {"formatVersion": 2, "components": []} - self._bundle_dir = os.path.join(self._work_dir, "bundle") - - def create_bundle(self): - """Create bundle from prepared files""" + self._output_dir = output_dir - self._mkdir(os.path.dirname(self._bundle_name)) + def build_component(self, name: str, comp_conf: rouge.YamlValue) -> str: + """Build component and return path to the built file.""" + method = comp_conf["method"].as_str + comp_type = comp_conf.get("componentType", name).as_str + version = comp_conf["version"].as_str - args = ["tar", "-cf", self._bundle_name, "-C", self._bundle_dir, "."] + filename = comp_conf.get("fileName", f"{comp_type}-{version}.img").as_str - self._run_cmd(args) + # Create per-component subdirectory + comp_dir = os.path.join(self._output_dir, name) + os.makedirs(comp_dir, exist_ok=True) - def process_component(self, component, conf): - """Process component "component" """ - metadata = self._create_component_metadata(component, conf) - work_dir = os.path.join(self._work_dir, "components", metadata["type"]) - method = conf["method"].as_str + work_dir = os.path.join(self._work_dir, "components", comp_type) if method == "raw": - self._do_raw_component(work_dir, metadata, conf) + self._do_raw_component(work_dir, comp_dir, filename, comp_conf) elif method == "overlay": - self._do_overlay_component(work_dir, metadata, conf) + self._do_overlay_component( + work_dir, comp_dir, filename, comp_type, version, comp_conf + ) elif method == "custom": - self._do_custom_component(metadata, conf) - - self._metadata["components"].append(metadata) - - def create_metadata(self): - """Create metadata file in bundle directory""" - metadata_file_name = os.path.join(self._bundle_dir, "metadata.json") - - with open(metadata_file_name, "w", encoding="utf-8") as metadata_file: - json.dump(self._metadata, metadata_file, indent=4) - - def get_components(self): - """Get dictionary with components configuration""" - return self._components - - def prepare_bundle_dir(self): - """Prepare empty temporary dir for bundle""" - self._prepare_dir(self._bundle_dir) - - def _run_cmd(self, args): - if self._verbose: - print("Running:", " ".join(args)) - - ret = subprocess.run(args, check=True) - if ret.returncode != 0: - raise FotaError(ret.returncode) + self._do_custom_component(comp_dir, filename, comp_conf) - def _do_copy(self, src, dst): - if self._verbose: - print(f"Copy from {src} to {dst}") + return os.path.join(name, filename) - args = ["cp", "-Lf", src, dst] - - self._run_cmd(args) - - def _prepare_dir(self, wdir): + def _prepare_dir(self, wdir: str) -> None: if os.path.exists(wdir): if os.path.isfile(wdir): os.remove(wdir) @@ -103,61 +75,23 @@ def _prepare_dir(self, wdir): os.makedirs(wdir, exist_ok=True) - def _mkdir(self, new_dir): - Path(new_dir).mkdir(parents=True, exist_ok=True) - - def _update_metadata_var(self, conf, varname, metadata): - var = conf.get(varname, None) - - if var: - metadata[varname] = var.as_str - - def _add_runtime_dependencies(self, conf, metadata): - runtime_deps = conf.get("runtimeDependencies", []) - - if len(runtime_deps) == 0: - return + def _run_cmd(self, args: list) -> None: + print("Running:", " ".join(args)) - meta_dependencies = [] - - for dependency in runtime_deps: - if len(dependency) == 0: - continue - - meta_dependency = { - "type": dependency["componentType"].as_str, - "requiredVersion": dependency.get("requiredVersion", "").as_str, - "minVersion": dependency.get("minVersion", "").as_str, - "maxVersion": dependency.get("maxVersion", "").as_str, - } - - # Add dependency with non-empty values only - meta_dependencies.append({k: v for k, v in meta_dependency.items() if v}) - - metadata["runtimeDependencies"] = meta_dependencies - - def _create_component_metadata(self, component, conf): - metadata = { - "type": conf.get("componentType", component).as_str, - "version": conf["version"].as_str, - } - metadata["fileName"] = conf.get( - "fileName", f'{metadata["type"]}-{metadata["version"]}.img' - ).as_str - - self._update_metadata_var(conf, "requiredVersion", metadata) - self._update_metadata_var(conf, "minVersion", metadata) - self._update_metadata_var(conf, "maxVersion", metadata) - self._update_metadata_var(conf, "description", metadata) - self._update_metadata_var(conf, "annotations", metadata) - self._update_metadata_var(conf, "downloadTTL", metadata) + ret = subprocess.run(args, check=True) + if ret.returncode != 0: + raise FotaError(ret.returncode) - self._add_runtime_dependencies(conf, metadata) + def _do_copy(self, src: str, dst: str) -> None: + print(f"Copy from {src} to {dst}") + args = ["cp", "-Lf", src, dst] + self._run_cmd(args) - return metadata + def _do_raw_component( + self, work_dir: str, comp_dir: str, filename: str, conf: rouge.YamlValue + ) -> None: + """Create archive for raw component.""" - def _do_raw_component(self, work_dir, metadata, conf): - """Create archive for raw component""" self._prepare_dir(work_dir) block_entry = rouge.construct_entry(conf["partition"]) @@ -167,41 +101,44 @@ def _do_raw_component(self, work_dir, metadata, conf): file.truncate(block_entry.size()) block_entry.write(file, 0) - gz_image = os.path.join(self._bundle_dir, metadata["fileName"]) - + gz_image = os.path.join(comp_dir, filename) os.system(f"gzip < {image_file} > {gz_image}") - def _do_overlay_component(self, work_dir, metadata, conf): - component = metadata["type"] - overlay_type = conf["type"].as_str + def _do_overlay_component( + self, + work_dir: str, + comp_dir: str, + filename: str, + comp_type: str, + version: str, + conf: rouge.YamlValue, + ) -> None: + """Create overlay component via bitbake.""" + overlay_type = conf["type"].as_str self._prepare_dir(work_dir) - if self._verbose: - print(f"Creating {overlay_type} overlay image for {component}") - - annotats = metadata.get("annotations", {}) - annotats["type"] = overlay_type - metadata["annotations"] = annotats + print(f"Creating {overlay_type} overlay image for {comp_type}") repo = conf.get( "ostree_repo", - os.path.join(self._work_dir, "ostree_repo", component), + os.path.join(self._work_dir, "ostree_repo", comp_type), ).as_str + required_version = conf.get("requiredVersion", "").as_str + bbake_conf = [ ("AOS_ROOTFS_IMAGE_TYPE", overlay_type), - ("AOS_ROOTFS_IMAGE_VERSION", metadata["version"]), - ("AOS_ROOTFS_REF_VERSION", metadata.get("requiredVersion", "")), + ("AOS_ROOTFS_IMAGE_VERSION", version), + ("AOS_ROOTFS_REF_VERSION", required_version), ("AOS_ROOTFS_OSTREE_REPO", os.path.abspath(repo)), ( "AOS_ROOTFS_IMAGE_FILE", - os.path.join(os.path.abspath(self._bundle_dir), metadata["fileName"]), + os.path.join(os.path.abspath(comp_dir), filename), ), ] exclude_items = conf.get("exclude", None) - if exclude_items: bbake_conf.append( ( @@ -222,63 +159,142 @@ def _do_overlay_component(self, work_dir, metadata, conf): if ret != 0: raise FotaError(ret) - def _do_custom_component(self, metadata, conf): - src = conf["file"] - self._do_copy(src, os.path.join(self._bundle_dir, metadata["fileName"])) + def _do_custom_component( + self, comp_dir: str, filename: str, conf: rouge.YamlValue + ) -> None: + """Copy custom component file.""" - def _exclude_items(self, rootfs_dir, conf): - exclude = conf.get("exclude", None) + src = conf["file"].as_str + self._do_copy(src, os.path.join(comp_dir, filename)) - if not exclude: - return - for item in exclude: - value = item.as_str +def create_update_item( + name: str, + comp_conf: rouge.YamlValue, + filename: str, + architecture: str, + os_name: str, + is_incremental: bool, +) -> AosUpdateItem: + """Create AosUpdateItem from component config.""" - if self._verbose: - print(f"Exclude item: {value}") + comp_type = comp_conf.get("componentType", name).as_str + version = comp_conf["version"].as_str + + media_type = ( + COMPONENT_INC_MEDIA_TYPE if is_incremental else COMPONENT_FULL_MEDIA_TYPE + ) - if value[0] == os.sep: - value = value[1:] - os.system(f"rm -rf {os.path.join(rootfs_dir, value)}") + image = AosImage( + mediaType=media_type, + path=filename, + archInfo=AosArchInfo(architecture=architecture), + osInfo=AosOsInfo(os=os_name), + ) + + dependencies = None + runtime_deps = comp_conf.get("dependencies", []) + if runtime_deps: + dependencies = [] + for dep in runtime_deps: + if isinstance(dep, rouge.YamlValue): + dep_codename = dep["codename"].as_str + dep_type = dep.get("type", "component").as_str + dep_versions = dep["versions"].as_str + else: + dep_codename = dep["codename"] + dep_type = dep.get("type", "component") + dep_versions = dep["versions"] + + dependencies.append( + AosDependency( + identity=AosDependencyIdentity( + codename=dep_codename, + type=dep_type, + ), + versions=dep_versions, + ) + ) + + title = None + description = None + if comp_conf.get("title", None): + title = comp_conf["title"].as_str + if comp_conf.get("description", None): + description = comp_conf["description"].as_str + + return AosUpdateItem( + identity=AosIdentity( + codename=comp_type, + type="component", + title=title, + description=description, + ), + version=version, + images=[image], + dependencies=dependencies if dependencies else None, + ) def main(): - """main procedure""" - parser = argparse.ArgumentParser(description="FOTA builder") + """Main function.""" + parser = argparse.ArgumentParser(description="AOS Component builder") parser.add_argument( "conf", metavar="conf.yaml", type=str, help="YAML file with configuration" ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose output" - ) - args = parser.parse_args() - conf = yaml.compose(open(args.conf, "r", encoding="utf-8")) - builder = FotaBuilder(rouge.YamlValue(conf), args.verbose) + with open(args.conf, "r", encoding="utf-8") as f: + conf = rouge.YamlValue(yaml.compose(f)) + + components_conf = conf.get("components", conf) + + bundle_builder = BundleBuilder(components_conf, "component") + bundle_builder.prepare() - try: - builder.prepare_bundle_dir() + comp_builder = ComponentBuilder(components_conf, bundle_builder._output_dir) - components = builder.get_components() + items = components_conf["items"] + ret = 0 - for component in components.keys(): # pylint: disable=consider-using-dict-items - print(f"Processing {component}...") + for name in items.keys(): + comp_conf = items[name] + + if not comp_conf.get("enabled", True).as_bool: + print(f"Skipping disabled component: {name}") + continue + + print(f"Building component: {name}") + + try: + filename = comp_builder.build_component(name, comp_conf) + + comp_type_conf = comp_conf.get("type", None) + is_incremental = ( + comp_type_conf and comp_type_conf.as_str == "incremental" + ) + + item = create_update_item( + name, + comp_conf, + filename, + bundle_builder._architecture, + bundle_builder._os, + is_incremental, + ) + bundle_builder.add_item(item) - if not components[component].get("enabled", True).as_bool: - if args.verbose: - print(f"{component} skipped") + except FotaError as err: + print(f"Failed to build component {name}: {err}") + ret = 1 - continue + if ret != 0: + print("Some components failed to build") - builder.process_component(component, components[component]) + return ret - builder.create_metadata() - builder.create_bundle() - except FotaError as err: - print(err) + bundle_builder.build() return 0 From 54b781e32cd296ed33bda577f5546e8ce5deee90 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 9 Apr 2026 08:01:06 +0300 Subject: [PATCH 082/104] classes: simplify layer-generator and update output format Remove digest-based intermediate archive and pack rootfs diff directly into {OS}-{arch}-{version}.tar.gz. Remove unused variables and metadata generation. Add AOS_LAYER_OS and AOS_LAYER_ARCH configuration. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- classes/layer-generator.bbclass | 67 +++------------------------------ 1 file changed, 6 insertions(+), 61 deletions(-) diff --git a/classes/layer-generator.bbclass b/classes/layer-generator.bbclass index 9afbbff4..de1a89c4 100644 --- a/classes/layer-generator.bbclass +++ b/classes/layer-generator.bbclass @@ -1,4 +1,4 @@ -# This class containes functions to generate layers +# This class contains functions to generate layers # Configuration @@ -6,12 +6,9 @@ AOS_BASE_IMAGE ??= "aos-image" AOS_PARENT_LAYER ??= "${AOS_BASE_IMAGE}" AOS_LAYER_FEATURES ??= "" AOS_LAYER_VERSION ??= "1.0.0" -AOS_LAYER_DIGEST_TYPE ??= "sha256" AOS_LAYER_DEPLOY_DIR ??= "${DEPLOY_DIR_IMAGE}/layers" - -# Inherit - -inherit metadata-generator +AOS_LAYER_OS ??= "${AOS_OS}" +AOS_LAYER_ARCH ??= "${AOS_ARCHITECTURE}" # Dependencies @@ -19,19 +16,16 @@ DEPENDS:append = " rsync-native" # Variables -LAYER_MEDIA_TYPE = "application/vnd.aos.image.layer.v1.tar" -LAYER_WORK_DIR = "${WORKDIR}/layer" PARENT_LAYER_ROOTFS = "${TMPDIR}/work-shared/${AOS_PARENT_LAYER}-${MACHINE}/rootfs" ROOTFS_DIFF_DIR = "${WORKDIR}/rootfs_diff" -SHARED_DIGEST_DIR = "${TMPDIR}/work-shared/layers-${AOS_LAYER_DIGEST_TYPE}" IMAGE_INSTALL:append = "${AOS_LAYER_FEATURES}" # Dirs -do_create_layer[cleandirs] += "${LAYER_WORK_DIR} ${ROOTFS_DIFF_DIR}" +do_create_layer[cleandirs] += "${ROOTFS_DIFF_DIR}" do_create_layer[depends] += "${AOS_PARENT_LAYER}:do_create_shared_links" -do_create_layer[dirs] += "${SHARED_DIGEST_DIR} ${AOS_LAYER_DEPLOY_DIR} ${LAYER_WORK_DIR}" +do_create_layer[dirs] += "${AOS_LAYER_DEPLOY_DIR}" # Disable unneeded tasks @@ -44,19 +38,6 @@ do_image_complete[noexec] = "1" do_create_rootfs_archive() { rsync -HXlrvcm --append --progress --delete --compare-dest=${PARENT_LAYER_ROOTFS}/ ${IMAGE_ROOTFS}/* ${ROOTFS_DIFF_DIR} find ${ROOTFS_DIFF_DIR} -type d -empty -delete - - # Create layer rootfs tar - - IMAGE_ROOTFS_TAR=${LAYER_WORK_DIR}/${PN}.tar - - ${IMAGE_CMD_TAR} --numeric-owner -cf ${IMAGE_ROOTFS_TAR} -C ${ROOTFS_DIFF_DIR} . - - # Create layer rootfs digest - - DIGEST="$(${AOS_LAYER_DIGEST_TYPE}sum -b ${IMAGE_ROOTFS_TAR} | cut -d' ' -f1)" - echo "${DIGEST} ${AOS_LAYER_VERSION}" > ${SHARED_DIGEST_DIR}/${PN}.${AOS_LAYER_DIGEST_TYPE} - - mv ${IMAGE_ROOTFS_TAR} ${LAYER_WORK_DIR}/${DIGEST} } python do_create_whiteouts() { @@ -88,43 +69,8 @@ python do_create_whiteouts() { } -python do_create_metadata() { - import os - - # Plarform info - - platform_info = create_layer_platform_info(d.getVar("TARGET_ARCH"), d.getVar("TARGET_OS"), d.getVar("DISTRO_VERSION"), - d.getVar("AOS_LAYER_FEATURES").split()) - - # Annotations - - parent_id = "" - parent_digest = "" - - if d.getVar("AOS_PARENT_LAYER") != d.getVar("AOS_BASE_IMAGE"): - f = open(os.path.join(d.getVar("SHARED_DIGEST_DIR"), - "{}.{}".format(d.getVar("AOS_PARENT_LAYER"), d.getVar("AOS_LAYER_DIGEST_TYPE"))), "r") - - data = f.read().split() - parent_id = "{}:{}".format(d.getVar("AOS_PARENT_LAYER"), data[1]) - parent_digest = "{}:{}".format(d.getVar("AOS_LAYER_DIGEST_TYPE"), data[0]) - - annotations = create_layer_annotations("{}:{}".format(d.getVar("PN"), d.getVar("AOS_LAYER_VERSION")), parent_id, parent_digest) - - # Write metadata - - f = open(os.path.join(d.getVar("SHARED_DIGEST_DIR"), - "{}.{}".format(d.getVar("PN"), d.getVar("AOS_LAYER_DIGEST_TYPE"))), "r") - - data = f.read().split() - digest = "{}:{}".format(d.getVar("AOS_LAYER_DIGEST_TYPE"), data[0]) - - write_layer_metadata(d.getVar("LAYER_WORK_DIR"), d.getVar("LAYER_MEDIA_TYPE"), digest, - os.path.getsize(os.path.join(d.getVar("LAYER_WORK_DIR"), data[0])), platform_info, annotations) -} - do_pack_layer() { - ${IMAGE_CMD_TAR} --numeric-owner -czf ${AOS_LAYER_DEPLOY_DIR}/${PN}-${MACHINE}-${AOS_LAYER_VERSION}.tar.gz -C ${LAYER_WORK_DIR} . + ${IMAGE_CMD_TAR} --numeric-owner -czf ${AOS_LAYER_DEPLOY_DIR}/${AOS_LAYER_OS}-${AOS_LAYER_ARCH}-${AOS_LAYER_VERSION}.tar.gz -C ${ROOTFS_DIFF_DIR} . } do_create_layer[nostamp] = "1" @@ -132,7 +78,6 @@ do_create_layer[nostamp] = "1" fakeroot python do_create_layer() { bb.build.exec_func("do_create_whiteouts", d) bb.build.exec_func("do_create_rootfs_archive", d) - bb.build.exec_func("do_create_metadata", d) bb.build.exec_func("do_pack_layer", d) } From a349d68a52b3cfa3d3849ee35724f0b3575ee3bf Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 9 Apr 2026 08:01:12 +0300 Subject: [PATCH 083/104] recipes-aos-layers: remove hardcoded AOS_LAYER_VERSION Layer version is now provided from build configuration yaml via layer_builder.py instead of being hardcoded in each recipe. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- .../aos-kuksa-client-layer/aos-kuksa-client-layer.bb | 2 -- recipes-aos-layers/aos-libvis-layer/aos-libvis-layer.bb | 2 -- recipes-aos-layers/aos-nodejs-layer/aos-nodejs-layer.bb | 2 -- recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb | 2 -- recipes-aos-layers/aos-vim-layer/aos-vim-layer.bb | 2 -- 5 files changed, 10 deletions(-) diff --git a/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb b/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb index 3e6356c9..0cbf895c 100644 --- a/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb +++ b/recipes-aos-layers/aos-kuksa-client-layer/aos-kuksa-client-layer.bb @@ -5,5 +5,3 @@ require recipes-aos-layers/aos-base-layer/aos-base-layer.inc AOS_LAYER_FEATURES += " \ kuksa-client \ " - -AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-aos-layers/aos-libvis-layer/aos-libvis-layer.bb b/recipes-aos-layers/aos-libvis-layer/aos-libvis-layer.bb index e470d0fc..d3b56827 100644 --- a/recipes-aos-layers/aos-libvis-layer/aos-libvis-layer.bb +++ b/recipes-aos-layers/aos-libvis-layer/aos-libvis-layer.bb @@ -7,5 +7,3 @@ require recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb AOS_LAYER_FEATURES += " \ libvis \ " - -AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-aos-layers/aos-nodejs-layer/aos-nodejs-layer.bb b/recipes-aos-layers/aos-nodejs-layer/aos-nodejs-layer.bb index 58ad384e..50d47f1c 100644 --- a/recipes-aos-layers/aos-nodejs-layer/aos-nodejs-layer.bb +++ b/recipes-aos-layers/aos-nodejs-layer/aos-nodejs-layer.bb @@ -5,5 +5,3 @@ require recipes-aos-layers/aos-base-layer/aos-base-layer.inc AOS_LAYER_FEATURES += " \ nodejs \ " - -AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb index 79ffb4b8..fea8da38 100644 --- a/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb +++ b/recipes-aos-layers/aos-pylibs-layer/aos-pylibs-layer.bb @@ -15,5 +15,3 @@ AOS_LAYER_FEATURES += " \ python3-threading \ python3-websocket-client \ " - -AOS_LAYER_VERSION = "1.0.0" diff --git a/recipes-aos-layers/aos-vim-layer/aos-vim-layer.bb b/recipes-aos-layers/aos-vim-layer/aos-vim-layer.bb index 6842f880..602cdb52 100644 --- a/recipes-aos-layers/aos-vim-layer/aos-vim-layer.bb +++ b/recipes-aos-layers/aos-vim-layer/aos-vim-layer.bb @@ -12,5 +12,3 @@ AOS_LAYER_WHITEOUTS += " \ /usr/share/applications/gvim.desktop \ /usr/share/applications/vim.desktop \ " - -AOS_LAYER_VERSION = "1.0.0" From eccd76a93215eb4697def1f94141ee1078b32caa Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 17 Apr 2026 14:27:05 +0300 Subject: [PATCH 084/104] classes: move do_pack_layer out from fakeroot Packing layer should be performed out of root. Otherwise it makes issue during layer rebuild. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko --- classes/layer-generator.bbclass | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/layer-generator.bbclass b/classes/layer-generator.bbclass index de1a89c4..63ce5f91 100644 --- a/classes/layer-generator.bbclass +++ b/classes/layer-generator.bbclass @@ -35,12 +35,12 @@ do_image_complete[noexec] = "1" # Tasks -do_create_rootfs_archive() { +fakeroot do_create_rootfs_archive() { rsync -HXlrvcm --append --progress --delete --compare-dest=${PARENT_LAYER_ROOTFS}/ ${IMAGE_ROOTFS}/* ${ROOTFS_DIFF_DIR} find ${ROOTFS_DIFF_DIR} -type d -empty -delete } -python do_create_whiteouts() { +fakeroot python do_create_whiteouts() { import os whiteoutPrefix = ".wh." @@ -75,7 +75,7 @@ do_pack_layer() { do_create_layer[nostamp] = "1" -fakeroot python do_create_layer() { +python do_create_layer() { bb.build.exec_func("do_create_whiteouts", d) bb.build.exec_func("do_create_rootfs_archive", d) bb.build.exec_func("do_pack_layer", d) From 73f0463766a90252f75b7c00c857f6b8f5c0ab06 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 17 Apr 2026 14:36:00 +0300 Subject: [PATCH 085/104] classes: do not save original name and timestamp in gzip archive This requires to have same digest for layers with the same content. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko --- classes/layer-generator.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/layer-generator.bbclass b/classes/layer-generator.bbclass index 63ce5f91..7c70f9bc 100644 --- a/classes/layer-generator.bbclass +++ b/classes/layer-generator.bbclass @@ -70,7 +70,7 @@ fakeroot python do_create_whiteouts() { } do_pack_layer() { - ${IMAGE_CMD_TAR} --numeric-owner -czf ${AOS_LAYER_DEPLOY_DIR}/${AOS_LAYER_OS}-${AOS_LAYER_ARCH}-${AOS_LAYER_VERSION}.tar.gz -C ${ROOTFS_DIFF_DIR} . + ${IMAGE_CMD_TAR} -numeric-owner -cf - -C ${ROOTFS_DIFF_DIR} . | gzip -n > ${AOS_LAYER_DEPLOY_DIR}/${AOS_LAYER_OS}-${AOS_LAYER_ARCH}-${AOS_LAYER_VERSION}.tar.gz } do_create_layer[nostamp] = "1" From 5b054248775c7c8e5175f1e69c0ee58c378c7777 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 15 Apr 2026 20:42:10 +0300 Subject: [PATCH 086/104] scripts: add layer parent dependency and unify dependency format Layers can now declare a single `dependency: {item, versions}` referring to another item by name. layer_builder topologically sorts items, then passes the parent's bitbake target as AOS_PARENT_LAYER, so the diff rootfs is computed against the parent layer instead of the base image. metadata_builder._create_dependencies now consumes the same singular `dependency` form and emits a single-element dependencies list. The fota builder is updated to use the same yaml shape (metadata only, no build-time effect), replacing the previous plural `dependencies`. Signed-off-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko --- scripts/fota_builder.py | 32 +++++---------- scripts/layer_builder.py | 82 ++++++++++++++++++++++++++++++++++++- scripts/metadata_builder.py | 35 +++++++++------- 3 files changed, 111 insertions(+), 38 deletions(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index f1c68aa7..39acc322 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -193,28 +193,18 @@ def create_update_item( ) dependencies = None - runtime_deps = comp_conf.get("dependencies", []) - if runtime_deps: - dependencies = [] - for dep in runtime_deps: - if isinstance(dep, rouge.YamlValue): - dep_codename = dep["codename"].as_str - dep_type = dep.get("type", "component").as_str - dep_versions = dep["versions"].as_str - else: - dep_codename = dep["codename"] - dep_type = dep.get("type", "component") - dep_versions = dep["versions"] - - dependencies.append( - AosDependency( - identity=AosDependencyIdentity( - codename=dep_codename, - type=dep_type, - ), - versions=dep_versions, - ) + deps_conf = comp_conf.get("dependencies", None) + if deps_conf: + dependencies = [ + AosDependency( + identity=AosDependencyIdentity( + codename=dep["item"].as_str, + type="component", + ), + versions=dep["versions"].as_str, ) + for dep in deps_conf + ] title = None description = None diff --git a/scripts/layer_builder.py b/scripts/layer_builder.py index 859a4f58..c029a0f0 100755 --- a/scripts/layer_builder.py +++ b/scripts/layer_builder.py @@ -5,6 +5,7 @@ import os import shutil import sys +from typing import Dict, List, Optional import yaml from bitbake import call_bitbake @@ -12,10 +13,77 @@ from moulin import rouge +def resolve_parent_target( + name: str, + item_conf: rouge.YamlValue, + items: rouge.YamlValue, +) -> Optional[str]: + """Return parent layer bitbake target based on item's dependency, or None.""" + + dep_conf = item_conf.get("dependency", None) + if not dep_conf: + return None + + parent_name = dep_conf["item"].as_str + + if parent_name not in items.keys(): + raise ValueError( + f"Layer '{name}' depends on unknown item '{parent_name}'" + ) + + return items[parent_name]["target"].as_str + + +def order_items(items: rouge.YamlValue) -> List[str]: + """Topologically sort items so every parent is built before its children.""" + + graph: Dict[str, Optional[str]] = {} + for name in items.keys(): + item_conf = items[name] + dep_conf = item_conf.get("dependency", None) + parent = dep_conf["item"].as_str if dep_conf else None + + if parent is not None and parent not in items.keys(): + raise ValueError( + f"Layer '{name}' depends on unknown item '{parent}'" + ) + + graph[name] = parent + + ordered: List[str] = [] + visiting: set = set() + visited: set = set() + + def visit(node: str) -> None: + if node in visited: + return + + if node in visiting: + raise ValueError( + f"Cyclic layer dependency detected involving '{node}'" + ) + + visiting.add(node) + parent = graph[node] + + if parent is not None: + visit(parent) + + visiting.remove(node) + visited.add(node) + ordered.append(node) + + for name in graph: + visit(name) + + return ordered + + def build_layer( layers_conf: rouge.YamlValue, layer_conf: rouge.YamlValue, layer_dir: str, + parent_target: Optional[str] = None, ) -> int: """Build a single layer using bitbake into its own subdirectory.""" @@ -28,6 +96,13 @@ def build_layer( ("AOS_LAYER_DEPLOY_DIR", layer_dir), ] + if parent_target: + # Scope to this recipe only; otherwise the parent layer (also + # parsed in the same bitbake invocation) would inherit the same + # AOS_PARENT_LAYER and create a self-dependency loop. + target = layer_conf["target"].as_str + bbake_conf.append((f"AOS_PARENT_LAYER:pn-{target}", parent_target)) + version = layer_conf.get("version", None) if version: bbake_conf.append(("AOS_LAYER_VERSION", version.as_str)) @@ -60,17 +135,20 @@ def main(): ret = 0 items = layers_conf["items"] + build_order = order_items(items) - for name in items.keys(): + for name in build_order: item_conf = items[name] if not item_conf.get("enabled", True).as_bool: continue + parent_target = resolve_parent_target(name, item_conf, items) + print(f"Building layer: {name}") layer_dir = os.path.join(builder._output_dir, name) - result = build_layer(layers_conf, item_conf, layer_dir) + result = build_layer(layers_conf, item_conf, layer_dir, parent_target) if result != 0: print(f"Failed to build layer: {name}") diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py index a1db6064..0778325f 100644 --- a/scripts/metadata_builder.py +++ b/scripts/metadata_builder.py @@ -240,25 +240,30 @@ def _create_image(self, path: str, architecture: str, os_name: str) -> AosImage: def _create_dependencies( self, item_conf: rouge.YamlValue ) -> Optional[List[AosDependency]]: - """Create dependencies list from config.""" + """Create dependencies list from a singular `dependency` entry. - deps_conf = item_conf.get("dependencies", None) - if not deps_conf: + Expected YAML form: + dependency: + item: + versions: + + `item` becomes the codename and the dependency type is the + builder's own item_type (layer or component). + """ + + dep_conf = item_conf.get("dependency", None) + if not dep_conf: return None - dependencies = [] - for dep in deps_conf: - dependencies.append( - AosDependency( - identity=AosDependencyIdentity( - codename=dep["codename"].as_str, - type=dep.get("type", "component").as_str, - ), - versions=dep["versions"].as_str, - ) + return [ + AosDependency( + identity=AosDependencyIdentity( + codename=dep_conf["item"].as_str, + type=self._item_type, + ), + versions=dep_conf["versions"].as_str, ) - - return dependencies if dependencies else None + ] def build(self) -> None: """Write config.yaml to output_dir/.""" From b11cac87ae5b1b46e03756c06bf64b8a40b791ea Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Sun, 19 Apr 2026 17:07:48 +0300 Subject: [PATCH 087/104] scripts: fota: handle update item configuration This patch adds support for handling update item configuration, which contains runtime parameters for update items. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- scripts/fota_builder.py | 9 +++++++++ scripts/metadata_builder.py | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index 39acc322..a5d0f20e 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -17,6 +17,7 @@ AosDependencyIdentity, AosIdentity, AosImage, + AosUpdateItemConfiguration, AosOsInfo, AosUpdateItem, BundleBuilder, @@ -181,6 +182,13 @@ def create_update_item( comp_type = comp_conf.get("componentType", name).as_str version = comp_conf["version"].as_str + configuration = AosUpdateItemConfiguration(runtimes=[ + AosIdentity( + codename=comp_type, + type="runtime", + ) + ]) + media_type = ( COMPONENT_INC_MEDIA_TYPE if is_incremental else COMPONENT_FULL_MEDIA_TYPE ) @@ -223,6 +231,7 @@ def create_update_item( version=version, images=[image], dependencies=dependencies if dependencies else None, + configuration=configuration if configuration else None, ) diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py index 0778325f..48dcbcac 100644 --- a/scripts/metadata_builder.py +++ b/scripts/metadata_builder.py @@ -12,7 +12,7 @@ COMPONENT_FULL_MEDIA_TYPE = "vnd.aos.image.component.full.v1+gzip" COMPONENT_INC_MEDIA_TYPE = "vnd.aos.image.component.inc.v1+gzip" -ItemType = Literal["layer", "component", "service"] +ItemType = Literal["layer", "component", "service", "runtime"] class AosArchInfo(BaseModel): @@ -51,6 +51,11 @@ class AosImage(BaseModel): class Config: populate_by_name = True +class AosUpdateItemConfiguration(BaseModel): + """Configuration for an update item""" + + runtimes: list[AosIdentity] + class AosDependencyIdentity(BaseModel): """Identity for dependency reference.""" @@ -72,6 +77,7 @@ class AosUpdateItem(BaseModel): identity: AosIdentity version: str images: List[AosImage] + configuration: Optional[AosUpdateItemConfiguration] = None dependencies: Optional[List[AosDependency]] = None From b50b219553be5f361abba5837a93cb53461b5a2c Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 21 Apr 2026 12:28:06 +0300 Subject: [PATCH 088/104] scripts: fota: set update item source folder This patch ensures that the source folder for the update item is set to the directory containing the built component, otherwise aos-signer uses codename of the component, which leads to file not found errors. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- scripts/fota_builder.py | 3 ++- scripts/metadata_builder.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index a5d0f20e..4192ab1b 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -195,7 +195,7 @@ def create_update_item( image = AosImage( mediaType=media_type, - path=filename, + path=os.path.basename(filename), archInfo=AosArchInfo(architecture=architecture), osInfo=AosOsInfo(os=os_name), ) @@ -229,6 +229,7 @@ def create_update_item( description=description, ), version=version, + sourceFolder=os.path.dirname(filename), images=[image], dependencies=dependencies if dependencies else None, configuration=configuration if configuration else None, diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py index 48dcbcac..c542c551 100644 --- a/scripts/metadata_builder.py +++ b/scripts/metadata_builder.py @@ -76,6 +76,7 @@ class AosUpdateItem(BaseModel): identity: AosIdentity version: str + source_folder: Optional[str] = Field(default=None, alias="sourceFolder") images: List[AosImage] configuration: Optional[AosUpdateItemConfiguration] = None dependencies: Optional[List[AosDependency]] = None From 9e2982a5e262fef1f2eb90a83201401dbdaa00ed Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 24 Apr 2026 19:35:27 +0300 Subject: [PATCH 089/104] classes: fix pack layer in layer generator Add missing dash before numeric-owner parameter. Return back fakeroot for whole do_create_layer function. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets --- classes/layer-generator.bbclass | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/layer-generator.bbclass b/classes/layer-generator.bbclass index 7c70f9bc..feb83fe8 100644 --- a/classes/layer-generator.bbclass +++ b/classes/layer-generator.bbclass @@ -35,12 +35,12 @@ do_image_complete[noexec] = "1" # Tasks -fakeroot do_create_rootfs_archive() { +do_create_rootfs_archive() { rsync -HXlrvcm --append --progress --delete --compare-dest=${PARENT_LAYER_ROOTFS}/ ${IMAGE_ROOTFS}/* ${ROOTFS_DIFF_DIR} find ${ROOTFS_DIFF_DIR} -type d -empty -delete } -fakeroot python do_create_whiteouts() { +python do_create_whiteouts() { import os whiteoutPrefix = ".wh." @@ -70,12 +70,12 @@ fakeroot python do_create_whiteouts() { } do_pack_layer() { - ${IMAGE_CMD_TAR} -numeric-owner -cf - -C ${ROOTFS_DIFF_DIR} . | gzip -n > ${AOS_LAYER_DEPLOY_DIR}/${AOS_LAYER_OS}-${AOS_LAYER_ARCH}-${AOS_LAYER_VERSION}.tar.gz + ${IMAGE_CMD_TAR} --numeric-owner -cf - -C ${ROOTFS_DIFF_DIR} . | gzip -n > ${AOS_LAYER_DEPLOY_DIR}/${AOS_LAYER_OS}-${AOS_LAYER_ARCH}-${AOS_LAYER_VERSION}.tar.gz } do_create_layer[nostamp] = "1" -python do_create_layer() { +fakeroot python do_create_layer() { bb.build.exec_func("do_create_whiteouts", d) bb.build.exec_func("do_create_rootfs_archive", d) bb.build.exec_func("do_pack_layer", d) From 32fd309b54db1360aac61c57e242eb4d116ec227 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 24 Apr 2026 19:58:05 +0300 Subject: [PATCH 090/104] scripts: refactor metadata builder * add output_dir property as protected member is accessible from other scripts; * group public methods and protected methods. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets --- scripts/metadata_builder.py | 50 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py index c542c551..ba0e3e03 100644 --- a/scripts/metadata_builder.py +++ b/scripts/metadata_builder.py @@ -51,6 +51,7 @@ class AosImage(BaseModel): class Config: populate_by_name = True + class AosUpdateItemConfiguration(BaseModel): """Configuration for an update item""" @@ -132,9 +133,7 @@ def __init__(self, conf: rouge.YamlValue, item_type: ItemType) -> None: self._machine = conf.get("machine", "genericx86-64").as_str self._architecture = conf.get("architecture", "amd64").as_str self._os = conf.get("os", "linux").as_str - self._output_dir = os.path.abspath( - conf.get("output_dir", "../output").as_str - ) + self._output_dir = os.path.abspath(conf.get("output_dir", "../output").as_str) publisher_conf = conf.get("publisher", None) self._publisher = None @@ -203,9 +202,31 @@ def add_item_from_conf(self, name: str, item_conf: rouge.YamlValue) -> bool: return True - def _find_archive( - self, name: str, item_conf: rouge.YamlValue - ) -> Optional[str]: + def build(self) -> None: + """Write config.yaml to output_dir/.""" + + if not self._items: + print("No items to bundle") + + return + + config = AosUploadMetaConfig( + items=self._items, + publisher=self._publisher, + publish=self._publish, + ) + config_path = os.path.join(self._output_dir, "config.yaml") + write_config_yaml(config, config_path) + + print(f"Created: {config_path}") + + @property + def output_dir(self) -> str: + """Return output directory path.""" + + return self._output_dir + + def _find_archive(self, name: str, item_conf: rouge.YamlValue) -> Optional[str]: """Find built archive in item subdirectory.""" version = item_conf.get("version", "1.0.0").as_str @@ -271,20 +292,3 @@ def _create_dependencies( versions=dep_conf["versions"].as_str, ) ] - - def build(self) -> None: - """Write config.yaml to output_dir/.""" - - if not self._items: - print("No items to bundle") - - return - - config = AosUploadMetaConfig( - items=self._items, - publisher=self._publisher, - publish=self._publish, - ) - config_path = os.path.join(self._output_dir, "config.yaml") - write_config_yaml(config, config_path) - print(f"Created: {config_path}") From b763913708336f8d11d6b722714f2dc562eded1b Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Fri, 24 Apr 2026 19:59:41 +0300 Subject: [PATCH 091/104] scripts: clear output dir before generating components in fota builder Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets --- scripts/fota_builder.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index 4192ab1b..d7486025 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -17,9 +17,9 @@ AosDependencyIdentity, AosIdentity, AosImage, - AosUpdateItemConfiguration, AosOsInfo, AosUpdateItem, + AosUpdateItemConfiguration, BundleBuilder, ) from moulin import rouge @@ -182,12 +182,14 @@ def create_update_item( comp_type = comp_conf.get("componentType", name).as_str version = comp_conf["version"].as_str - configuration = AosUpdateItemConfiguration(runtimes=[ - AosIdentity( - codename=comp_type, - type="runtime", - ) - ]) + configuration = AosUpdateItemConfiguration( + runtimes=[ + AosIdentity( + codename=comp_type, + type="runtime", + ) + ] + ) media_type = ( COMPONENT_INC_MEDIA_TYPE if is_incremental else COMPONENT_FULL_MEDIA_TYPE @@ -253,7 +255,10 @@ def main(): bundle_builder = BundleBuilder(components_conf, "component") bundle_builder.prepare() - comp_builder = ComponentBuilder(components_conf, bundle_builder._output_dir) + if os.path.exists(bundle_builder.output_dir): + shutil.rmtree(bundle_builder.output_dir) + + comp_builder = ComponentBuilder(components_conf, bundle_builder.output_dir) items = components_conf["items"] ret = 0 @@ -271,9 +276,7 @@ def main(): filename = comp_builder.build_component(name, comp_conf) comp_type_conf = comp_conf.get("type", None) - is_incremental = ( - comp_type_conf and comp_type_conf.as_str == "incremental" - ) + is_incremental = comp_type_conf and comp_type_conf.as_str == "incremental" item = create_update_item( name, From acae45fc66f9d1a143997c691aa0e18da78525dc Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Mon, 27 Apr 2026 19:08:40 +0300 Subject: [PATCH 092/104] kuksa-databroker: fix fetching dependencies from crates.io crates.io starts to verify user-agent and forbids downloads with no used agent specified. Explicitly add Mozilla user agent to wget command. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Kobets Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Solianko --- recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb index de985ddc..dbf6fefb 100644 --- a/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb @@ -27,6 +27,9 @@ inherit cargo cargo-update-recipe-crates systemd DEPENDS = "protobuf-native grpc-native" +# Add a user agent to avoid 403 errors from crates.io when fetching dependencies. +FETCHCMD_wget = "wget --user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64)'" + CARGO_BUILD_FLAGS += "--features viss" SYSTEMD_SERVICE:${PN} = "kuksa-databroker.service" From a17d9f065222fde754e47923d836d3aebe8e9a1a Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 29 Apr 2026 11:34:47 +0300 Subject: [PATCH 093/104] scripts: set mediaType for runtime components from configuration Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- scripts/fota_builder.py | 14 +++----------- scripts/metadata_builder.py | 25 ++++++------------------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/scripts/fota_builder.py b/scripts/fota_builder.py index d7486025..b02b53c5 100755 --- a/scripts/fota_builder.py +++ b/scripts/fota_builder.py @@ -10,8 +10,7 @@ import yaml from bitbake import call_bitbake from metadata_builder import ( - COMPONENT_FULL_MEDIA_TYPE, - COMPONENT_INC_MEDIA_TYPE, + LAYER_MEDIA_TYPE, AosArchInfo, AosDependency, AosDependencyIdentity, @@ -175,7 +174,7 @@ def create_update_item( filename: str, architecture: str, os_name: str, - is_incremental: bool, + media_type: str, ) -> AosUpdateItem: """Create AosUpdateItem from component config.""" @@ -191,10 +190,6 @@ def create_update_item( ] ) - media_type = ( - COMPONENT_INC_MEDIA_TYPE if is_incremental else COMPONENT_FULL_MEDIA_TYPE - ) - image = AosImage( mediaType=media_type, path=os.path.basename(filename), @@ -275,16 +270,13 @@ def main(): try: filename = comp_builder.build_component(name, comp_conf) - comp_type_conf = comp_conf.get("type", None) - is_incremental = comp_type_conf and comp_type_conf.as_str == "incremental" - item = create_update_item( name, comp_conf, filename, bundle_builder._architecture, bundle_builder._os, - is_incremental, + comp_conf.get("mediaType", LAYER_MEDIA_TYPE ).as_str, ) bundle_builder.add_item(item) diff --git a/scripts/metadata_builder.py b/scripts/metadata_builder.py index ba0e3e03..1831bfed 100644 --- a/scripts/metadata_builder.py +++ b/scripts/metadata_builder.py @@ -9,8 +9,6 @@ from pydantic import BaseModel, Field LAYER_MEDIA_TYPE = "application/vnd.oci.image.layer.v1.tar+gzip" -COMPONENT_FULL_MEDIA_TYPE = "vnd.aos.image.component.full.v1+gzip" -COMPONENT_INC_MEDIA_TYPE = "vnd.aos.image.component.inc.v1+gzip" ItemType = Literal["layer", "component", "service", "runtime"] @@ -181,8 +179,12 @@ def add_item_from_conf(self, name: str, item_conf: rouge.YamlValue) -> bool: return False - rel_path = os.path.relpath(archive_path, self._output_dir) - image = self._create_image(rel_path, architecture, os_name) + image = AosImage( + mediaType=item_conf.get("mediaType", LAYER_MEDIA_TYPE).as_str, + path=os.path.relpath(archive_path, self._output_dir), + archInfo=AosArchInfo(architecture=architecture), + osInfo=AosOsInfo(os=os_name), + ) title = item_conf.get("title", None) description = item_conf.get("description", None) @@ -250,21 +252,6 @@ def _find_archive(self, name: str, item_conf: rouge.YamlValue) -> Optional[str]: return None - def _create_image(self, path: str, architecture: str, os_name: str) -> AosImage: - """Create AosImage based on item type.""" - - if self._item_type == "layer": - media_type = LAYER_MEDIA_TYPE - else: - media_type = COMPONENT_FULL_MEDIA_TYPE - - return AosImage( - mediaType=media_type, - path=path, - archInfo=AosArchInfo(architecture=architecture), - osInfo=AosOsInfo(os=os_name), - ) - def _create_dependencies( self, item_conf: rouge.YamlValue ) -> Optional[List[AosDependency]]: From a3160c3476e53b3081b6ba16921a2bfabbe88373 Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Wed, 29 Apr 2026 17:43:31 +0300 Subject: [PATCH 094/104] sm: add aos-reboot.service Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko Reviewed-by: Oleksandr Grytsov --- .../aos-servicemanager/aos-servicemanager_git.bb | 3 +++ .../aos-servicemanager/files/aos-reboot.service | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 recipes-aos/aos-servicemanager/files/aos-reboot.service diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 4538b46b..b11b7016 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -14,6 +14,7 @@ SRC_URI += " \ file://aos-target.conf \ file://aos-dirs-service.conf \ file://aos-cm-service.conf \ + file://aos-reboot.service \ " S = "${WORKDIR}/git" @@ -146,6 +147,8 @@ do_install:append() { if [ -d ${S}${source_migration_path} ]; then install -m 0644 ${S}${source_migration_path}/* ${D}${MIGRATION_SCRIPTS_PATH} fi + + install -m 0644 ${WORKDIR}/aos-reboot.service ${D}${systemd_system_unitdir} } do_install:append:aos-main-node() { diff --git a/recipes-aos/aos-servicemanager/files/aos-reboot.service b/recipes-aos/aos-servicemanager/files/aos-reboot.service new file mode 100644 index 00000000..d5ad308b --- /dev/null +++ b/recipes-aos/aos-servicemanager/files/aos-reboot.service @@ -0,0 +1,10 @@ +[Unit] +Description=AOS Reboot service +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/bin/systemctl reboot + +[Install] +WantedBy=multi-user.target From cadb00d57aa932681b75dac9018be2b7525a1410 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Thu, 30 Apr 2026 10:22:53 +0300 Subject: [PATCH 095/104] recipes-aos: aos-provfinish: restart rpc-rquotad.service on main node To make quota works on remote node after provisioning, we need to restart rpc-rquotad.service on main node after provisioning is finished. Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykola Solianko Reviewed-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets --- recipes-aos/aos-provfinish/aos-provfinish.bb | 3 +++ recipes-aos/aos-provfinish/files/main/provfinish.sh | 10 ++++++++++ .../aos-provfinish/files/{ => secondary}/provfinish.sh | 0 3 files changed, 13 insertions(+) create mode 100644 recipes-aos/aos-provfinish/files/main/provfinish.sh rename recipes-aos/aos-provfinish/files/{ => secondary}/provfinish.sh (100%) diff --git a/recipes-aos/aos-provfinish/aos-provfinish.bb b/recipes-aos/aos-provfinish/aos-provfinish.bb index be21dbd1..ad552c6d 100644 --- a/recipes-aos/aos-provfinish/aos-provfinish.bb +++ b/recipes-aos/aos-provfinish/aos-provfinish.bb @@ -1,3 +1,6 @@ +FILESEXTRAPATHS:prepend:aos-main-node := "${THISDIR}/files/main:" +FILESEXTRAPATHS:prepend:aos-secondary-node := "${THISDIR}/files/secondary:" + DESCRIPTION = "Aos provisioning finish script" LICENSE = "Apache-2.0" diff --git a/recipes-aos/aos-provfinish/files/main/provfinish.sh b/recipes-aos/aos-provfinish/files/main/provfinish.sh new file mode 100644 index 00000000..3c18a437 --- /dev/null +++ b/recipes-aos/aos-provfinish/files/main/provfinish.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +sync + +# restart aos target +{ + sleep 1 + systemctl restart rpc-rquotad.service + systemctl restart aos.target +} > /dev/null 2>&1 & diff --git a/recipes-aos/aos-provfinish/files/provfinish.sh b/recipes-aos/aos-provfinish/files/secondary/provfinish.sh similarity index 100% rename from recipes-aos/aos-provfinish/files/provfinish.sh rename to recipes-aos/aos-provfinish/files/secondary/provfinish.sh From b6a70a79a3a3291c522b961a3385e80a0d93f9dc Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Thu, 7 May 2026 14:20:30 +0300 Subject: [PATCH 096/104] iam: use the correct provisioning service name for aos-iamanager Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Mykola Solianko --- recipes-aos/aos-iamanager/files/aos-target.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-aos/aos-iamanager/files/aos-target.conf b/recipes-aos/aos-iamanager/files/aos-target.conf index cc197b39..2ea51d57 100644 --- a/recipes-aos/aos-iamanager/files/aos-target.conf +++ b/recipes-aos/aos-iamanager/files/aos-target.conf @@ -1,5 +1,5 @@ [Unit] Wants=aos-iam.service After=aos-iam.service -Wants=aos-iam-provisioning.service -After=aos-iam-provisioning.service +Wants=aos-iam-prov.service +After=aos-iam-prov.service From e5474b255d41a440295ab977f60de9a46e49609b Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 19 May 2026 19:45:56 +0300 Subject: [PATCH 097/104] containers: crun: install libcrun Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- recipes-containers/crun/crun_git.bbappend | 1 + 1 file changed, 1 insertion(+) create mode 100644 recipes-containers/crun/crun_git.bbappend diff --git a/recipes-containers/crun/crun_git.bbappend b/recipes-containers/crun/crun_git.bbappend new file mode 100644 index 00000000..6f519442 --- /dev/null +++ b/recipes-containers/crun/crun_git.bbappend @@ -0,0 +1 @@ +EXTRA_OECONF:append = " --enable-shared" From f531ae2c2475fff92e04055a80c232afcbd1496c Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Tue, 19 May 2026 19:47:24 +0300 Subject: [PATCH 098/104] sm: use crun as the container runner Remove the AOS_CONTAINER_RUNNER variable and seal crun as the container runner. Signed-off-by: Mykhailo Lohvynenko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov --- conf/layer.conf | 2 -- .../aos-servicemanager/aos-servicemanager_git.bb | 12 ++---------- recipes-aos/aos-servicemanager/files/sm.cfg | 2 +- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/conf/layer.conf b/conf/layer.conf index 8de8fae1..f435ae5a 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -27,8 +27,6 @@ AOS_MAIN_NODE_HOSTNAME ?= "main" AOS_COMPONENT_RUNTIME_PREFIX ?= "" -AOS_CONTAINER_RUNNER ??= "crun" - # Overrides OVERRIDES:append = "${@':aos-main-node' if bb.utils.to_boolean(d.getVar('AOS_MAIN_NODE')) else ':aos-secondary-node'}" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index b11b7016..1a72d9b7 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -31,7 +31,7 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl" +DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl crun" do_configure[network] = "1" @@ -57,7 +57,7 @@ RDEPENDS:${PN} += " \ cni \ aos-firewall \ aos-dnsname \ - ${@bb.utils.contains("AOS_CONTAINER_RUNNER", "runc", "${VIRTUAL_RUNC}", "${AOS_CONTAINER_RUNNER}", d)} \ + crun \ " RDEPENDS:${PN}:append:aos-secondary-node = " \ @@ -85,7 +85,6 @@ RRECOMMENDS:${PN} += " \ do_fetch[vardeps] += " \ AOS_COMPONENT_RUNTIME_PREFIX \ - AOS_CONTAINER_RUNNER \ " python do_update_config() { @@ -111,12 +110,8 @@ python do_update_config() { # Update component prefixes and set container runner comp_prefix = d.getVar("AOS_COMPONENT_RUNTIME_PREFIX") - container_runner = d.getVar("AOS_CONTAINER_RUNNER") for runtime in data["runtimes"]: - if runtime["plugin"] == "container": - runtime["type"] = container_runner - isComponent = runtime.get("isComponent", False) if isComponent and not runtime["type"].startswith(comp_prefix): @@ -139,9 +134,6 @@ do_install:append() { install -d ${D}${sysconfdir}/systemd/system/aos.target.d install -m 0644 ${WORKDIR}/aos-target.conf ${D}${sysconfdir}/systemd/system/aos.target.d/${PN}.conf - install -m 0644 ${S}/src/sm/launcher/runtimes/container/aos-service@.service ${D}${systemd_system_unitdir} - sed -i 's/@RUNNER@/${AOS_CONTAINER_RUNNER}/g' ${D}${systemd_system_unitdir}/aos-service@.service - install -d ${D}${MIGRATION_SCRIPTS_PATH} source_migration_path="/src/sm/database/migration" if [ -d ${S}${source_migration_path} ]; then diff --git a/recipes-aos/aos-servicemanager/files/sm.cfg b/recipes-aos/aos-servicemanager/files/sm.cfg index a4929fbb..10f5c67c 100644 --- a/recipes-aos/aos-servicemanager/files/sm.cfg +++ b/recipes-aos/aos-servicemanager/files/sm.cfg @@ -10,7 +10,7 @@ "runtimes": [ { "plugin": "container", - "type": "runc", + "type": "crun", "config": { "stateDir": "/var/aos/states", "storageDir": "/var/aos/storages" From 8cd74b56cf4bbeb849de5038d8ef356df41db87b Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 27 May 2026 13:55:47 +0300 Subject: [PATCH 099/104] sm: replace CNI networking with native nftables/tc/dnsmasq Depend on nftables and dnsmasq instead of the CNI plugins, recommend the nftables and tc kernel modules in place of the iptables ones, and drop the aos-firewall, aos-dnsname and cni recipes. Signed-off-by: Mykola Solianko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- README.md | 1 - recipes-aos/aos-dnsname/aos-dnsname.bb | 38 ------------------- recipes-aos/aos-firewall/aos-firewall.bb | 38 ------------------- .../aos-iamanager/aos-iamanager_git.bb | 2 +- .../aos-messageproxy/aos-messageproxy_git.bb | 2 +- .../aos-servicemanager_git.bb | 27 +++++++------ recipes-networking/cni/cni_git.bbappend | 1 - 7 files changed, 15 insertions(+), 94 deletions(-) delete mode 100644 recipes-aos/aos-dnsname/aos-dnsname.bb delete mode 100644 recipes-aos/aos-firewall/aos-firewall.bb delete mode 100644 recipes-networking/cni/cni_git.bbappend diff --git a/README.md b/README.md index 01e8c0b1..7b6ac17e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ This meta layer contains recipes for AosCore components such as: * aos-servicemanager - AosCore service manager; * aos-updatemanager - AosCore update manager; * aos-vis - AosCore vehicle information service; -* CNI plugins; * other tools and utility for AosCore operation. ## How to integrate Aos meta layer to custom product diff --git a/recipes-aos/aos-dnsname/aos-dnsname.bb b/recipes-aos/aos-dnsname/aos-dnsname.bb deleted file mode 100644 index c0e0db06..00000000 --- a/recipes-aos/aos-dnsname/aos-dnsname.bb +++ /dev/null @@ -1,38 +0,0 @@ -DESCRIPTION = "DNS name CNI plugin" - -GO_IMPORT = "github.com/aosedge/aos_cni_dns" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" - -BRANCH = "main" -SRCREV = "2b445820a9b011703cc86bca98f6a419c14c92fb" - -SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" - -inherit go -inherit goarch - -# embed version -GO_LDFLAGS += '-ldflags="-X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' - -FILES:${PN} = "${libexecdir}/cni" - -RDEPENDS:${PN} += "\ - dnsmasq \ -" - -# WA to support go install for v 1.18 - -GO_LINKSHARED = "" - -do_compile:prepend() { - cd ${GOPATH}/src/${GO_IMPORT}/ -} - -do_install() { - localbindir="${libexecdir}/cni" - - install -d ${D}${localbindir} - install -m 755 ${B}/${GO_BUILD_BINDIR}/dnsname ${D}${localbindir} -} diff --git a/recipes-aos/aos-firewall/aos-firewall.bb b/recipes-aos/aos-firewall/aos-firewall.bb deleted file mode 100644 index 8dc38cfb..00000000 --- a/recipes-aos/aos-firewall/aos-firewall.bb +++ /dev/null @@ -1,38 +0,0 @@ -DESCRIPTION = "AOS fierwall CNI plugin" - -GO_IMPORT = "github.com/aosedge/aos_cni_firewall" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" - -BRANCH = "main" -SRCREV = "e1f1c51bb069ed8f0150973669cd2d8d62d37516" - -SRC_URI = "git://${GO_IMPORT}.git;branch=${BRANCH};protocol=https" - -inherit go -inherit goarch - -# embed version -GO_LDFLAGS += '-ldflags="-X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=`git --git-dir=${S}/src/${GO_IMPORT}/.git describe --tags --always`"' - -FILES:${PN} = "${libexecdir}/cni" - -RDEPENDS:${PN} += "\ - iptables \ -" - -# WA to support go install for v 1.18 - -GO_LINKSHARED = "" - -do_compile:prepend() { - cd ${GOPATH}/src/${GO_IMPORT}/ -} - -do_install() { - localbindir="${libexecdir}/cni" - - install -d ${D}${localbindir} - install -m 755 ${B}/${GO_BUILD_BINDIR}/aos-firewall ${D}${localbindir} -} diff --git a/recipes-aos/aos-iamanager/aos-iamanager_git.bb b/recipes-aos/aos-iamanager/aos-iamanager_git.bb index 8ba0b260..e239ed30 100644 --- a/recipes-aos/aos-iamanager/aos-iamanager_git.bb +++ b/recipes-aos/aos-iamanager/aos-iamanager_git.bb @@ -19,7 +19,7 @@ SRC_URI += " \ file://aos-dirs-service.conf \ " -DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl libnl" +DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf openssl curl" EXTRA_OECMAKE += " \ -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ diff --git a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb index 45a4153c..03779984 100644 --- a/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb +++ b/recipes-aos/aos-messageproxy/aos-messageproxy_git.bb @@ -19,7 +19,7 @@ S = "${WORKDIR}/git" inherit autotools pkgconfig cmake systemd -DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl" +DEPENDS += "poco systemd grpc grpc-native protobuf-native protobuf curl libnl nftables" PACKAGECONFIG ??= "openssl ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'vchan', '', d)}" PACKAGECONFIG[vchan] = "-DWITH_VCHAN=ON,-DWITH_VCHAN=OFF,xen-tools,xen-tools-libxenvchan" diff --git a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb index 1a72d9b7..1264a315 100644 --- a/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb +++ b/recipes-aos/aos-servicemanager/aos-servicemanager_git.bb @@ -31,7 +31,7 @@ FILES:${PN} += " \ ${MIGRATION_SCRIPTS_PATH} \ " -DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl crun" +DEPENDS = "grpc grpc-native poco protobuf-native systemd curl libnl nftables crun" do_configure[network] = "1" @@ -52,11 +52,9 @@ PACKAGECONFIG[mbedtls] = "-DWITH_MBEDTLS=ON,-DWITH_MBEDTLS=OFF,," VIRTUAL_RUNC = "${@bb.utils.contains('LAYERSERIES_CORENAMES', 'dunfell', 'virtual/runc', 'virtual-runc', d)}" RDEPENDS:${PN} += " \ - iptables \ quota \ - cni \ - aos-firewall \ - aos-dnsname \ + nftables \ + dnsmasq \ crun \ " @@ -66,21 +64,22 @@ RDEPENDS:${PN}:append:aos-secondary-node = " \ RRECOMMENDS:${PN} += " \ kernel-module-8021q \ + kernel-module-act-mirred \ kernel-module-bridge \ + kernel-module-cls-matchall \ kernel-module-ifb \ - kernel-module-nf-conncount \ + kernel-module-nf-conntrack \ + kernel-module-nf-nat \ kernel-module-nfnetlink \ + kernel-module-nft-chain-nat \ + kernel-module-nft-ct \ + kernel-module-nft-masq \ + kernel-module-nft-nat \ kernel-module-overlay \ + kernel-module-sch-ingress \ + kernel-module-sch-tbf \ kernel-module-veth \ kernel-module-vxlan \ - kernel-module-xt-addrtype \ - kernel-module-xt-comment \ - kernel-module-xt-conntrack \ - kernel-module-xt-masquerade \ - kernel-module-xt-tcpudp \ - kernel-module-sch-tbf \ - kernel-module-sch-ingress \ - kernel-module-act-mirred \ " do_fetch[vardeps] += " \ diff --git a/recipes-networking/cni/cni_git.bbappend b/recipes-networking/cni/cni_git.bbappend deleted file mode 100644 index 25c7dd2d..00000000 --- a/recipes-networking/cni/cni_git.bbappend +++ /dev/null @@ -1 +0,0 @@ -export GO111MODULE = "auto" From 2712aace4d58f0dd5ed29e5592aaa3194ea74ddb Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Wed, 27 May 2026 21:53:12 +0300 Subject: [PATCH 100/104] provfirewall: switch provisioning firewall to nftables Replace the iptables INPUT rules with an nftables table (inet aos-provfw); deprovision tears it down with nft. Depend on nftables and the conntrack modules instead of iptables. Signed-off-by: Mykola Solianko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- recipes-aos/aos-deprov/aos-deprov.bb | 2 +- recipes-aos/aos-deprov/files/deprovision.sh | 10 +--------- recipes-aos/aos-provfirewall/aos-provfirewall.bb | 5 +++-- .../aos-provfirewall/files/provfirewall.sh | 16 +++++++++++++--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/recipes-aos/aos-deprov/aos-deprov.bb b/recipes-aos/aos-deprov/aos-deprov.bb index c19d9a7c..c5ff1122 100644 --- a/recipes-aos/aos-deprov/aos-deprov.bb +++ b/recipes-aos/aos-deprov/aos-deprov.bb @@ -14,7 +14,7 @@ FILES:${PN} = " \ ${aos_opt_dir} \ " -RDEPENDS:${PN} += "aos-setupdisk" +RDEPENDS:${PN} += "aos-setupdisk nftables" do_install() { install -d ${D}${aos_opt_dir} diff --git a/recipes-aos/aos-deprov/files/deprovision.sh b/recipes-aos/aos-deprov/files/deprovision.sh index 232d5b17..d4d272d0 100644 --- a/recipes-aos/aos-deprov/files/deprovision.sh +++ b/recipes-aos/aos-deprov/files/deprovision.sh @@ -14,15 +14,7 @@ clear_disks() { } remove_firewall_rules() { - GATEWAY=$(ip route | grep default | awk '{print $3}' | head -n1) - - if [ -z "$GATEWAY" ]; then - echo "No default gateway found" - return - fi - - iptables -D INPUT -s ${GATEWAY}/32 -p tcp -m tcp --dport 22 -j ACCEPT - iptables -D INPUT -s ${GATEWAY}/32 -j DROP + nft delete table inet aos-provfw 2>/dev/null } deprovision_async() { diff --git a/recipes-aos/aos-provfirewall/aos-provfirewall.bb b/recipes-aos/aos-provfirewall/aos-provfirewall.bb index 8e6c3fa4..3a788c13 100644 --- a/recipes-aos/aos-provfirewall/aos-provfirewall.bb +++ b/recipes-aos/aos-provfirewall/aos-provfirewall.bb @@ -22,11 +22,12 @@ FILES:${PN} = " \ " RDEPENDS:${PN} += " \ - iptables \ + nftables \ " RRECOMMENDS:${PN} += " \ - kernel-module-xt-tcpudp \ + kernel-module-nf-conntrack \ + kernel-module-nft-ct \ " do_install() { diff --git a/recipes-aos/aos-provfirewall/files/provfirewall.sh b/recipes-aos/aos-provfirewall/files/provfirewall.sh index 606c47e6..0a2e930f 100755 --- a/recipes-aos/aos-provfirewall/files/provfirewall.sh +++ b/recipes-aos/aos-provfirewall/files/provfirewall.sh @@ -7,6 +7,16 @@ if [ -z "$GATEWAY" ]; then exit 1 fi -iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -iptables -A INPUT -s ${GATEWAY}/32 -p tcp -m tcp --dport 22 -j ACCEPT -iptables -A INPUT -s ${GATEWAY}/32 -j DROP +# Recreate the table from scratch so re-runs stay idempotent. +nft delete table inet aos-provfw 2>/dev/null + +nft -f - < Date: Wed, 27 May 2026 21:53:12 +0300 Subject: [PATCH 101/104] iptables: drop iptables from the image The service manager and provisioning firewall are both on nftables now, so nothing uses iptables. Remove the iptables.rules bbappend (its FORWARD-drop default conflicts with the SM nftables forward chain) and refresh the kernel options list. Signed-off-by: Mykola Solianko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- doc/integration.md | 4 ++-- recipes-connectivity/iproute2/iproute2_%.bbappend | 13 +++++++++++++ recipes-extended/iptables/files/iptables.rules | 3 --- recipes-extended/iptables/iptables_%.bbappend | 5 ----- 4 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 recipes-connectivity/iproute2/iproute2_%.bbappend delete mode 100644 recipes-extended/iptables/files/iptables.rules delete mode 100644 recipes-extended/iptables/iptables_%.bbappend diff --git a/doc/integration.md b/doc/integration.md index 20f759a8..e8851a8c 100644 --- a/doc/integration.md +++ b/doc/integration.md @@ -6,8 +6,8 @@ * required additional meta layers: meta-virtualization, meta-security; * init manager: systemd; * required distro features: virtualization, seccomp; -* kernel options (modules or builtin): bridge, nf_conncount, nfnetlink, overlay, squashfs, veth, xt_addrtype, -xt_comment, xt_conntrack, xt_masquerade +* kernel options (modules or builtin): bridge, veth, vxlan, 8021q, ifb, overlay, squashfs, nfnetlink, nf_tables, +nf_conntrack, nf_nat, nft_ct, nft_nat, nft_chain_nat, nft_masq, sch_tbf, sch_ingress, act_mirred, cls_matchall * dedicated RW partition to store Aos services, layers and OTA update artifacts. ## Main components integration diff --git a/recipes-connectivity/iproute2/iproute2_%.bbappend b/recipes-connectivity/iproute2/iproute2_%.bbappend new file mode 100644 index 00000000..8c5d0209 --- /dev/null +++ b/recipes-connectivity/iproute2/iproute2_%.bbappend @@ -0,0 +1,13 @@ +# Aos uses nftables exclusively. iproute2 links libxtables only to provide +# tc's "action xt/ipt" modules (which Aos does not use); that linkage is what +# drags the whole iptables package into the image. Drop the iptables build +# dependency so tc is built without libxtables and no longer pulls iptables. +DEPENDS:remove = "iptables" + +# Those xt/ipt action modules were the only shared objects under ${libdir}/tc +# (the rest are linked into the tc binary), so without them the directory is +# installed empty. Drop it so packaging does not flag it as +# installed-but-not-shipped. +do_install:append() { + rmdir "${D}${libdir}/tc" 2>/dev/null || true +} diff --git a/recipes-extended/iptables/files/iptables.rules b/recipes-extended/iptables/files/iptables.rules deleted file mode 100644 index 2ecad559..00000000 --- a/recipes-extended/iptables/files/iptables.rules +++ /dev/null @@ -1,3 +0,0 @@ -*filter -:FORWARD DROP [0:0] -COMMIT diff --git a/recipes-extended/iptables/iptables_%.bbappend b/recipes-extended/iptables/iptables_%.bbappend deleted file mode 100644 index 339cdebc..00000000 --- a/recipes-extended/iptables/iptables_%.bbappend +++ /dev/null @@ -1,5 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/files:" - -SRC_URI += "\ - file://iptables.rules \ -" From 44ac97c6cb720a29b618ba06b3e329ca4e871556 Mon Sep 17 00:00:00 2001 From: Mykola Solianko Date: Thu, 28 May 2026 10:50:23 +0300 Subject: [PATCH 102/104] firewall: provision OS-level fail-closed forward default-drop After the iptables removal the global forward default-drop survived only in the SM-owned inet aos table, which vanishes when SM is down. Ship that table (forward chain policy drop + ct rules, empty postrouting nat chain) as a boot nftables ruleset loaded before aos-sm, additively so SM augments the same table at runtime. Signed-off-by: Mykola Solianko Reviewed-by: Mykola Kobets Reviewed-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- recipes-aos/aos-nftables/aos-nftables.bb | 37 +++++++++++++++++++ .../aos-nftables/files/aos-nftables.service | 16 ++++++++ recipes-aos/aos-nftables/files/aos.nft | 25 +++++++++++++ recipes-core/images/aos-image.inc | 1 + 4 files changed, 79 insertions(+) create mode 100644 recipes-aos/aos-nftables/aos-nftables.bb create mode 100644 recipes-aos/aos-nftables/files/aos-nftables.service create mode 100644 recipes-aos/aos-nftables/files/aos.nft diff --git a/recipes-aos/aos-nftables/aos-nftables.bb b/recipes-aos/aos-nftables/aos-nftables.bb new file mode 100644 index 00000000..ae4ff668 --- /dev/null +++ b/recipes-aos/aos-nftables/aos-nftables.bb @@ -0,0 +1,37 @@ +DESCRIPTION = "Aos base nftables ruleset (fail-closed forward default-drop)" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = " \ + file://aos.nft \ + file://aos-nftables.service \ +" + +S = "${WORKDIR}" + +inherit systemd + +SYSTEMD_SERVICE:${PN} = "aos-nftables.service" + +FILES:${PN} = " \ + ${sysconfdir} \ + ${systemd_system_unitdir} \ +" + +RDEPENDS:${PN} += " \ + nftables \ +" + +RRECOMMENDS:${PN} += " \ + kernel-module-nf-conntrack \ + kernel-module-nft-ct \ +" + +do_install() { + install -d ${D}${sysconfdir}/nftables + install -m 0644 ${WORKDIR}/aos.nft ${D}${sysconfdir}/nftables/aos.nft + + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/aos-nftables.service ${D}${systemd_system_unitdir} +} diff --git a/recipes-aos/aos-nftables/files/aos-nftables.service b/recipes-aos/aos-nftables/files/aos-nftables.service new file mode 100644 index 00000000..a4339ccf --- /dev/null +++ b/recipes-aos/aos-nftables/files/aos-nftables.service @@ -0,0 +1,16 @@ +[Unit] +Description=Aos base nftables ruleset (fail-closed forward default-drop) +Wants=network-pre.target +Before=network-pre.target aos-sm.service +After=sysinit.target +DefaultDependencies=no +Conflicts=shutdown.target +Before=shutdown.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/sbin/nft -f /etc/nftables/aos.nft + +[Install] +WantedBy=multi-user.target diff --git a/recipes-aos/aos-nftables/files/aos.nft b/recipes-aos/aos-nftables/files/aos.nft new file mode 100644 index 00000000..af1f9042 --- /dev/null +++ b/recipes-aos/aos-nftables/files/aos.nft @@ -0,0 +1,25 @@ +#!/usr/sbin/nft -f + +# Aos base firewall ruleset - fail-closed forward default-drop (NET-15). +# +# OS-provisioned safety net: the global forward default-drop must survive even +# when the service manager is down. The service manager augments THIS SAME +# table at runtime (per-instance chains, forward jumps, postrouting +# masquerade), so this ruleset is strictly additive: +# * it never runs "flush ruleset" and never deletes "table inet aos", so the +# service manager's live rules are never wiped; +# * "add table"/"add chain" are idempotent, so re-applying re-asserts the +# base chains without removing the service manager's injected rules. +# +# The schema is a shared contract with aos_core_cpp - the table/chain names and +# priorities must match src/sm/networkmanager/firewall.hpp (table inet aos, +# chain forward filter/hook forward/priority 0, chain postrouting nat/hook +# postrouting/priority 100), or the service manager cannot inject into it. + +add table inet aos + +add chain inet aos forward { type filter hook forward priority 0; policy drop; } +add chain inet aos postrouting { type nat hook postrouting priority 100; } + +add rule inet aos forward ct state invalid drop +add rule inet aos forward ct state established,related accept diff --git a/recipes-core/images/aos-image.inc b/recipes-core/images/aos-image.inc index 5655b2ce..85454196 100644 --- a/recipes-core/images/aos-image.inc +++ b/recipes-core/images/aos-image.inc @@ -94,6 +94,7 @@ IMAGE_INSTALL:append = " \ aos-servicemanager \ aos-deprov \ aos-provfirewall \ + aos-nftables \ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', ' \ packagegroup-selinux-minimal \ packagegroup-selinux-policycoreutils \ From 765ffad8b3151e684a7fdf5d4a1df9b51acdb6c8 Mon Sep 17 00:00:00 2001 From: Oleksandr Grytsov Date: Sat, 6 Jun 2026 21:02:27 +0300 Subject: [PATCH 103/104] recipes-security: switch refpolicy to develop branch Signed-off-by: Oleksandr Grytsov Reviewed-by: Mykhailo Lohvynenko --- recipes-security/refpolicy/refpolicy-aos_git.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-security/refpolicy/refpolicy-aos_git.bb b/recipes-security/refpolicy/refpolicy-aos_git.bb index 22c6067a..a9c15b8c 100644 --- a/recipes-security/refpolicy/refpolicy-aos_git.bb +++ b/recipes-security/refpolicy/refpolicy-aos_git.bb @@ -11,8 +11,8 @@ include recipes-security/refpolicy/refpolicy_common.inc PV = "2_20220106+git${SRCPV}" -BRANCH = "master" -SRCREV = "0c6c742ee214cb242c1ed9119847d64bf093f4fe" +BRANCH = "develop" +SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/aosedge/refpolicy.git;branch=${BRANCH};protocol=https;name=refpolicy;destsuffix=refpolicy" From 68e7be40307f0d0d21646198b9019c689977692c Mon Sep 17 00:00:00 2001 From: Mykhailo Lohvynenko Date: Sun, 7 Jun 2026 15:29:23 +0300 Subject: [PATCH 104/104] connectivity: kuksa-databroker: update to 0.6.1 Signed-off-by: Mykhailo Lohvynenko --- .../kuksa-databroker-crates.inc | 1544 ++++++++++------- .../0001-Remove-protobuf-src-usage.patch | 88 +- .../kuksa-databroker/kuksa-databroker_git.bb | 4 +- 3 files changed, 928 insertions(+), 708 deletions(-) diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc b/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc index 47a6625e..aa665528 100644 --- a/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker-crates.inc @@ -2,70 +2,78 @@ # from Cargo.lock SRC_URI += " \ - crate://crates.io/addr2line/0.24.2 \ - crate://crates.io/adler2/2.0.0 \ - crate://crates.io/ahash/0.8.11 \ - crate://crates.io/aho-corasick/1.1.3 \ - crate://crates.io/allocator-api2/0.2.20 \ - crate://crates.io/android-tzdata/0.1.1 \ + crate://crates.io/adler2/2.0.1 \ + crate://crates.io/ahash/0.8.12 \ + crate://crates.io/aho-corasick/1.1.4 \ + crate://crates.io/allocator-api2/0.2.21 \ crate://crates.io/android_system_properties/0.1.5 \ crate://crates.io/ansi_term/0.12.1 \ - crate://crates.io/anstream/0.6.18 \ - crate://crates.io/anstyle/1.0.10 \ - crate://crates.io/anstyle-parse/0.2.6 \ - crate://crates.io/anstyle-query/1.1.2 \ - crate://crates.io/anstyle-wincon/3.0.6 \ - crate://crates.io/anyhow/1.0.93 \ - crate://crates.io/arc-swap/1.7.1 \ + crate://crates.io/anstream/1.0.0 \ + crate://crates.io/anstyle/1.0.14 \ + crate://crates.io/anstyle-parse/1.0.0 \ + crate://crates.io/anstyle-query/1.1.5 \ + crate://crates.io/anstyle-wincon/3.0.11 \ + crate://crates.io/anyhow/1.0.102 \ + crate://crates.io/arc-swap/1.9.0 \ crate://crates.io/arrayref/0.3.9 \ crate://crates.io/arrayvec/0.5.2 \ crate://crates.io/async-stream/0.3.6 \ crate://crates.io/async-stream-impl/0.3.6 \ - crate://crates.io/async-trait/0.1.83 \ - crate://crates.io/autocfg/1.4.0 \ - crate://crates.io/autotools/0.2.7 \ + crate://crates.io/async-trait/0.1.89 \ + crate://crates.io/atomic-waker/1.1.2 \ + crate://crates.io/autocfg/1.5.0 \ crate://crates.io/axum/0.6.20 \ + crate://crates.io/axum/0.8.8 \ crate://crates.io/axum-core/0.3.4 \ - crate://crates.io/backtrace/0.3.74 \ + crate://crates.io/axum-core/0.5.6 \ + crate://crates.io/base16ct/0.2.0 \ crate://crates.io/base64/0.13.1 \ crate://crates.io/base64/0.21.7 \ crate://crates.io/base64/0.22.1 \ + crate://crates.io/base64ct/1.8.3 \ crate://crates.io/bitflags/1.3.2 \ - crate://crates.io/bitflags/2.6.0 \ + crate://crates.io/bitflags/2.11.0 \ crate://crates.io/blake2b_simd/0.5.11 \ crate://crates.io/block-buffer/0.10.4 \ - crate://crates.io/bstr/1.11.0 \ - crate://crates.io/bumpalo/3.16.0 \ - crate://crates.io/bytecount/0.6.8 \ + crate://crates.io/bstr/1.12.1 \ + crate://crates.io/bumpalo/3.20.2 \ + crate://crates.io/bytecount/0.6.9 \ crate://crates.io/byteorder/1.5.0 \ - crate://crates.io/bytes/1.8.0 \ - crate://crates.io/camino/1.1.9 \ - crate://crates.io/cargo-platform/0.1.8 \ + crate://crates.io/bytes/1.11.1 \ + crate://crates.io/camino/1.2.2 \ + crate://crates.io/cargo-platform/0.1.9 \ crate://crates.io/cargo_metadata/0.18.1 \ - crate://crates.io/cc/1.2.1 \ - crate://crates.io/cfg-if/1.0.0 \ - crate://crates.io/chrono/0.4.38 \ - crate://crates.io/clap/4.5.21 \ - crate://crates.io/clap_builder/4.5.21 \ - crate://crates.io/clap_derive/4.5.18 \ - crate://crates.io/clap_lex/0.7.3 \ - crate://crates.io/clru/0.6.2 \ - crate://crates.io/colorchoice/1.0.3 \ - crate://crates.io/console/0.15.8 \ + crate://crates.io/cc/1.2.58 \ + crate://crates.io/cfg-if/1.0.4 \ + crate://crates.io/chrono/0.4.44 \ + crate://crates.io/clap/4.6.0 \ + crate://crates.io/clap_builder/4.6.0 \ + crate://crates.io/clap_derive/4.6.0 \ + crate://crates.io/clap_lex/1.1.0 \ + crate://crates.io/clru/0.6.3 \ + crate://crates.io/colorchoice/1.0.5 \ + crate://crates.io/console/0.15.11 \ + crate://crates.io/const-oid/0.9.6 \ crate://crates.io/constant_time_eq/0.1.5 \ crate://crates.io/core-foundation-sys/0.8.7 \ - crate://crates.io/cpufeatures/0.2.16 \ - crate://crates.io/crc32fast/1.4.2 \ - crate://crates.io/crossbeam-deque/0.8.5 \ + crate://crates.io/cpufeatures/0.2.17 \ + crate://crates.io/crc32fast/1.5.0 \ + crate://crates.io/crossbeam-channel/0.5.15 \ + crate://crates.io/crossbeam-deque/0.8.6 \ crate://crates.io/crossbeam-epoch/0.9.18 \ - crate://crates.io/crossbeam-utils/0.8.20 \ + crate://crates.io/crossbeam-utils/0.8.21 \ + crate://crates.io/crypto-bigint/0.5.5 \ crate://crates.io/crypto-common/0.1.6 \ crate://crates.io/cucumber/0.20.2 \ crate://crates.io/cucumber-codegen/0.20.2 \ crate://crates.io/cucumber-expressions/0.3.0 \ - crate://crates.io/data-encoding/2.6.0 \ - crate://crates.io/deranged/0.3.11 \ - crate://crates.io/derive_more/0.99.18 \ + crate://crates.io/curve25519-dalek/4.1.3 \ + crate://crates.io/curve25519-dalek-derive/0.1.1 \ + crate://crates.io/dashmap/5.5.3 \ + crate://crates.io/data-encoding/2.10.0 \ + crate://crates.io/der/0.7.10 \ + crate://crates.io/deranged/0.5.8 \ + crate://crates.io/derive_more/0.99.20 \ crate://crates.io/digest/0.10.7 \ crate://crates.io/dirs/1.0.5 \ crate://crates.io/dirs/4.0.0 \ @@ -73,38 +81,49 @@ SRC_URI += " \ crate://crates.io/displaydoc/0.2.5 \ crate://crates.io/drain_filter_polyfill/0.1.3 \ crate://crates.io/dunce/1.0.5 \ - crate://crates.io/either/1.13.0 \ - crate://crates.io/encode_unicode/0.3.6 \ - crate://crates.io/equivalent/1.0.1 \ - crate://crates.io/errno/0.3.9 \ + crate://crates.io/ecdsa/0.16.9 \ + crate://crates.io/ed25519/2.2.3 \ + crate://crates.io/ed25519-dalek/2.2.0 \ + crate://crates.io/either/1.15.0 \ + crate://crates.io/elliptic-curve/0.13.8 \ + crate://crates.io/encode_unicode/1.0.0 \ + crate://crates.io/env_filter/1.0.1 \ + crate://crates.io/env_logger/0.11.10 \ + crate://crates.io/equivalent/1.0.2 \ + crate://crates.io/errno/0.3.14 \ crate://crates.io/faster-hex/0.9.0 \ - crate://crates.io/fastrand/2.2.0 \ - crate://crates.io/filetime/0.2.25 \ - crate://crates.io/fixedbitset/0.4.2 \ - crate://crates.io/flate2/1.0.35 \ + crate://crates.io/fastrand/2.3.0 \ + crate://crates.io/ff/0.13.1 \ + crate://crates.io/fiat-crypto/0.2.9 \ + crate://crates.io/filetime/0.2.27 \ + crate://crates.io/find-msvc-tools/0.1.9 \ + crate://crates.io/fixedbitset/0.5.7 \ + crate://crates.io/flate2/1.1.9 \ crate://crates.io/fnv/1.0.7 \ - crate://crates.io/form_urlencoded/1.2.1 \ - crate://crates.io/futures/0.3.31 \ - crate://crates.io/futures-channel/0.3.31 \ - crate://crates.io/futures-core/0.3.31 \ - crate://crates.io/futures-executor/0.3.31 \ - crate://crates.io/futures-io/0.3.31 \ - crate://crates.io/futures-macro/0.3.31 \ - crate://crates.io/futures-sink/0.3.31 \ - crate://crates.io/futures-task/0.3.31 \ - crate://crates.io/futures-util/0.3.31 \ - crate://crates.io/generic-array/0.14.7 \ + crate://crates.io/foldhash/0.1.5 \ + crate://crates.io/foldhash/0.2.0 \ + crate://crates.io/form_urlencoded/1.2.2 \ + crate://crates.io/futures/0.3.32 \ + crate://crates.io/futures-channel/0.3.32 \ + crate://crates.io/futures-core/0.3.32 \ + crate://crates.io/futures-executor/0.3.32 \ + crate://crates.io/futures-io/0.3.32 \ + crate://crates.io/futures-macro/0.3.32 \ + crate://crates.io/futures-sink/0.3.32 \ + crate://crates.io/futures-task/0.3.32 \ + crate://crates.io/futures-util/0.3.32 \ + crate://crates.io/generic-array/0.14.9 \ crate://crates.io/getrandom/0.1.16 \ - crate://crates.io/getrandom/0.2.15 \ + crate://crates.io/getrandom/0.2.17 \ + crate://crates.io/getrandom/0.4.2 \ crate://crates.io/gherkin/0.14.0 \ - crate://crates.io/gimli/0.31.1 \ crate://crates.io/gix/0.63.0 \ crate://crates.io/gix-actor/0.31.5 \ - crate://crates.io/gix-bitmap/0.2.13 \ - crate://crates.io/gix-chunk/0.4.10 \ + crate://crates.io/gix-bitmap/0.2.16 \ + crate://crates.io/gix-chunk/0.4.12 \ crate://crates.io/gix-commitgraph/0.24.3 \ crate://crates.io/gix-config/0.37.0 \ - crate://crates.io/gix-config-value/0.14.10 \ + crate://crates.io/gix-config-value/0.14.12 \ crate://crates.io/gix-date/0.8.7 \ crate://crates.io/gix-diff/0.44.1 \ crate://crates.io/gix-discover/0.32.0 \ @@ -119,249 +138,313 @@ SRC_URI += " \ crate://crates.io/gix-object/0.42.3 \ crate://crates.io/gix-odb/0.61.1 \ crate://crates.io/gix-pack/0.51.1 \ - crate://crates.io/gix-path/0.10.13 \ - crate://crates.io/gix-quote/0.4.14 \ + crate://crates.io/gix-path/0.10.22 \ + crate://crates.io/gix-quote/0.4.15 \ crate://crates.io/gix-ref/0.44.1 \ crate://crates.io/gix-refspec/0.23.1 \ crate://crates.io/gix-revision/0.27.2 \ crate://crates.io/gix-revwalk/0.13.2 \ - crate://crates.io/gix-sec/0.10.10 \ + crate://crates.io/gix-sec/0.10.12 \ crate://crates.io/gix-tempfile/14.0.2 \ - crate://crates.io/gix-trace/0.1.11 \ + crate://crates.io/gix-trace/0.1.18 \ crate://crates.io/gix-traverse/0.39.2 \ crate://crates.io/gix-url/0.27.5 \ - crate://crates.io/gix-utils/0.1.13 \ + crate://crates.io/gix-utils/0.1.14 \ crate://crates.io/gix-validate/0.8.5 \ + crate://crates.io/gix-validate/0.10.1 \ crate://crates.io/glob-match/0.2.1 \ - crate://crates.io/globset/0.4.15 \ + crate://crates.io/globset/0.4.18 \ crate://crates.io/globwalk/0.8.1 \ - crate://crates.io/h2/0.3.26 \ + crate://crates.io/group/0.13.0 \ + crate://crates.io/h2/0.3.27 \ + crate://crates.io/h2/0.4.13 \ crate://crates.io/hashbrown/0.12.3 \ crate://crates.io/hashbrown/0.14.5 \ - crate://crates.io/hashbrown/0.15.2 \ + crate://crates.io/hashbrown/0.15.5 \ + crate://crates.io/hashbrown/0.16.1 \ crate://crates.io/heck/0.4.1 \ crate://crates.io/heck/0.5.0 \ - crate://crates.io/hermit-abi/0.3.9 \ - crate://crates.io/home/0.5.9 \ + crate://crates.io/hkdf/0.12.4 \ + crate://crates.io/hmac/0.12.1 \ + crate://crates.io/home/0.5.12 \ crate://crates.io/http/0.2.12 \ + crate://crates.io/http/1.4.0 \ crate://crates.io/http-body/0.4.6 \ - crate://crates.io/httparse/1.9.5 \ + crate://crates.io/http-body/1.0.1 \ + crate://crates.io/http-body-util/0.1.3 \ + crate://crates.io/httparse/1.10.1 \ crate://crates.io/httpdate/1.0.3 \ - crate://crates.io/humantime/2.1.0 \ - crate://crates.io/hyper/0.14.31 \ + crate://crates.io/humantime/2.3.0 \ + crate://crates.io/hyper/0.14.32 \ + crate://crates.io/hyper/1.9.0 \ crate://crates.io/hyper-timeout/0.4.1 \ - crate://crates.io/iana-time-zone/0.1.61 \ + crate://crates.io/hyper-timeout/0.5.2 \ + crate://crates.io/hyper-util/0.1.20 \ + crate://crates.io/iana-time-zone/0.1.65 \ crate://crates.io/iana-time-zone-haiku/0.1.2 \ - crate://crates.io/icu_collections/1.5.0 \ - crate://crates.io/icu_locid/1.5.0 \ - crate://crates.io/icu_locid_transform/1.5.0 \ - crate://crates.io/icu_locid_transform_data/1.5.0 \ - crate://crates.io/icu_normalizer/1.5.0 \ - crate://crates.io/icu_normalizer_data/1.5.0 \ - crate://crates.io/icu_properties/1.5.1 \ - crate://crates.io/icu_properties_data/1.5.0 \ - crate://crates.io/icu_provider/1.5.0 \ - crate://crates.io/icu_provider_macros/1.5.0 \ - crate://crates.io/idna/1.0.3 \ - crate://crates.io/idna_adapter/1.2.0 \ - crate://crates.io/ignore/0.4.23 \ + crate://crates.io/icu_collections/2.1.1 \ + crate://crates.io/icu_locale_core/2.1.1 \ + crate://crates.io/icu_normalizer/2.1.1 \ + crate://crates.io/icu_normalizer_data/2.1.1 \ + crate://crates.io/icu_properties/2.1.2 \ + crate://crates.io/icu_properties_data/2.1.2 \ + crate://crates.io/icu_provider/2.1.1 \ + crate://crates.io/id-arena/2.3.0 \ + crate://crates.io/idna/1.1.0 \ + crate://crates.io/idna_adapter/1.2.1 \ + crate://crates.io/ignore/0.4.25 \ crate://crates.io/indexmap/1.9.3 \ - crate://crates.io/indexmap/2.6.0 \ + crate://crates.io/indexmap/2.13.0 \ crate://crates.io/inflections/1.1.1 \ - crate://crates.io/inventory/0.3.15 \ - crate://crates.io/is_terminal_polyfill/1.70.1 \ + crate://crates.io/inventory/0.3.24 \ + crate://crates.io/is_terminal_polyfill/1.70.2 \ + crate://crates.io/itertools/0.10.5 \ crate://crates.io/itertools/0.12.1 \ - crate://crates.io/itoa/1.0.13 \ + crate://crates.io/itertools/0.14.0 \ + crate://crates.io/itoa/1.0.18 \ crate://crates.io/jemalloc-sys/0.5.4+5.3.0-patched \ crate://crates.io/jemallocator/0.5.4 \ - crate://crates.io/js-sys/0.3.72 \ - crate://crates.io/jsonwebtoken/9.3.0 \ - crate://crates.io/lazy-regex/3.3.0 \ - crate://crates.io/lazy-regex-proc_macros/3.3.0 \ + crate://crates.io/jiff/0.2.23 \ + crate://crates.io/jiff-static/0.2.23 \ + crate://crates.io/js-sys/0.3.94 \ + crate://crates.io/jsonwebtoken/10.3.0 \ + crate://crates.io/lazy-regex/3.6.0 \ + crate://crates.io/lazy-regex-proc_macros/3.6.0 \ crate://crates.io/lazy_static/1.5.0 \ - crate://crates.io/libc/0.2.164 \ - crate://crates.io/libredox/0.1.3 \ + crate://crates.io/leb128fmt/0.1.0 \ + crate://crates.io/libc/0.2.183 \ + crate://crates.io/libm/0.2.16 \ + crate://crates.io/libredox/0.1.15 \ crate://crates.io/linefeed/0.6.0 \ crate://crates.io/linked-hash-map/0.5.6 \ - crate://crates.io/linux-raw-sys/0.4.14 \ - crate://crates.io/litemap/0.7.4 \ - crate://crates.io/lock_api/0.4.12 \ - crate://crates.io/log/0.4.22 \ - crate://crates.io/matchers/0.1.0 \ + crate://crates.io/linux-raw-sys/0.4.15 \ + crate://crates.io/linux-raw-sys/0.12.1 \ + crate://crates.io/litemap/0.8.1 \ + crate://crates.io/lock_api/0.4.14 \ + crate://crates.io/log/0.4.29 \ + crate://crates.io/matchers/0.2.0 \ crate://crates.io/matchit/0.7.3 \ - crate://crates.io/memchr/2.7.4 \ - crate://crates.io/memmap2/0.9.5 \ + crate://crates.io/matchit/0.8.4 \ + crate://crates.io/memchr/2.8.0 \ + crate://crates.io/memmap2/0.9.10 \ 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/miniz_oxide/0.8.9 \ + crate://crates.io/mio/1.2.0 \ crate://crates.io/mortal/0.2.4 \ - crate://crates.io/multimap/0.10.0 \ + crate://crates.io/multimap/0.10.1 \ crate://crates.io/nix/0.26.4 \ crate://crates.io/nom/7.1.3 \ crate://crates.io/nom_locate/4.2.0 \ - crate://crates.io/nu-ansi-term/0.46.0 \ + crate://crates.io/nu-ansi-term/0.50.3 \ crate://crates.io/num-bigint/0.4.6 \ - crate://crates.io/num-conv/0.1.0 \ + crate://crates.io/num-bigint-dig/0.8.6 \ + crate://crates.io/num-conv/0.2.1 \ crate://crates.io/num-integer/0.1.46 \ + crate://crates.io/num-iter/0.1.45 \ crate://crates.io/num-traits/0.2.19 \ crate://crates.io/num_threads/0.1.7 \ - crate://crates.io/object/0.36.5 \ - crate://crates.io/once_cell/1.20.2 \ - crate://crates.io/overload/0.1.1 \ - crate://crates.io/parking_lot/0.12.3 \ - crate://crates.io/parking_lot_core/0.9.10 \ + crate://crates.io/once_cell/1.21.4 \ + crate://crates.io/once_cell_polyfill/1.70.2 \ + crate://crates.io/opentelemetry/0.19.0 \ + crate://crates.io/opentelemetry-otlp/0.12.0 \ + crate://crates.io/opentelemetry-proto/0.2.0 \ + crate://crates.io/opentelemetry-semantic-conventions/0.11.0 \ + crate://crates.io/opentelemetry_api/0.19.0 \ + crate://crates.io/opentelemetry_sdk/0.19.0 \ + crate://crates.io/p256/0.13.2 \ + crate://crates.io/p384/0.13.1 \ + crate://crates.io/parking_lot/0.12.5 \ + crate://crates.io/parking_lot_core/0.9.12 \ crate://crates.io/peg/0.6.3 \ crate://crates.io/peg-macros/0.6.3 \ crate://crates.io/peg-runtime/0.6.3 \ - crate://crates.io/pem/3.0.4 \ - crate://crates.io/percent-encoding/2.3.1 \ - crate://crates.io/petgraph/0.6.5 \ - crate://crates.io/phf/0.11.2 \ - crate://crates.io/phf_codegen/0.11.2 \ - crate://crates.io/phf_generator/0.11.2 \ - crate://crates.io/phf_shared/0.11.2 \ - crate://crates.io/pin-project/1.1.7 \ - crate://crates.io/pin-project-internal/1.1.7 \ - crate://crates.io/pin-project-lite/0.2.15 \ - crate://crates.io/pin-utils/0.1.0 \ + crate://crates.io/pem/3.0.6 \ + crate://crates.io/pem-rfc7468/0.7.0 \ + crate://crates.io/percent-encoding/2.3.2 \ + crate://crates.io/petgraph/0.8.3 \ + crate://crates.io/phf/0.11.3 \ + crate://crates.io/phf_codegen/0.11.3 \ + crate://crates.io/phf_generator/0.11.3 \ + crate://crates.io/phf_shared/0.11.3 \ + crate://crates.io/pin-project/1.1.11 \ + crate://crates.io/pin-project-internal/1.1.11 \ + crate://crates.io/pin-project-lite/0.2.17 \ + crate://crates.io/pkcs1/0.7.5 \ + crate://crates.io/pkcs8/0.10.2 \ + crate://crates.io/plain/0.2.3 \ + crate://crates.io/portable-atomic/1.13.1 \ + crate://crates.io/portable-atomic-util/0.2.6 \ + crate://crates.io/potential_utf/0.1.4 \ crate://crates.io/powerfmt/0.2.0 \ - crate://crates.io/ppv-lite86/0.2.20 \ - crate://crates.io/prettyplease/0.2.25 \ - crate://crates.io/proc-macro2/1.0.92 \ + crate://crates.io/ppv-lite86/0.2.21 \ + crate://crates.io/prettyplease/0.2.37 \ + crate://crates.io/primeorder/0.13.6 \ + crate://crates.io/proc-macro2/1.0.106 \ crate://crates.io/prodash/28.0.0 \ - crate://crates.io/prost/0.12.6 \ - 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/protobuf-src/1.1.0+21.5 \ - crate://crates.io/quote/1.0.37 \ + crate://crates.io/prost/0.11.9 \ + crate://crates.io/prost/0.14.3 \ + crate://crates.io/prost-build/0.14.3 \ + crate://crates.io/prost-derive/0.11.9 \ + crate://crates.io/prost-derive/0.14.3 \ + crate://crates.io/prost-types/0.14.3 \ + crate://crates.io/quote/1.0.45 \ + crate://crates.io/r-efi/6.0.0 \ 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/redox_syscall/0.1.57 \ - crate://crates.io/redox_syscall/0.5.7 \ + crate://crates.io/redox_syscall/0.5.18 \ + crate://crates.io/redox_syscall/0.7.3 \ crate://crates.io/redox_users/0.3.5 \ crate://crates.io/redox_users/0.4.6 \ - crate://crates.io/regex/1.11.1 \ - crate://crates.io/regex-automata/0.1.10 \ - crate://crates.io/regex-automata/0.4.9 \ - crate://crates.io/regex-syntax/0.6.29 \ + crate://crates.io/regex/1.12.3 \ + crate://crates.io/regex-automata/0.4.14 \ crate://crates.io/regex-syntax/0.7.5 \ - crate://crates.io/regex-syntax/0.8.5 \ - crate://crates.io/ring/0.17.8 \ + crate://crates.io/regex-syntax/0.8.10 \ + crate://crates.io/rfc6979/0.4.0 \ + crate://crates.io/ring/0.17.14 \ + crate://crates.io/rsa/0.9.10 \ crate://crates.io/rust-argon2/0.8.3 \ - crate://crates.io/rustc-demangle/0.1.24 \ - crate://crates.io/rustix/0.38.41 \ - crate://crates.io/rustls/0.22.4 \ - crate://crates.io/rustls-pemfile/2.2.0 \ - crate://crates.io/rustls-pki-types/1.10.0 \ - crate://crates.io/rustls-webpki/0.102.8 \ - crate://crates.io/rustversion/1.0.18 \ - crate://crates.io/ryu/1.0.18 \ + crate://crates.io/rustc_version/0.4.1 \ + crate://crates.io/rustix/0.38.44 \ + crate://crates.io/rustix/1.1.4 \ + crate://crates.io/rustls/0.23.37 \ + crate://crates.io/rustls-pki-types/1.14.0 \ + crate://crates.io/rustls-webpki/0.103.10 \ + crate://crates.io/rustversion/1.0.22 \ + crate://crates.io/ryu/1.0.23 \ crate://crates.io/same-file/1.0.6 \ crate://crates.io/scopeguard/1.2.0 \ - crate://crates.io/sd-notify/0.4.3 \ + crate://crates.io/sd-notify/0.4.5 \ crate://crates.io/sealed/0.5.0 \ - crate://crates.io/semver/1.0.23 \ - crate://crates.io/serde/1.0.215 \ - crate://crates.io/serde_derive/1.0.215 \ - crate://crates.io/serde_json/1.0.133 \ - crate://crates.io/serde_path_to_error/0.1.16 \ + crate://crates.io/sec1/0.7.3 \ + crate://crates.io/semver/1.0.27 \ + crate://crates.io/serde/1.0.228 \ + crate://crates.io/serde_core/1.0.228 \ + crate://crates.io/serde_derive/1.0.228 \ + crate://crates.io/serde_json/1.0.149 \ + crate://crates.io/serde_path_to_error/0.1.20 \ crate://crates.io/serde_urlencoded/0.7.1 \ crate://crates.io/sha1/0.10.6 \ crate://crates.io/sha1_smol/1.0.1 \ + crate://crates.io/sha2/0.10.9 \ crate://crates.io/sharded-slab/0.1.7 \ crate://crates.io/shlex/1.3.0 \ - crate://crates.io/signal-hook/0.3.17 \ - crate://crates.io/signal-hook-registry/1.4.2 \ - crate://crates.io/simple_asn1/0.6.2 \ - crate://crates.io/siphasher/0.3.11 \ - crate://crates.io/slab/0.4.9 \ + crate://crates.io/signal-hook/0.3.18 \ + crate://crates.io/signal-hook-registry/1.4.8 \ + crate://crates.io/signature/2.2.0 \ + crate://crates.io/simd-adler32/0.3.9 \ + crate://crates.io/simple_asn1/0.6.4 \ + crate://crates.io/siphasher/1.0.2 \ + crate://crates.io/slab/0.4.12 \ crate://crates.io/smallstr/0.2.0 \ - crate://crates.io/smallvec/1.13.2 \ + crate://crates.io/smallvec/1.15.1 \ crate://crates.io/smart-default/0.7.1 \ crate://crates.io/smawk/0.3.2 \ - crate://crates.io/socket2/0.5.7 \ + crate://crates.io/socket2/0.5.10 \ + crate://crates.io/socket2/0.6.3 \ crate://crates.io/spin/0.9.8 \ + crate://crates.io/spki/0.7.3 \ crate://crates.io/sqlparser/0.16.0 \ - crate://crates.io/stable_deref_trait/1.2.0 \ + crate://crates.io/stable_deref_trait/1.2.1 \ crate://crates.io/strsim/0.11.1 \ crate://crates.io/subtle/2.6.1 \ - crate://crates.io/syn/2.0.89 \ + crate://crates.io/syn/1.0.109 \ + crate://crates.io/syn/2.0.117 \ crate://crates.io/sync_wrapper/0.1.2 \ - crate://crates.io/synstructure/0.13.1 \ + crate://crates.io/sync_wrapper/1.0.2 \ + crate://crates.io/synstructure/0.13.2 \ crate://crates.io/synthez/0.3.1 \ crate://crates.io/synthez-codegen/0.3.1 \ crate://crates.io/synthez-core/0.3.1 \ - crate://crates.io/tempfile/3.14.0 \ - crate://crates.io/terminal_size/0.4.0 \ + crate://crates.io/tempfile/3.27.0 \ + crate://crates.io/terminal_size/0.4.4 \ crate://crates.io/terminfo/0.8.0 \ - crate://crates.io/textwrap/0.16.1 \ + crate://crates.io/textwrap/0.16.2 \ crate://crates.io/thiserror/1.0.69 \ - crate://crates.io/thiserror/2.0.3 \ + crate://crates.io/thiserror/2.0.18 \ crate://crates.io/thiserror-impl/1.0.69 \ - crate://crates.io/thiserror-impl/2.0.3 \ - crate://crates.io/thread_local/1.1.8 \ - crate://crates.io/time/0.3.36 \ - crate://crates.io/time-core/0.1.2 \ - crate://crates.io/time-macros/0.2.18 \ - crate://crates.io/tinystr/0.7.6 \ - crate://crates.io/tinyvec/1.8.0 \ + crate://crates.io/thiserror-impl/2.0.18 \ + crate://crates.io/thread_local/1.1.9 \ + crate://crates.io/time/0.3.47 \ + crate://crates.io/time-core/0.1.8 \ + crate://crates.io/time-macros/0.2.27 \ + crate://crates.io/tinystr/0.8.2 \ + crate://crates.io/tinyvec/1.11.0 \ crate://crates.io/tinyvec_macros/0.1.1 \ - crate://crates.io/tokio/1.41.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/1.50.0 \ + crate://crates.io/tokio-io-timeout/1.2.1 \ + crate://crates.io/tokio-macros/2.6.1 \ + crate://crates.io/tokio-rustls/0.26.4 \ + crate://crates.io/tokio-stream/0.1.18 \ crate://crates.io/tokio-tungstenite/0.20.1 \ - crate://crates.io/tokio-util/0.7.12 \ - crate://crates.io/tonic/0.11.0 \ - crate://crates.io/tonic-build/0.11.0 \ - crate://crates.io/tonic-mock/0.3.0 \ - crate://crates.io/tonic-reflection/0.11.0 \ + crate://crates.io/tokio-util/0.7.18 \ + crate://crates.io/tonic/0.8.3 \ + crate://crates.io/tonic/0.14.5 \ + crate://crates.io/tonic-build/0.14.5 \ + crate://crates.io/tonic-prost/0.14.5 \ + crate://crates.io/tonic-prost-build/0.14.5 \ + crate://crates.io/tonic-reflection/0.14.5 \ crate://crates.io/tower/0.4.13 \ + crate://crates.io/tower/0.5.3 \ crate://crates.io/tower-layer/0.3.3 \ crate://crates.io/tower-service/0.3.3 \ - crate://crates.io/tracing/0.1.40 \ - crate://crates.io/tracing-attributes/0.1.27 \ - crate://crates.io/tracing-core/0.1.32 \ - crate://crates.io/tracing-subscriber/0.3.18 \ + crate://crates.io/tracing/0.1.44 \ + crate://crates.io/tracing-attributes/0.1.31 \ + crate://crates.io/tracing-core/0.1.36 \ + crate://crates.io/tracing-futures/0.2.5 \ + crate://crates.io/tracing-log/0.1.4 \ + crate://crates.io/tracing-opentelemetry/0.19.0 \ + crate://crates.io/tracing-subscriber/0.3.23 \ crate://crates.io/try-lock/0.2.5 \ crate://crates.io/tungstenite/0.20.1 \ crate://crates.io/typed-builder/0.15.2 \ crate://crates.io/typed-builder-macro/0.15.2 \ - crate://crates.io/typenum/1.17.0 \ + crate://crates.io/typenum/1.19.0 \ crate://crates.io/unicode-bom/2.0.3 \ - crate://crates.io/unicode-ident/1.0.14 \ + crate://crates.io/unicode-ident/1.0.24 \ crate://crates.io/unicode-linebreak/0.1.5 \ - crate://crates.io/unicode-normalization/0.1.24 \ + crate://crates.io/unicode-normalization/0.1.25 \ crate://crates.io/unicode-width/0.1.14 \ + crate://crates.io/unicode-width/0.2.2 \ + crate://crates.io/unicode-xid/0.2.6 \ crate://crates.io/untrusted/0.9.0 \ - crate://crates.io/url/2.5.4 \ + crate://crates.io/url/2.5.8 \ + crate://crates.io/urlencoding/2.1.3 \ crate://crates.io/utf-8/0.7.6 \ - crate://crates.io/utf16_iter/1.0.5 \ crate://crates.io/utf8_iter/1.0.4 \ crate://crates.io/utf8parse/0.2.2 \ - crate://crates.io/uuid/1.11.0 \ + crate://crates.io/uuid/1.23.0 \ + crate://crates.io/valuable/0.1.1 \ crate://crates.io/vergen/8.3.2 \ crate://crates.io/version_check/0.9.5 \ crate://crates.io/walkdir/2.5.0 \ crate://crates.io/want/0.3.1 \ crate://crates.io/wasi/0.9.0+wasi-snapshot-preview1 \ - crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ - crate://crates.io/wasm-bindgen/0.2.95 \ - crate://crates.io/wasm-bindgen-backend/0.2.95 \ - crate://crates.io/wasm-bindgen-macro/0.2.95 \ - crate://crates.io/wasm-bindgen-macro-support/0.2.95 \ - crate://crates.io/wasm-bindgen-shared/0.2.95 \ + crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \ + crate://crates.io/wasip2/1.0.2+wasi-0.2.9 \ + crate://crates.io/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06 \ + crate://crates.io/wasm-bindgen/0.2.117 \ + crate://crates.io/wasm-bindgen-macro/0.2.117 \ + crate://crates.io/wasm-bindgen-macro-support/0.2.117 \ + crate://crates.io/wasm-bindgen-shared/0.2.117 \ + crate://crates.io/wasm-encoder/0.244.0 \ + crate://crates.io/wasm-metadata/0.244.0 \ + crate://crates.io/wasmparser/0.244.0 \ crate://crates.io/winapi/0.3.9 \ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \ - crate://crates.io/winapi-util/0.1.9 \ + crate://crates.io/winapi-util/0.1.11 \ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \ - crate://crates.io/windows-core/0.52.0 \ + crate://crates.io/windows-core/0.62.2 \ + crate://crates.io/windows-implement/0.60.2 \ + crate://crates.io/windows-interface/0.59.3 \ + crate://crates.io/windows-link/0.2.1 \ + crate://crates.io/windows-result/0.4.1 \ + crate://crates.io/windows-strings/0.5.1 \ crate://crates.io/windows-sys/0.52.0 \ crate://crates.io/windows-sys/0.59.0 \ + crate://crates.io/windows-sys/0.61.2 \ crate://crates.io/windows-targets/0.52.6 \ crate://crates.io/windows_aarch64_gnullvm/0.52.6 \ crate://crates.io/windows_aarch64_msvc/0.52.6 \ @@ -371,84 +454,99 @@ SRC_URI += " \ crate://crates.io/windows_x86_64_gnu/0.52.6 \ crate://crates.io/windows_x86_64_gnullvm/0.52.6 \ crate://crates.io/windows_x86_64_msvc/0.52.6 \ - crate://crates.io/winnow/0.6.20 \ - crate://crates.io/write16/1.0.0 \ - crate://crates.io/writeable/0.5.5 \ - crate://crates.io/yoke/0.7.5 \ - crate://crates.io/yoke-derive/0.7.5 \ - crate://crates.io/zerocopy/0.7.35 \ - crate://crates.io/zerocopy-derive/0.7.35 \ - crate://crates.io/zerofrom/0.1.5 \ - crate://crates.io/zerofrom-derive/0.1.5 \ - crate://crates.io/zeroize/1.8.1 \ - crate://crates.io/zerovec/0.10.4 \ - crate://crates.io/zerovec-derive/0.10.3 \ + crate://crates.io/winnow/0.6.26 \ + crate://crates.io/wit-bindgen/0.51.0 \ + crate://crates.io/wit-bindgen-core/0.51.0 \ + crate://crates.io/wit-bindgen-rust/0.51.0 \ + crate://crates.io/wit-bindgen-rust-macro/0.51.0 \ + crate://crates.io/wit-component/0.244.0 \ + crate://crates.io/wit-parser/0.244.0 \ + crate://crates.io/writeable/0.6.2 \ + crate://crates.io/yoke/0.8.1 \ + crate://crates.io/yoke-derive/0.8.1 \ + crate://crates.io/zerocopy/0.8.48 \ + crate://crates.io/zerocopy-derive/0.8.48 \ + crate://crates.io/zerofrom/0.1.6 \ + crate://crates.io/zerofrom-derive/0.1.6 \ + crate://crates.io/zeroize/1.8.2 \ + crate://crates.io/zerotrie/0.2.3 \ + crate://crates.io/zerovec/0.11.5 \ + crate://crates.io/zerovec-derive/0.11.2 \ + crate://crates.io/zmij/1.0.21 \ " -SRC_URI[addr2line-0.24.2.sha256sum] = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -SRC_URI[ahash-0.8.11.sha256sum] = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -SRC_URI[allocator-api2-0.2.20.sha256sum] = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" -SRC_URI[android-tzdata-0.1.1.sha256sum] = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +SRC_URI[adler2-2.0.1.sha256sum] = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +SRC_URI[ahash-0.8.12.sha256sum] = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +SRC_URI[aho-corasick-1.1.4.sha256sum] = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +SRC_URI[allocator-api2-0.2.21.sha256sum] = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -SRC_URI[anstream-0.6.18.sha256sum] = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -SRC_URI[anstyle-1.0.10.sha256sum] = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" -SRC_URI[anstyle-parse-0.2.6.sha256sum] = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -SRC_URI[anstyle-query-1.1.2.sha256sum] = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -SRC_URI[anstyle-wincon-3.0.6.sha256sum] = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" -SRC_URI[anyhow-1.0.93.sha256sum] = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" -SRC_URI[arc-swap-1.7.1.sha256sum] = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +SRC_URI[anstream-1.0.0.sha256sum] = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +SRC_URI[anstyle-1.0.14.sha256sum] = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" +SRC_URI[anstyle-parse-1.0.0.sha256sum] = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +SRC_URI[anyhow-1.0.102.sha256sum] = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +SRC_URI[arc-swap-1.9.0.sha256sum] = "a07d1f37ff60921c83bdfc7407723bdefe89b44b98a9b772f225c8f9d67141a6" SRC_URI[arrayref-0.3.9.sha256sum] = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" SRC_URI[arrayvec-0.5.2.sha256sum] = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" SRC_URI[async-stream-0.3.6.sha256sum] = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" SRC_URI[async-stream-impl-0.3.6.sha256sum] = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -SRC_URI[async-trait-0.1.83.sha256sum] = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -SRC_URI[autotools-0.2.7.sha256sum] = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +SRC_URI[async-trait-0.1.89.sha256sum] = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +SRC_URI[autocfg-1.5.0.sha256sum] = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +SRC_URI[axum-0.8.8.sha256sum] = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -SRC_URI[backtrace-0.3.74.sha256sum] = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +SRC_URI[axum-core-0.5.6.sha256sum] = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +SRC_URI[base16ct-0.2.0.sha256sum] = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +SRC_URI[base64ct-1.8.3.sha256sum] = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +SRC_URI[bitflags-2.11.0.sha256sum] = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" SRC_URI[blake2b_simd-0.5.11.sha256sum] = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -SRC_URI[bstr-1.11.0.sha256sum] = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" -SRC_URI[bumpalo-3.16.0.sha256sum] = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" -SRC_URI[bytecount-0.6.8.sha256sum] = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +SRC_URI[bstr-1.12.1.sha256sum] = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +SRC_URI[bumpalo-3.20.2.sha256sum] = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +SRC_URI[bytecount-0.6.9.sha256sum] = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -SRC_URI[bytes-1.8.0.sha256sum] = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" -SRC_URI[camino-1.1.9.sha256sum] = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -SRC_URI[cargo-platform-0.1.8.sha256sum] = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +SRC_URI[bytes-1.11.1.sha256sum] = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +SRC_URI[camino-1.2.2.sha256sum] = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +SRC_URI[cargo-platform-0.1.9.sha256sum] = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" SRC_URI[cargo_metadata-0.18.1.sha256sum] = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -SRC_URI[cc-1.2.1.sha256sum] = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" -SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -SRC_URI[chrono-0.4.38.sha256sum] = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -SRC_URI[clap-4.5.21.sha256sum] = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" -SRC_URI[clap_builder-4.5.21.sha256sum] = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" -SRC_URI[clap_derive-4.5.18.sha256sum] = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" -SRC_URI[clap_lex-0.7.3.sha256sum] = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" -SRC_URI[clru-0.6.2.sha256sum] = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" -SRC_URI[colorchoice-1.0.3.sha256sum] = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" -SRC_URI[console-0.15.8.sha256sum] = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +SRC_URI[cc-1.2.58.sha256sum] = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" +SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +SRC_URI[chrono-0.4.44.sha256sum] = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +SRC_URI[clap-4.6.0.sha256sum] = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +SRC_URI[clap_builder-4.6.0.sha256sum] = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +SRC_URI[clap_derive-4.6.0.sha256sum] = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +SRC_URI[clap_lex-1.1.0.sha256sum] = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +SRC_URI[clru-0.6.3.sha256sum] = "197fd99cb113a8d5d9b6376f3aa817f32c1078f2343b714fff7d2ca44fdf67d5" +SRC_URI[colorchoice-1.0.5.sha256sum] = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +SRC_URI[console-0.15.11.sha256sum] = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +SRC_URI[const-oid-0.9.6.sha256sum] = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" SRC_URI[constant_time_eq-0.1.5.sha256sum] = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" SRC_URI[core-foundation-sys-0.8.7.sha256sum] = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -SRC_URI[cpufeatures-0.2.16.sha256sum] = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" -SRC_URI[crc32fast-1.4.2.sha256sum] = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +SRC_URI[cpufeatures-0.2.17.sha256sum] = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +SRC_URI[crc32fast-1.5.0.sha256sum] = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +SRC_URI[crossbeam-channel-0.5.15.sha256sum] = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +SRC_URI[crossbeam-deque-0.8.6.sha256sum] = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +SRC_URI[crossbeam-utils-0.8.21.sha256sum] = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +SRC_URI[crypto-bigint-0.5.5.sha256sum] = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" SRC_URI[cucumber-0.20.2.sha256sum] = "8e5063d8cf24f4998ad01cac265da468a15ca682a8f4f826d50e661964e8d9b8" SRC_URI[cucumber-codegen-0.20.2.sha256sum] = "01091e28d1f566c8b31b67948399d2efd6c0a8f6228a9785519ed7b73f7f0aef" SRC_URI[cucumber-expressions-0.3.0.sha256sum] = "d794fed319eea24246fb5f57632f7ae38d61195817b7eb659455aa5bdd7c1810" -SRC_URI[data-encoding-2.6.0.sha256sum] = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" -SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -SRC_URI[derive_more-0.99.18.sha256sum] = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +SRC_URI[curve25519-dalek-4.1.3.sha256sum] = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +SRC_URI[curve25519-dalek-derive-0.1.1.sha256sum] = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +SRC_URI[dashmap-5.5.3.sha256sum] = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +SRC_URI[data-encoding-2.10.0.sha256sum] = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +SRC_URI[der-0.7.10.sha256sum] = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +SRC_URI[deranged-0.5.8.sha256sum] = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +SRC_URI[derive_more-0.99.20.sha256sum] = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" SRC_URI[dirs-1.0.5.sha256sum] = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" SRC_URI[dirs-4.0.0.sha256sum] = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" @@ -456,38 +554,49 @@ SRC_URI[dirs-sys-0.3.7.sha256sum] = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" SRC_URI[drain_filter_polyfill-0.1.3.sha256sum] = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" -SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" -SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" -SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +SRC_URI[ecdsa-0.16.9.sha256sum] = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +SRC_URI[ed25519-2.2.3.sha256sum] = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +SRC_URI[ed25519-dalek-2.2.0.sha256sum] = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +SRC_URI[either-1.15.0.sha256sum] = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +SRC_URI[elliptic-curve-0.13.8.sha256sum] = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +SRC_URI[encode_unicode-1.0.0.sha256sum] = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +SRC_URI[env_filter-1.0.1.sha256sum] = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +SRC_URI[env_logger-0.11.10.sha256sum] = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +SRC_URI[equivalent-1.0.2.sha256sum] = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" SRC_URI[faster-hex-0.9.0.sha256sum] = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" -SRC_URI[fastrand-2.2.0.sha256sum] = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" -SRC_URI[filetime-0.2.25.sha256sum] = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" -SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -SRC_URI[flate2-1.0.35.sha256sum] = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +SRC_URI[fastrand-2.3.0.sha256sum] = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +SRC_URI[ff-0.13.1.sha256sum] = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +SRC_URI[fiat-crypto-0.2.9.sha256sum] = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +SRC_URI[filetime-0.2.27.sha256sum] = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +SRC_URI[find-msvc-tools-0.1.9.sha256sum] = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +SRC_URI[fixedbitset-0.5.7.sha256sum] = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +SRC_URI[flate2-1.1.9.sha256sum] = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -SRC_URI[futures-0.3.31.sha256sum] = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -SRC_URI[futures-executor-0.3.31.sha256sum] = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -SRC_URI[futures-io-0.3.31.sha256sum] = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -SRC_URI[futures-macro-0.3.31.sha256sum] = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" -SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +SRC_URI[foldhash-0.1.5.sha256sum] = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +SRC_URI[foldhash-0.2.0.sha256sum] = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +SRC_URI[form_urlencoded-1.2.2.sha256sum] = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +SRC_URI[futures-0.3.32.sha256sum] = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +SRC_URI[futures-channel-0.3.32.sha256sum] = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +SRC_URI[futures-core-0.3.32.sha256sum] = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +SRC_URI[futures-executor-0.3.32.sha256sum] = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +SRC_URI[futures-io-0.3.32.sha256sum] = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +SRC_URI[futures-macro-0.3.32.sha256sum] = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +SRC_URI[futures-sink-0.3.32.sha256sum] = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +SRC_URI[futures-task-0.3.32.sha256sum] = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +SRC_URI[futures-util-0.3.32.sha256sum] = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +SRC_URI[generic-array-0.14.9.sha256sum] = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" SRC_URI[getrandom-0.1.16.sha256sum] = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +SRC_URI[getrandom-0.2.17.sha256sum] = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +SRC_URI[getrandom-0.4.2.sha256sum] = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" SRC_URI[gherkin-0.14.0.sha256sum] = "20b79820c0df536d1f3a089a2fa958f61cb96ce9e0f3f8f507f5a31179567755" -SRC_URI[gimli-0.31.1.sha256sum] = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" SRC_URI[gix-0.63.0.sha256sum] = "984c5018adfa7a4536ade67990b3ebc6e11ab57b3d6cd9968de0947ca99b4b06" SRC_URI[gix-actor-0.31.5.sha256sum] = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2" -SRC_URI[gix-bitmap-0.2.13.sha256sum] = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53" -SRC_URI[gix-chunk-0.4.10.sha256sum] = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7" +SRC_URI[gix-bitmap-0.2.16.sha256sum] = "d982fc7ef0608e669851d0d2a6141dae74c60d5a27e8daa451f2a4857bbf41e2" +SRC_URI[gix-chunk-0.4.12.sha256sum] = "5c356b3825677cb6ff579551bb8311a81821e184453cbd105e2fc5311b288eeb" SRC_URI[gix-commitgraph-0.24.3.sha256sum] = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78" SRC_URI[gix-config-0.37.0.sha256sum] = "53fafe42957e11d98e354a66b6bd70aeea00faf2f62dd11164188224a507c840" -SRC_URI[gix-config-value-0.14.10.sha256sum] = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e" +SRC_URI[gix-config-value-0.14.12.sha256sum] = "8dc2c844c4cf141884678cabef736fd91dd73068b9146e6f004ba1a0457944b6" SRC_URI[gix-date-0.8.7.sha256sum] = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0" SRC_URI[gix-diff-0.44.1.sha256sum] = "1996d5c8a305b59709467d80617c9fde48d9d75fd1f4179ea970912630886c9d" SRC_URI[gix-discover-0.32.0.sha256sum] = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf" @@ -502,249 +611,313 @@ SRC_URI[gix-macros-0.1.5.sha256sum] = "999ce923619f88194171a67fb3e6d613653b8d4d6 SRC_URI[gix-object-0.42.3.sha256sum] = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386" SRC_URI[gix-odb-0.61.1.sha256sum] = "20d384fe541d93d8a3bb7d5d5ef210780d6df4f50c4e684ccba32665a5e3bc9b" SRC_URI[gix-pack-0.51.1.sha256sum] = "3e0594491fffe55df94ba1c111a6566b7f56b3f8d2e1efc750e77d572f5f5229" -SRC_URI[gix-path-0.10.13.sha256sum] = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7" -SRC_URI[gix-quote-0.4.14.sha256sum] = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63" +SRC_URI[gix-path-0.10.22.sha256sum] = "7cb06c3e4f8eed6e24fd915fa93145e28a511f4ea0e768bae16673e05ed3f366" +SRC_URI[gix-quote-0.4.15.sha256sum] = "e49357fccdb0c85c0d3a3292a9f6db32d9b3535959b5471bb9624908f4a066c6" SRC_URI[gix-ref-0.44.1.sha256sum] = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e" SRC_URI[gix-refspec-0.23.1.sha256sum] = "6868f8cd2e62555d1f7c78b784bece43ace40dd2a462daf3b588d5416e603f37" SRC_URI[gix-revision-0.27.2.sha256sum] = "01b13e43c2118c4b0537ddac7d0821ae0dfa90b7b8dbf20c711e153fb749adce" SRC_URI[gix-revwalk-0.13.2.sha256sum] = "1b030ccaab71af141f537e0225f19b9e74f25fefdba0372246b844491cab43e0" -SRC_URI[gix-sec-0.10.10.sha256sum] = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6" +SRC_URI[gix-sec-0.10.12.sha256sum] = "47aeb0f13de9ef2f3033f5ff218de30f44db827ac9f1286f9ef050aacddd5888" SRC_URI[gix-tempfile-14.0.2.sha256sum] = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" -SRC_URI[gix-trace-0.1.11.sha256sum] = "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952" +SRC_URI[gix-trace-0.1.18.sha256sum] = "f69a13643b8437d4ca6845e08143e847a36ca82903eed13303475d0ae8b162e0" SRC_URI[gix-traverse-0.39.2.sha256sum] = "e499a18c511e71cf4a20413b743b9f5bcf64b3d9e81e9c3c6cd399eae55a8840" SRC_URI[gix-url-0.27.5.sha256sum] = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89" -SRC_URI[gix-utils-0.1.13.sha256sum] = "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f" +SRC_URI[gix-utils-0.1.14.sha256sum] = "ff08f24e03ac8916c478c8419d7d3c33393da9bb41fa4c24455d5406aeefd35f" SRC_URI[gix-validate-0.8.5.sha256sum] = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf" +SRC_URI[gix-validate-0.10.1.sha256sum] = "5b1e63a5b516e970a594f870ed4571a8fdcb8a344e7bd407a20db8bd61dbfde4" SRC_URI[glob-match-0.2.1.sha256sum] = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d" -SRC_URI[globset-0.4.15.sha256sum] = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +SRC_URI[globset-0.4.18.sha256sum] = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" SRC_URI[globwalk-0.8.1.sha256sum] = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" -SRC_URI[h2-0.3.26.sha256sum] = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +SRC_URI[group-0.13.0.sha256sum] = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +SRC_URI[h2-0.3.27.sha256sum] = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +SRC_URI[h2-0.4.13.sha256sum] = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -SRC_URI[hashbrown-0.15.2.sha256sum] = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +SRC_URI[hashbrown-0.15.5.sha256sum] = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +SRC_URI[hashbrown-0.16.1.sha256sum] = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +SRC_URI[hkdf-0.12.4.sha256sum] = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +SRC_URI[hmac-0.12.1.sha256sum] = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +SRC_URI[home-0.5.12.sha256sum] = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" SRC_URI[http-0.2.12.sha256sum] = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +SRC_URI[http-1.4.0.sha256sum] = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" SRC_URI[http-body-0.4.6.sha256sum] = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -SRC_URI[httparse-1.9.5.sha256sum] = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +SRC_URI[http-body-1.0.1.sha256sum] = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +SRC_URI[http-body-util-0.1.3.sha256sum] = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +SRC_URI[httparse-1.10.1.sha256sum] = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" -SRC_URI[hyper-0.14.31.sha256sum] = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +SRC_URI[humantime-2.3.0.sha256sum] = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +SRC_URI[hyper-0.14.32.sha256sum] = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +SRC_URI[hyper-1.9.0.sha256sum] = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -SRC_URI[iana-time-zone-0.1.61.sha256sum] = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +SRC_URI[hyper-timeout-0.5.2.sha256sum] = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +SRC_URI[hyper-util-0.1.20.sha256sum] = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +SRC_URI[iana-time-zone-0.1.65.sha256sum] = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -SRC_URI[icu_collections-1.5.0.sha256sum] = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -SRC_URI[icu_locid-1.5.0.sha256sum] = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -SRC_URI[icu_locid_transform-1.5.0.sha256sum] = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -SRC_URI[icu_locid_transform_data-1.5.0.sha256sum] = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" -SRC_URI[icu_normalizer-1.5.0.sha256sum] = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -SRC_URI[icu_normalizer_data-1.5.0.sha256sum] = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" -SRC_URI[icu_properties-1.5.1.sha256sum] = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -SRC_URI[icu_properties_data-1.5.0.sha256sum] = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" -SRC_URI[icu_provider-1.5.0.sha256sum] = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -SRC_URI[icu_provider_macros-1.5.0.sha256sum] = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -SRC_URI[idna-1.0.3.sha256sum] = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -SRC_URI[idna_adapter-1.2.0.sha256sum] = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -SRC_URI[ignore-0.4.23.sha256sum] = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +SRC_URI[icu_collections-2.1.1.sha256sum] = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +SRC_URI[icu_locale_core-2.1.1.sha256sum] = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +SRC_URI[icu_normalizer-2.1.1.sha256sum] = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +SRC_URI[icu_normalizer_data-2.1.1.sha256sum] = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +SRC_URI[icu_properties-2.1.2.sha256sum] = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +SRC_URI[icu_properties_data-2.1.2.sha256sum] = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +SRC_URI[icu_provider-2.1.1.sha256sum] = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +SRC_URI[id-arena-2.3.0.sha256sum] = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" +SRC_URI[idna-1.1.0.sha256sum] = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +SRC_URI[idna_adapter-1.2.1.sha256sum] = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +SRC_URI[ignore-0.4.25.sha256sum] = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +SRC_URI[indexmap-2.13.0.sha256sum] = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" SRC_URI[inflections-1.1.1.sha256sum] = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" -SRC_URI[inventory-0.3.15.sha256sum] = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" -SRC_URI[is_terminal_polyfill-1.70.1.sha256sum] = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +SRC_URI[inventory-0.3.24.sha256sum] = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -SRC_URI[itoa-1.0.13.sha256sum] = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +SRC_URI[itertools-0.14.0.sha256sum] = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +SRC_URI[itoa-1.0.18.sha256sum] = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" SRC_URI[jemalloc-sys-0.5.4+5.3.0-patched.sha256sum] = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" SRC_URI[jemallocator-0.5.4.sha256sum] = "a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc" -SRC_URI[js-sys-0.3.72.sha256sum] = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" -SRC_URI[jsonwebtoken-9.3.0.sha256sum] = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" -SRC_URI[lazy-regex-3.3.0.sha256sum] = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" -SRC_URI[lazy-regex-proc_macros-3.3.0.sha256sum] = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +SRC_URI[jiff-0.2.23.sha256sum] = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +SRC_URI[jiff-static-0.2.23.sha256sum] = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +SRC_URI[js-sys-0.3.94.sha256sum] = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" +SRC_URI[jsonwebtoken-10.3.0.sha256sum] = "0529410abe238729a60b108898784df8984c87f6054c9c4fcacc47e4803c1ce1" +SRC_URI[lazy-regex-3.6.0.sha256sum] = "6bae91019476d3ec7147de9aa291cadb6d870abf2f3015d2da73a90325ac1496" +SRC_URI[lazy-regex-proc_macros-3.6.0.sha256sum] = "4de9c1e1439d8b7b3061b2d209809f447ca33241733d9a3c01eabf2dc8d94358" SRC_URI[lazy_static-1.5.0.sha256sum] = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -SRC_URI[libc-0.2.164.sha256sum] = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" -SRC_URI[libredox-0.1.3.sha256sum] = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +SRC_URI[leb128fmt-0.1.0.sha256sum] = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +SRC_URI[libc-0.2.183.sha256sum] = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +SRC_URI[libm-0.2.16.sha256sum] = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +SRC_URI[libredox-0.1.15.sha256sum] = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" SRC_URI[linefeed-0.6.0.sha256sum] = "28715d08e35c6c074f9ae6b2e6a2420bac75d050c66ecd669d7d5b98e2caa036" SRC_URI[linked-hash-map-0.5.6.sha256sum] = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" -SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -SRC_URI[litemap-0.7.4.sha256sum] = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" -SRC_URI[lock_api-0.4.12.sha256sum] = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" -SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +SRC_URI[linux-raw-sys-0.4.15.sha256sum] = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +SRC_URI[linux-raw-sys-0.12.1.sha256sum] = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" +SRC_URI[litemap-0.8.1.sha256sum] = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +SRC_URI[log-0.4.29.sha256sum] = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +SRC_URI[matchers-0.2.0.sha256sum] = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" SRC_URI[matchit-0.7.3.sha256sum] = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" -SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -SRC_URI[memmap2-0.9.5.sha256sum] = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +SRC_URI[matchit-0.8.4.sha256sum] = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +SRC_URI[memchr-2.8.0.sha256sum] = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +SRC_URI[memmap2-0.9.10.sha256sum] = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" 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[miniz_oxide-0.8.9.sha256sum] = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +SRC_URI[mio-1.2.0.sha256sum] = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" SRC_URI[mortal-0.2.4.sha256sum] = "2c624fa1b7aab6bd2aff6e9b18565cc0363b6d45cbcd7465c9ed5e3740ebf097" -SRC_URI[multimap-0.10.0.sha256sum] = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" +SRC_URI[multimap-0.10.1.sha256sum] = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" SRC_URI[nix-0.26.4.sha256sum] = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" SRC_URI[nom_locate-4.2.0.sha256sum] = "1e3c83c053b0713da60c5b8de47fe8e494fe3ece5267b2f23090a07a053ba8f3" -SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +SRC_URI[nu-ansi-term-0.50.3.sha256sum] = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" SRC_URI[num-bigint-0.4.6.sha256sum] = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +SRC_URI[num-bigint-dig-0.8.6.sha256sum] = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +SRC_URI[num-conv-0.2.1.sha256sum] = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" SRC_URI[num-integer-0.1.46.sha256sum] = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +SRC_URI[num-iter-0.1.45.sha256sum] = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" SRC_URI[num-traits-0.2.19.sha256sum] = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" SRC_URI[num_threads-0.1.7.sha256sum] = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -SRC_URI[object-0.36.5.sha256sum] = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" -SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" -SRC_URI[parking_lot-0.12.3.sha256sum] = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -SRC_URI[parking_lot_core-0.9.10.sha256sum] = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +SRC_URI[once_cell-1.21.4.sha256sum] = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +SRC_URI[opentelemetry-0.19.0.sha256sum] = "5f4b8347cc26099d3aeee044065ecc3ae11469796b4d65d065a23a584ed92a6f" +SRC_URI[opentelemetry-otlp-0.12.0.sha256sum] = "8af72d59a4484654ea8eb183fea5ae4eb6a41d7ac3e3bae5f4d2a282a3a7d3ca" +SRC_URI[opentelemetry-proto-0.2.0.sha256sum] = "045f8eea8c0fa19f7d48e7bc3128a39c2e5c533d5c61298c548dfefc1064474c" +SRC_URI[opentelemetry-semantic-conventions-0.11.0.sha256sum] = "24e33428e6bf08c6f7fcea4ddb8e358fab0fe48ab877a87c70c6ebe20f673ce5" +SRC_URI[opentelemetry_api-0.19.0.sha256sum] = "ed41783a5bf567688eb38372f2b7a8530f5a607a4b49d38dd7573236c23ca7e2" +SRC_URI[opentelemetry_sdk-0.19.0.sha256sum] = "8b3a2a91fdbfdd4d212c0dcc2ab540de2c2bcbbd90be17de7a7daf8822d010c1" +SRC_URI[p256-0.13.2.sha256sum] = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +SRC_URI[p384-0.13.1.sha256sum] = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" SRC_URI[peg-0.6.3.sha256sum] = "9f76678828272f177ac33b7e2ac2e3e73cc6c1cd1e3e387928aa69562fa51367" SRC_URI[peg-macros-0.6.3.sha256sum] = "636d60acf97633e48d266d7415a9355d4389cea327a193f87df395d88cd2b14d" SRC_URI[peg-runtime-0.6.3.sha256sum] = "9555b1514d2d99d78150d3c799d4c357a3e2c2a8062cd108e93a06d9057629c5" -SRC_URI[pem-3.0.4.sha256sum] = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" -SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -SRC_URI[petgraph-0.6.5.sha256sum] = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -SRC_URI[phf-0.11.2.sha256sum] = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -SRC_URI[phf_codegen-0.11.2.sha256sum] = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -SRC_URI[phf_generator-0.11.2.sha256sum] = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -SRC_URI[phf_shared-0.11.2.sha256sum] = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -SRC_URI[pin-project-1.1.7.sha256sum] = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" -SRC_URI[pin-project-internal-1.1.7.sha256sum] = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" -SRC_URI[pin-project-lite-0.2.15.sha256sum] = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" -SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +SRC_URI[pem-3.0.6.sha256sum] = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +SRC_URI[pem-rfc7468-0.7.0.sha256sum] = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +SRC_URI[percent-encoding-2.3.2.sha256sum] = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +SRC_URI[petgraph-0.8.3.sha256sum] = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +SRC_URI[phf-0.11.3.sha256sum] = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +SRC_URI[phf_codegen-0.11.3.sha256sum] = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +SRC_URI[phf_generator-0.11.3.sha256sum] = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +SRC_URI[phf_shared-0.11.3.sha256sum] = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +SRC_URI[pin-project-1.1.11.sha256sum] = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +SRC_URI[pin-project-internal-1.1.11.sha256sum] = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +SRC_URI[pin-project-lite-0.2.17.sha256sum] = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +SRC_URI[pkcs1-0.7.5.sha256sum] = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +SRC_URI[pkcs8-0.10.2.sha256sum] = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +SRC_URI[portable-atomic-1.13.1.sha256sum] = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +SRC_URI[portable-atomic-util-0.2.6.sha256sum] = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +SRC_URI[potential_utf-0.1.4.sha256sum] = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -SRC_URI[prettyplease-0.2.25.sha256sum] = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +SRC_URI[ppv-lite86-0.2.21.sha256sum] = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +SRC_URI[prettyplease-0.2.37.sha256sum] = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +SRC_URI[primeorder-0.13.6.sha256sum] = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +SRC_URI[proc-macro2-1.0.106.sha256sum] = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" SRC_URI[prodash-28.0.0.sha256sum] = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" -SRC_URI[prost-0.12.6.sha256sum] = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" -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[protobuf-src-1.1.0+21.5.sha256sum] = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" -SRC_URI[quote-1.0.37.sha256sum] = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +SRC_URI[prost-0.11.9.sha256sum] = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +SRC_URI[prost-0.14.3.sha256sum] = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +SRC_URI[prost-build-0.14.3.sha256sum] = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" +SRC_URI[prost-derive-0.11.9.sha256sum] = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +SRC_URI[prost-derive-0.14.3.sha256sum] = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +SRC_URI[prost-types-0.14.3.sha256sum] = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +SRC_URI[quote-1.0.45.sha256sum] = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +SRC_URI[r-efi-6.0.0.sha256sum] = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" 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[redox_syscall-0.1.57.sha256sum] = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" -SRC_URI[redox_syscall-0.5.7.sha256sum] = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +SRC_URI[redox_syscall-0.5.18.sha256sum] = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +SRC_URI[redox_syscall-0.7.3.sha256sum] = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" SRC_URI[redox_users-0.3.5.sha256sum] = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" SRC_URI[redox_users-0.4.6.sha256sum] = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +SRC_URI[regex-1.12.3.sha256sum] = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +SRC_URI[regex-automata-0.4.14.sha256sum] = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" SRC_URI[regex-syntax-0.7.5.sha256sum] = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" -SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -SRC_URI[ring-0.17.8.sha256sum] = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +SRC_URI[regex-syntax-0.8.10.sha256sum] = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +SRC_URI[rfc6979-0.4.0.sha256sum] = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +SRC_URI[ring-0.17.14.sha256sum] = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +SRC_URI[rsa-0.9.10.sha256sum] = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" SRC_URI[rust-argon2-0.8.3.sha256sum] = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -SRC_URI[rustc-demangle-0.1.24.sha256sum] = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -SRC_URI[rustix-0.38.41.sha256sum] = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" -SRC_URI[rustls-0.22.4.sha256sum] = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -SRC_URI[rustls-pemfile-2.2.0.sha256sum] = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -SRC_URI[rustls-pki-types-1.10.0.sha256sum] = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" -SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -SRC_URI[rustversion-1.0.18.sha256sum] = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" -SRC_URI[ryu-1.0.18.sha256sum] = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +SRC_URI[rustc_version-0.4.1.sha256sum] = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +SRC_URI[rustix-0.38.44.sha256sum] = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +SRC_URI[rustix-1.1.4.sha256sum] = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +SRC_URI[rustls-0.23.37.sha256sum] = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +SRC_URI[rustls-pki-types-1.14.0.sha256sum] = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +SRC_URI[rustls-webpki-0.103.10.sha256sum] = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" +SRC_URI[rustversion-1.0.22.sha256sum] = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +SRC_URI[ryu-1.0.23.sha256sum] = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -SRC_URI[sd-notify-0.4.3.sha256sum] = "1be20c5f7f393ee700f8b2f28ea35812e4e212f40774b550cd2a93ea91684451" +SRC_URI[sd-notify-0.4.5.sha256sum] = "b943eadf71d8b69e661330cb0e2656e31040acf21ee7708e2c238a0ec6af2bf4" SRC_URI[sealed-0.5.0.sha256sum] = "f4a8caec23b7800fb97971a1c6ae365b6239aaeddfb934d6265f8505e795699d" -SRC_URI[semver-1.0.23.sha256sum] = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -SRC_URI[serde-1.0.215.sha256sum] = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" -SRC_URI[serde_derive-1.0.215.sha256sum] = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" -SRC_URI[serde_json-1.0.133.sha256sum] = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" -SRC_URI[serde_path_to_error-0.1.16.sha256sum] = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +SRC_URI[sec1-0.7.3.sha256sum] = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +SRC_URI[semver-1.0.27.sha256sum] = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +SRC_URI[serde-1.0.228.sha256sum] = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +SRC_URI[serde_core-1.0.228.sha256sum] = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +SRC_URI[serde_derive-1.0.228.sha256sum] = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +SRC_URI[serde_json-1.0.149.sha256sum] = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +SRC_URI[serde_path_to_error-0.1.20.sha256sum] = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" SRC_URI[serde_urlencoded-0.7.1.sha256sum] = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" SRC_URI[sha1_smol-1.0.1.sha256sum] = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +SRC_URI[sha2-0.10.9.sha256sum] = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -SRC_URI[signal-hook-0.3.17.sha256sum] = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -SRC_URI[signal-hook-registry-1.4.2.sha256sum] = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -SRC_URI[simple_asn1-0.6.2.sha256sum] = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -SRC_URI[siphasher-0.3.11.sha256sum] = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" -SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +SRC_URI[signal-hook-0.3.18.sha256sum] = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +SRC_URI[signal-hook-registry-1.4.8.sha256sum] = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +SRC_URI[signature-2.2.0.sha256sum] = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +SRC_URI[simd-adler32-0.3.9.sha256sum] = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +SRC_URI[simple_asn1-0.6.4.sha256sum] = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" +SRC_URI[siphasher-1.0.2.sha256sum] = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" SRC_URI[smallstr-0.2.0.sha256sum] = "1e922794d168678729ffc7e07182721a14219c65814e66e91b839a272fe5ae4f" -SRC_URI[smallvec-1.13.2.sha256sum] = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +SRC_URI[smallvec-1.15.1.sha256sum] = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" SRC_URI[smart-default-0.7.1.sha256sum] = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" -SRC_URI[socket2-0.5.7.sha256sum] = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +SRC_URI[socket2-0.5.10.sha256sum] = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +SRC_URI[socket2-0.6.3.sha256sum] = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +SRC_URI[spki-0.7.3.sha256sum] = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" SRC_URI[sqlparser-0.16.0.sha256sum] = "7e9a527b68048eb95495a1508f6c8395c8defcff5ecdbe8ad4106d08a2ef2a3c" -SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +SRC_URI[stable_deref_trait-1.2.1.sha256sum] = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -SRC_URI[syn-2.0.89.sha256sum] = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +SRC_URI[syn-2.0.117.sha256sum] = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -SRC_URI[synstructure-0.13.1.sha256sum] = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +SRC_URI[sync_wrapper-1.0.2.sha256sum] = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +SRC_URI[synstructure-0.13.2.sha256sum] = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" SRC_URI[synthez-0.3.1.sha256sum] = "a3d2c2202510a1e186e63e596d9318c91a8cbe85cd1a56a7be0c333e5f59ec8d" SRC_URI[synthez-codegen-0.3.1.sha256sum] = "f724aa6d44b7162f3158a57bccd871a77b39a4aef737e01bcdff41f4772c7746" SRC_URI[synthez-core-0.3.1.sha256sum] = "78bfa6ec52465e2425fd43ce5bbbe0f0b623964f7c63feb6b10980e816c654ea" -SRC_URI[tempfile-3.14.0.sha256sum] = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" -SRC_URI[terminal_size-0.4.0.sha256sum] = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +SRC_URI[tempfile-3.27.0.sha256sum] = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +SRC_URI[terminal_size-0.4.4.sha256sum] = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" SRC_URI[terminfo-0.8.0.sha256sum] = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f" -SRC_URI[textwrap-0.16.1.sha256sum] = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +SRC_URI[textwrap-0.16.2.sha256sum] = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -SRC_URI[thiserror-2.0.3.sha256sum] = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +SRC_URI[thiserror-2.0.18.sha256sum] = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -SRC_URI[thiserror-impl-2.0.3.sha256sum] = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" -SRC_URI[thread_local-1.1.8.sha256sum] = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -SRC_URI[time-0.3.36.sha256sum] = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" -SRC_URI[time-macros-0.2.18.sha256sum] = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -SRC_URI[tinystr-0.7.6.sha256sum] = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -SRC_URI[tinyvec-1.8.0.sha256sum] = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +SRC_URI[thiserror-impl-2.0.18.sha256sum] = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +SRC_URI[thread_local-1.1.9.sha256sum] = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +SRC_URI[time-0.3.47.sha256sum] = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +SRC_URI[time-core-0.1.8.sha256sum] = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +SRC_URI[time-macros-0.2.27.sha256sum] = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +SRC_URI[tinystr-0.8.2.sha256sum] = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +SRC_URI[tinyvec-1.11.0.sha256sum] = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -SRC_URI[tokio-1.41.1.sha256sum] = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" -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-1.50.0.sha256sum] = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +SRC_URI[tokio-io-timeout-1.2.1.sha256sum] = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" +SRC_URI[tokio-macros-2.6.1.sha256sum] = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +SRC_URI[tokio-rustls-0.26.4.sha256sum] = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +SRC_URI[tokio-stream-0.1.18.sha256sum] = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" SRC_URI[tokio-tungstenite-0.20.1.sha256sum] = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" -SRC_URI[tokio-util-0.7.12.sha256sum] = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -SRC_URI[tonic-0.11.0.sha256sum] = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" -SRC_URI[tonic-build-0.11.0.sha256sum] = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" -SRC_URI[tonic-mock-0.3.0.sha256sum] = "ea9163cf065e21bf30e5ad1789bf334f5ae67e4a25f0e8200a7e375466e755ea" -SRC_URI[tonic-reflection-0.11.0.sha256sum] = "548c227bd5c0fae5925812c4ec6c66ffcfced23ea370cb823f4d18f0fc1cb6a7" +SRC_URI[tokio-util-0.7.18.sha256sum] = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +SRC_URI[tonic-0.8.3.sha256sum] = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +SRC_URI[tonic-0.14.5.sha256sum] = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" +SRC_URI[tonic-build-0.14.5.sha256sum] = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" +SRC_URI[tonic-prost-0.14.5.sha256sum] = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +SRC_URI[tonic-prost-build-0.14.5.sha256sum] = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" +SRC_URI[tonic-reflection-0.14.5.sha256sum] = "aaf0685a51e6d02b502ba0764002e766b7f3042aed13d9234925b6ffbfa3fca7" SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +SRC_URI[tower-0.5.3.sha256sum] = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" -SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -SRC_URI[tracing-subscriber-0.3.18.sha256sum] = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +SRC_URI[tracing-0.1.44.sha256sum] = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +SRC_URI[tracing-attributes-0.1.31.sha256sum] = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +SRC_URI[tracing-core-0.1.36.sha256sum] = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +SRC_URI[tracing-futures-0.2.5.sha256sum] = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +SRC_URI[tracing-log-0.1.4.sha256sum] = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +SRC_URI[tracing-opentelemetry-0.19.0.sha256sum] = "00a39dcf9bfc1742fa4d6215253b33a6e474be78275884c216fc2a06267b3600" +SRC_URI[tracing-subscriber-0.3.23.sha256sum] = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" SRC_URI[tungstenite-0.20.1.sha256sum] = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" SRC_URI[typed-builder-0.15.2.sha256sum] = "7fe83c85a85875e8c4cb9ce4a890f05b23d38cd0d47647db7895d3d2a79566d2" SRC_URI[typed-builder-macro-0.15.2.sha256sum] = "29a3151c41d0b13e3d011f98adc24434560ef06673a155a6c7f66b9879eecce2" -SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +SRC_URI[typenum-1.19.0.sha256sum] = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" SRC_URI[unicode-bom-2.0.3.sha256sum] = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" -SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +SRC_URI[unicode-ident-1.0.24.sha256sum] = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" -SRC_URI[unicode-normalization-0.1.24.sha256sum] = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +SRC_URI[unicode-normalization-0.1.25.sha256sum] = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +SRC_URI[unicode-width-0.2.2.sha256sum] = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -SRC_URI[url-2.5.4.sha256sum] = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +SRC_URI[url-2.5.8.sha256sum] = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +SRC_URI[urlencoding-2.1.3.sha256sum] = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" SRC_URI[utf-8-0.7.6.sha256sum] = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -SRC_URI[utf16_iter-1.0.5.sha256sum] = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -SRC_URI[uuid-1.11.0.sha256sum] = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +SRC_URI[uuid-1.23.0.sha256sum] = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" +SRC_URI[valuable-0.1.1.sha256sum] = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" SRC_URI[vergen-8.3.2.sha256sum] = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" SRC_URI[wasi-0.9.0+wasi-snapshot-preview1.sha256sum] = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -SRC_URI[wasm-bindgen-0.2.95.sha256sum] = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" -SRC_URI[wasm-bindgen-backend-0.2.95.sha256sum] = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" -SRC_URI[wasm-bindgen-macro-0.2.95.sha256sum] = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" -SRC_URI[wasm-bindgen-macro-support-0.2.95.sha256sum] = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" -SRC_URI[wasm-bindgen-shared-0.2.95.sha256sum] = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +SRC_URI[wasip2-1.0.2+wasi-0.2.9.sha256sum] = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +SRC_URI[wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.sha256sum] = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +SRC_URI[wasm-bindgen-0.2.117.sha256sum] = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" +SRC_URI[wasm-bindgen-macro-0.2.117.sha256sum] = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" +SRC_URI[wasm-bindgen-macro-support-0.2.117.sha256sum] = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" +SRC_URI[wasm-bindgen-shared-0.2.117.sha256sum] = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" +SRC_URI[wasm-encoder-0.244.0.sha256sum] = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +SRC_URI[wasm-metadata-0.244.0.sha256sum] = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +SRC_URI[wasmparser-0.244.0.sha256sum] = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -SRC_URI[winapi-util-0.1.9.sha256sum] = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +SRC_URI[winapi-util-0.1.11.sha256sum] = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -SRC_URI[windows-core-0.52.0.sha256sum] = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +SRC_URI[windows-core-0.62.2.sha256sum] = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +SRC_URI[windows-implement-0.60.2.sha256sum] = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +SRC_URI[windows-interface-0.59.3.sha256sum] = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +SRC_URI[windows-result-0.4.1.sha256sum] = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +SRC_URI[windows-strings-0.5.1.sha256sum] = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" @@ -754,138 +927,160 @@ SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffc SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -SRC_URI[winnow-0.6.20.sha256sum] = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -SRC_URI[write16-1.0.0.sha256sum] = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" -SRC_URI[writeable-0.5.5.sha256sum] = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" -SRC_URI[yoke-0.7.5.sha256sum] = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -SRC_URI[yoke-derive-0.7.5.sha256sum] = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -SRC_URI[zerofrom-0.1.5.sha256sum] = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -SRC_URI[zerofrom-derive-0.1.5.sha256sum] = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -SRC_URI[zerovec-0.10.4.sha256sum] = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -SRC_URI[zerovec-derive-0.10.3.sha256sum] = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +SRC_URI[winnow-0.6.26.sha256sum] = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28" +SRC_URI[wit-bindgen-0.51.0.sha256sum] = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +SRC_URI[wit-bindgen-core-0.51.0.sha256sum] = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +SRC_URI[wit-bindgen-rust-0.51.0.sha256sum] = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +SRC_URI[wit-bindgen-rust-macro-0.51.0.sha256sum] = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +SRC_URI[wit-component-0.244.0.sha256sum] = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +SRC_URI[wit-parser-0.244.0.sha256sum] = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +SRC_URI[writeable-0.6.2.sha256sum] = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +SRC_URI[yoke-0.8.1.sha256sum] = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +SRC_URI[yoke-derive-0.8.1.sha256sum] = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +SRC_URI[zerocopy-0.8.48.sha256sum] = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +SRC_URI[zerocopy-derive-0.8.48.sha256sum] = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +SRC_URI[zerofrom-0.1.6.sha256sum] = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +SRC_URI[zerofrom-derive-0.1.6.sha256sum] = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +SRC_URI[zeroize-1.8.2.sha256sum] = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +SRC_URI[zerotrie-0.2.3.sha256sum] = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +SRC_URI[zerovec-0.11.5.sha256sum] = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +SRC_URI[zerovec-derive-0.11.2.sha256sum] = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +SRC_URI[zmij-1.0.21.sha256sum] = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" # from lib/Cargo.lock SRC_URI += " \ - crate://crates.io/addr2line/0.24.2 \ - crate://crates.io/adler2/2.0.0 \ - crate://crates.io/aho-corasick/1.1.3 \ - crate://crates.io/anyhow/1.0.93 \ - crate://crates.io/async-stream/0.3.6 \ - crate://crates.io/async-stream-impl/0.3.6 \ - crate://crates.io/async-trait/0.1.83 \ - crate://crates.io/autocfg/1.4.0 \ - crate://crates.io/autotools/0.2.7 \ - crate://crates.io/axum/0.6.20 \ - crate://crates.io/axum-core/0.3.4 \ - crate://crates.io/backtrace/0.3.74 \ - crate://crates.io/base64/0.21.7 \ - crate://crates.io/bitflags/1.3.2 \ - crate://crates.io/bitflags/2.6.0 \ - crate://crates.io/byteorder/1.5.0 \ - crate://crates.io/bytes/1.8.0 \ - crate://crates.io/cc/1.2.1 \ - crate://crates.io/cfg-if/1.0.0 \ - crate://crates.io/either/1.13.0 \ - crate://crates.io/equivalent/1.0.1 \ - crate://crates.io/errno/0.3.9 \ - crate://crates.io/fastrand/2.2.0 \ - crate://crates.io/fixedbitset/0.4.2 \ + crate://crates.io/aho-corasick/1.1.4 \ + crate://crates.io/anstream/1.0.0 \ + crate://crates.io/anstyle/1.0.14 \ + crate://crates.io/anstyle-parse/1.0.0 \ + crate://crates.io/anstyle-query/1.1.5 \ + crate://crates.io/anstyle-wincon/3.0.11 \ + crate://crates.io/anyhow/1.0.102 \ + crate://crates.io/async-trait/0.1.89 \ + crate://crates.io/atomic-waker/1.1.2 \ + crate://crates.io/base64/0.22.1 \ + crate://crates.io/bitflags/2.11.0 \ + crate://crates.io/bytes/1.11.1 \ + crate://crates.io/cc/1.2.58 \ + crate://crates.io/cfg-if/1.0.4 \ + crate://crates.io/colorchoice/1.0.5 \ + crate://crates.io/either/1.15.0 \ + crate://crates.io/env_filter/1.0.1 \ + crate://crates.io/env_logger/0.11.10 \ + crate://crates.io/equivalent/1.0.2 \ + crate://crates.io/errno/0.3.14 \ + crate://crates.io/fastrand/2.3.0 \ + crate://crates.io/find-msvc-tools/0.1.9 \ + crate://crates.io/fixedbitset/0.5.7 \ crate://crates.io/fnv/1.0.7 \ - crate://crates.io/futures-channel/0.3.31 \ - crate://crates.io/futures-core/0.3.31 \ - crate://crates.io/futures-sink/0.3.31 \ - crate://crates.io/futures-task/0.3.31 \ - crate://crates.io/futures-util/0.3.31 \ - crate://crates.io/getrandom/0.2.15 \ - crate://crates.io/gimli/0.31.1 \ - crate://crates.io/h2/0.3.26 \ - crate://crates.io/hashbrown/0.12.3 \ - crate://crates.io/hashbrown/0.15.2 \ + crate://crates.io/foldhash/0.1.5 \ + crate://crates.io/futures-channel/0.3.32 \ + crate://crates.io/futures-core/0.3.32 \ + crate://crates.io/futures-sink/0.3.32 \ + crate://crates.io/futures-task/0.3.32 \ + crate://crates.io/futures-util/0.3.32 \ + crate://crates.io/getrandom/0.2.17 \ + crate://crates.io/getrandom/0.4.2 \ + crate://crates.io/h2/0.4.13 \ + crate://crates.io/hashbrown/0.15.5 \ + crate://crates.io/hashbrown/0.16.1 \ crate://crates.io/heck/0.5.0 \ - crate://crates.io/hermit-abi/0.3.9 \ - crate://crates.io/http/0.2.12 \ - crate://crates.io/http-body/0.4.6 \ - crate://crates.io/httparse/1.9.5 \ + crate://crates.io/http/1.4.0 \ + crate://crates.io/http-body/1.0.1 \ + crate://crates.io/http-body-util/0.1.3 \ + crate://crates.io/httparse/1.10.1 \ crate://crates.io/httpdate/1.0.3 \ - crate://crates.io/hyper/0.14.31 \ - crate://crates.io/hyper-timeout/0.4.1 \ - crate://crates.io/indexmap/1.9.3 \ - crate://crates.io/indexmap/2.6.0 \ - crate://crates.io/itertools/0.12.1 \ - crate://crates.io/itoa/1.0.13 \ - crate://crates.io/libc/0.2.164 \ - crate://crates.io/linux-raw-sys/0.4.14 \ - crate://crates.io/log/0.4.22 \ - crate://crates.io/matchit/0.7.3 \ - crate://crates.io/memchr/2.7.4 \ - crate://crates.io/mime/0.3.17 \ - 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/object/0.36.5 \ - crate://crates.io/once_cell/1.20.2 \ - crate://crates.io/percent-encoding/2.3.1 \ - crate://crates.io/petgraph/0.6.5 \ - crate://crates.io/pin-project/1.1.7 \ - crate://crates.io/pin-project-internal/1.1.7 \ - crate://crates.io/pin-project-lite/0.2.15 \ - crate://crates.io/pin-utils/0.1.0 \ - crate://crates.io/ppv-lite86/0.2.20 \ - crate://crates.io/prettyplease/0.2.25 \ - crate://crates.io/proc-macro2/1.0.92 \ - crate://crates.io/prost/0.12.6 \ - 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/protobuf-src/1.1.0+21.5 \ - 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/regex/1.11.1 \ - crate://crates.io/regex-automata/0.4.9 \ - crate://crates.io/regex-syntax/0.8.5 \ - crate://crates.io/ring/0.17.8 \ - crate://crates.io/rustc-demangle/0.1.24 \ - crate://crates.io/rustix/0.38.41 \ - crate://crates.io/rustls/0.22.4 \ - crate://crates.io/rustls-pemfile/2.2.0 \ - crate://crates.io/rustls-pki-types/1.10.0 \ - crate://crates.io/rustls-webpki/0.102.8 \ - crate://crates.io/rustversion/1.0.18 \ - crate://crates.io/serde/1.0.215 \ - crate://crates.io/serde_derive/1.0.215 \ + crate://crates.io/hyper/1.9.0 \ + crate://crates.io/hyper-timeout/0.5.2 \ + crate://crates.io/hyper-util/0.1.20 \ + crate://crates.io/id-arena/2.3.0 \ + crate://crates.io/indexmap/2.13.0 \ + crate://crates.io/is_terminal_polyfill/1.70.2 \ + crate://crates.io/itertools/0.14.0 \ + crate://crates.io/itoa/1.0.18 \ + crate://crates.io/jiff/0.2.23 \ + crate://crates.io/jiff-static/0.2.23 \ + crate://crates.io/leb128fmt/0.1.0 \ + crate://crates.io/libc/0.2.183 \ + crate://crates.io/linux-raw-sys/0.12.1 \ + crate://crates.io/lock_api/0.4.14 \ + crate://crates.io/log/0.4.29 \ + crate://crates.io/memchr/2.8.0 \ + crate://crates.io/mio/1.2.0 \ + crate://crates.io/multimap/0.10.1 \ + crate://crates.io/once_cell/1.21.4 \ + crate://crates.io/once_cell_polyfill/1.70.2 \ + crate://crates.io/parking_lot/0.12.5 \ + crate://crates.io/parking_lot_core/0.9.12 \ + crate://crates.io/percent-encoding/2.3.2 \ + crate://crates.io/petgraph/0.8.3 \ + crate://crates.io/pin-project/1.1.11 \ + crate://crates.io/pin-project-internal/1.1.11 \ + crate://crates.io/pin-project-lite/0.2.17 \ + crate://crates.io/portable-atomic/1.13.1 \ + crate://crates.io/portable-atomic-util/0.2.6 \ + crate://crates.io/prettyplease/0.2.37 \ + crate://crates.io/proc-macro2/1.0.106 \ + crate://crates.io/prost/0.14.3 \ + crate://crates.io/prost-build/0.14.3 \ + crate://crates.io/prost-derive/0.14.3 \ + crate://crates.io/prost-types/0.14.3 \ + crate://crates.io/quote/1.0.45 \ + crate://crates.io/r-efi/6.0.0 \ + crate://crates.io/redox_syscall/0.5.18 \ + crate://crates.io/regex/1.12.3 \ + crate://crates.io/regex-automata/0.4.14 \ + crate://crates.io/regex-syntax/0.8.10 \ + crate://crates.io/ring/0.17.14 \ + crate://crates.io/rustix/1.1.4 \ + crate://crates.io/rustls/0.23.37 \ + crate://crates.io/rustls-pki-types/1.14.0 \ + crate://crates.io/rustls-webpki/0.103.10 \ + crate://crates.io/scopeguard/1.2.0 \ + crate://crates.io/semver/1.0.27 \ + crate://crates.io/serde/1.0.228 \ + crate://crates.io/serde_core/1.0.228 \ + crate://crates.io/serde_derive/1.0.228 \ + crate://crates.io/serde_json/1.0.149 \ crate://crates.io/shlex/1.3.0 \ - crate://crates.io/slab/0.4.9 \ - crate://crates.io/socket2/0.5.7 \ - crate://crates.io/spin/0.9.8 \ + crate://crates.io/signal-hook-registry/1.4.8 \ + crate://crates.io/slab/0.4.12 \ + crate://crates.io/smallvec/1.15.1 \ + crate://crates.io/socket2/0.6.3 \ crate://crates.io/subtle/2.6.1 \ - crate://crates.io/syn/2.0.89 \ - crate://crates.io/sync_wrapper/0.1.2 \ - crate://crates.io/tempfile/3.14.0 \ - crate://crates.io/tokio/1.41.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-util/0.7.12 \ - crate://crates.io/tonic/0.11.0 \ - crate://crates.io/tonic-build/0.11.0 \ - crate://crates.io/tower/0.4.13 \ + crate://crates.io/syn/2.0.117 \ + crate://crates.io/sync_wrapper/1.0.2 \ + crate://crates.io/tempfile/3.27.0 \ + crate://crates.io/test-tag/0.1.6 \ + crate://crates.io/tokio/1.50.0 \ + crate://crates.io/tokio-macros/2.6.1 \ + crate://crates.io/tokio-rustls/0.26.4 \ + crate://crates.io/tokio-stream/0.1.18 \ + crate://crates.io/tokio-util/0.7.18 \ + crate://crates.io/tonic/0.14.5 \ + crate://crates.io/tonic-build/0.14.5 \ + crate://crates.io/tonic-prost/0.14.5 \ + crate://crates.io/tonic-prost-build/0.14.5 \ + crate://crates.io/tower/0.5.3 \ crate://crates.io/tower-layer/0.3.3 \ crate://crates.io/tower-service/0.3.3 \ - crate://crates.io/tracing/0.1.40 \ - crate://crates.io/tracing-attributes/0.1.27 \ - crate://crates.io/tracing-core/0.1.32 \ + crate://crates.io/tracing/0.1.44 \ + crate://crates.io/tracing-attributes/0.1.31 \ + crate://crates.io/tracing-core/0.1.36 \ crate://crates.io/try-lock/0.2.5 \ - crate://crates.io/unicode-ident/1.0.14 \ + crate://crates.io/unicode-ident/1.0.24 \ + crate://crates.io/unicode-xid/0.2.6 \ crate://crates.io/untrusted/0.9.0 \ + crate://crates.io/utf8parse/0.2.2 \ crate://crates.io/want/0.3.1 \ - crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/wasi/0.11.1+wasi-snapshot-preview1 \ + crate://crates.io/wasip2/1.0.2+wasi-0.2.9 \ + crate://crates.io/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06 \ + crate://crates.io/wasm-encoder/0.244.0 \ + crate://crates.io/wasm-metadata/0.244.0 \ + crate://crates.io/wasmparser/0.244.0 \ + crate://crates.io/windows-link/0.2.1 \ crate://crates.io/windows-sys/0.52.0 \ - crate://crates.io/windows-sys/0.59.0 \ + crate://crates.io/windows-sys/0.61.2 \ crate://crates.io/windows-targets/0.52.6 \ crate://crates.io/windows_aarch64_gnullvm/0.52.6 \ crate://crates.io/windows_aarch64_msvc/0.52.6 \ @@ -895,129 +1090,149 @@ SRC_URI += " \ crate://crates.io/windows_x86_64_gnu/0.52.6 \ crate://crates.io/windows_x86_64_gnullvm/0.52.6 \ crate://crates.io/windows_x86_64_msvc/0.52.6 \ - crate://crates.io/zerocopy/0.7.35 \ - crate://crates.io/zerocopy-derive/0.7.35 \ - crate://crates.io/zeroize/1.8.1 \ + crate://crates.io/wit-bindgen/0.51.0 \ + crate://crates.io/wit-bindgen-core/0.51.0 \ + crate://crates.io/wit-bindgen-rust/0.51.0 \ + crate://crates.io/wit-bindgen-rust-macro/0.51.0 \ + crate://crates.io/wit-component/0.244.0 \ + crate://crates.io/wit-parser/0.244.0 \ + crate://crates.io/zeroize/1.8.2 \ + crate://crates.io/zmij/1.0.21 \ " -SRC_URI[addr2line-0.24.2.sha256sum] = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -SRC_URI[anyhow-1.0.93.sha256sum] = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" -SRC_URI[async-stream-0.3.6.sha256sum] = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -SRC_URI[async-stream-impl-0.3.6.sha256sum] = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -SRC_URI[async-trait-0.1.83.sha256sum] = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -SRC_URI[autotools-0.2.7.sha256sum] = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" -SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -SRC_URI[backtrace-0.3.74.sha256sum] = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" -SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -SRC_URI[bitflags-2.6.0.sha256sum] = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -SRC_URI[bytes-1.8.0.sha256sum] = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" -SRC_URI[cc-1.2.1.sha256sum] = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" -SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" -SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -SRC_URI[fastrand-2.2.0.sha256sum] = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" -SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +SRC_URI[aho-corasick-1.1.4.sha256sum] = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +SRC_URI[anstream-1.0.0.sha256sum] = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +SRC_URI[anstyle-1.0.14.sha256sum] = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" +SRC_URI[anstyle-parse-1.0.0.sha256sum] = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +SRC_URI[anstyle-query-1.1.5.sha256sum] = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +SRC_URI[anstyle-wincon-3.0.11.sha256sum] = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +SRC_URI[anyhow-1.0.102.sha256sum] = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +SRC_URI[async-trait-0.1.89.sha256sum] = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +SRC_URI[bitflags-2.11.0.sha256sum] = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +SRC_URI[bytes-1.11.1.sha256sum] = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +SRC_URI[cc-1.2.58.sha256sum] = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" +SRC_URI[cfg-if-1.0.4.sha256sum] = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +SRC_URI[colorchoice-1.0.5.sha256sum] = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" +SRC_URI[either-1.15.0.sha256sum] = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +SRC_URI[env_filter-1.0.1.sha256sum] = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +SRC_URI[env_logger-0.11.10.sha256sum] = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +SRC_URI[equivalent-1.0.2.sha256sum] = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +SRC_URI[errno-0.3.14.sha256sum] = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +SRC_URI[fastrand-2.3.0.sha256sum] = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +SRC_URI[find-msvc-tools-0.1.9.sha256sum] = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +SRC_URI[fixedbitset-0.5.7.sha256sum] = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" -SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -SRC_URI[gimli-0.31.1.sha256sum] = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -SRC_URI[h2-0.3.26.sha256sum] = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -SRC_URI[hashbrown-0.15.2.sha256sum] = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +SRC_URI[foldhash-0.1.5.sha256sum] = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +SRC_URI[futures-channel-0.3.32.sha256sum] = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +SRC_URI[futures-core-0.3.32.sha256sum] = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +SRC_URI[futures-sink-0.3.32.sha256sum] = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +SRC_URI[futures-task-0.3.32.sha256sum] = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +SRC_URI[futures-util-0.3.32.sha256sum] = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +SRC_URI[getrandom-0.2.17.sha256sum] = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +SRC_URI[getrandom-0.4.2.sha256sum] = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +SRC_URI[h2-0.4.13.sha256sum] = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +SRC_URI[hashbrown-0.15.5.sha256sum] = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +SRC_URI[hashbrown-0.16.1.sha256sum] = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -SRC_URI[http-0.2.12.sha256sum] = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -SRC_URI[http-body-0.4.6.sha256sum] = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -SRC_URI[httparse-1.9.5.sha256sum] = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +SRC_URI[http-1.4.0.sha256sum] = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +SRC_URI[http-body-1.0.1.sha256sum] = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +SRC_URI[http-body-util-0.1.3.sha256sum] = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +SRC_URI[httparse-1.10.1.sha256sum] = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -SRC_URI[hyper-0.14.31.sha256sum] = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" -SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -SRC_URI[itoa-1.0.13.sha256sum] = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" -SRC_URI[libc-0.2.164.sha256sum] = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" -SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -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[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -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[object-0.36.5.sha256sum] = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" -SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -SRC_URI[petgraph-0.6.5.sha256sum] = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -SRC_URI[pin-project-1.1.7.sha256sum] = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" -SRC_URI[pin-project-internal-1.1.7.sha256sum] = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" -SRC_URI[pin-project-lite-0.2.15.sha256sum] = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" -SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -SRC_URI[ppv-lite86-0.2.20.sha256sum] = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -SRC_URI[prettyplease-0.2.25.sha256sum] = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" -SRC_URI[prost-0.12.6.sha256sum] = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" -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[protobuf-src-1.1.0+21.5.sha256sum] = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" -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[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -SRC_URI[ring-0.17.8.sha256sum] = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -SRC_URI[rustc-demangle-0.1.24.sha256sum] = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -SRC_URI[rustix-0.38.41.sha256sum] = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" -SRC_URI[rustls-0.22.4.sha256sum] = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -SRC_URI[rustls-pemfile-2.2.0.sha256sum] = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -SRC_URI[rustls-pki-types-1.10.0.sha256sum] = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" -SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -SRC_URI[rustversion-1.0.18.sha256sum] = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" -SRC_URI[serde-1.0.215.sha256sum] = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" -SRC_URI[serde_derive-1.0.215.sha256sum] = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +SRC_URI[hyper-1.9.0.sha256sum] = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +SRC_URI[hyper-timeout-0.5.2.sha256sum] = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +SRC_URI[hyper-util-0.1.20.sha256sum] = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +SRC_URI[id-arena-2.3.0.sha256sum] = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" +SRC_URI[indexmap-2.13.0.sha256sum] = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +SRC_URI[is_terminal_polyfill-1.70.2.sha256sum] = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +SRC_URI[itertools-0.14.0.sha256sum] = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +SRC_URI[itoa-1.0.18.sha256sum] = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +SRC_URI[jiff-0.2.23.sha256sum] = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +SRC_URI[jiff-static-0.2.23.sha256sum] = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +SRC_URI[leb128fmt-0.1.0.sha256sum] = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +SRC_URI[libc-0.2.183.sha256sum] = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +SRC_URI[linux-raw-sys-0.12.1.sha256sum] = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" +SRC_URI[lock_api-0.4.14.sha256sum] = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +SRC_URI[log-0.4.29.sha256sum] = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +SRC_URI[memchr-2.8.0.sha256sum] = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +SRC_URI[mio-1.2.0.sha256sum] = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +SRC_URI[multimap-0.10.1.sha256sum] = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" +SRC_URI[once_cell-1.21.4.sha256sum] = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +SRC_URI[once_cell_polyfill-1.70.2.sha256sum] = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +SRC_URI[parking_lot-0.12.5.sha256sum] = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +SRC_URI[parking_lot_core-0.9.12.sha256sum] = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +SRC_URI[percent-encoding-2.3.2.sha256sum] = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +SRC_URI[petgraph-0.8.3.sha256sum] = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +SRC_URI[pin-project-1.1.11.sha256sum] = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +SRC_URI[pin-project-internal-1.1.11.sha256sum] = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +SRC_URI[pin-project-lite-0.2.17.sha256sum] = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +SRC_URI[portable-atomic-1.13.1.sha256sum] = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +SRC_URI[portable-atomic-util-0.2.6.sha256sum] = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +SRC_URI[prettyplease-0.2.37.sha256sum] = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +SRC_URI[proc-macro2-1.0.106.sha256sum] = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +SRC_URI[prost-0.14.3.sha256sum] = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +SRC_URI[prost-build-0.14.3.sha256sum] = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" +SRC_URI[prost-derive-0.14.3.sha256sum] = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +SRC_URI[prost-types-0.14.3.sha256sum] = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +SRC_URI[quote-1.0.45.sha256sum] = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +SRC_URI[r-efi-6.0.0.sha256sum] = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +SRC_URI[redox_syscall-0.5.18.sha256sum] = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +SRC_URI[regex-1.12.3.sha256sum] = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +SRC_URI[regex-automata-0.4.14.sha256sum] = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +SRC_URI[regex-syntax-0.8.10.sha256sum] = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +SRC_URI[ring-0.17.14.sha256sum] = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +SRC_URI[rustix-1.1.4.sha256sum] = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +SRC_URI[rustls-0.23.37.sha256sum] = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +SRC_URI[rustls-pki-types-1.14.0.sha256sum] = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +SRC_URI[rustls-webpki-0.103.10.sha256sum] = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" +SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +SRC_URI[semver-1.0.27.sha256sum] = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +SRC_URI[serde-1.0.228.sha256sum] = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +SRC_URI[serde_core-1.0.228.sha256sum] = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +SRC_URI[serde_derive-1.0.228.sha256sum] = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +SRC_URI[serde_json-1.0.149.sha256sum] = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -SRC_URI[socket2-0.5.7.sha256sum] = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +SRC_URI[signal-hook-registry-1.4.8.sha256sum] = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +SRC_URI[slab-0.4.12.sha256sum] = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +SRC_URI[smallvec-1.15.1.sha256sum] = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +SRC_URI[socket2-0.6.3.sha256sum] = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -SRC_URI[syn-2.0.89.sha256sum] = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" -SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -SRC_URI[tempfile-3.14.0.sha256sum] = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" -SRC_URI[tokio-1.41.1.sha256sum] = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" -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-util-0.7.12.sha256sum] = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -SRC_URI[tonic-0.11.0.sha256sum] = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" -SRC_URI[tonic-build-0.11.0.sha256sum] = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" -SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +SRC_URI[syn-2.0.117.sha256sum] = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +SRC_URI[sync_wrapper-1.0.2.sha256sum] = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +SRC_URI[tempfile-3.27.0.sha256sum] = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +SRC_URI[test-tag-0.1.6.sha256sum] = "e5a2455608f6a56fc2ce66c89dd005501c169688f29165468e65f0b47e060333" +SRC_URI[tokio-1.50.0.sha256sum] = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +SRC_URI[tokio-macros-2.6.1.sha256sum] = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +SRC_URI[tokio-rustls-0.26.4.sha256sum] = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +SRC_URI[tokio-stream-0.1.18.sha256sum] = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +SRC_URI[tokio-util-0.7.18.sha256sum] = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +SRC_URI[tonic-0.14.5.sha256sum] = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" +SRC_URI[tonic-build-0.14.5.sha256sum] = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" +SRC_URI[tonic-prost-0.14.5.sha256sum] = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +SRC_URI[tonic-prost-build-0.14.5.sha256sum] = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" +SRC_URI[tower-0.5.3.sha256sum] = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" SRC_URI[tower-layer-0.3.3.sha256sum] = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" SRC_URI[tower-service-0.3.3.sha256sum] = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" -SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +SRC_URI[tracing-0.1.44.sha256sum] = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +SRC_URI[tracing-attributes-0.1.31.sha256sum] = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +SRC_URI[tracing-core-0.1.36.sha256sum] = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" SRC_URI[try-lock-0.2.5.sha256sum] = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +SRC_URI[unicode-ident-1.0.24.sha256sum] = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +SRC_URI[wasi-0.11.1+wasi-snapshot-preview1.sha256sum] = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +SRC_URI[wasip2-1.0.2+wasi-0.2.9.sha256sum] = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +SRC_URI[wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.sha256sum] = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +SRC_URI[wasm-encoder-0.244.0.sha256sum] = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +SRC_URI[wasm-metadata-0.244.0.sha256sum] = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +SRC_URI[wasmparser-0.244.0.sha256sum] = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +SRC_URI[windows-link-0.2.1.sha256sum] = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -SRC_URI[windows-sys-0.59.0.sha256sum] = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +SRC_URI[windows-sys-0.61.2.sha256sum] = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" @@ -1027,6 +1242,11 @@ SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffc SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +SRC_URI[wit-bindgen-0.51.0.sha256sum] = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +SRC_URI[wit-bindgen-core-0.51.0.sha256sum] = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +SRC_URI[wit-bindgen-rust-0.51.0.sha256sum] = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +SRC_URI[wit-bindgen-rust-macro-0.51.0.sha256sum] = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +SRC_URI[wit-component-0.244.0.sha256sum] = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +SRC_URI[wit-parser-0.244.0.sha256sum] = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +SRC_URI[zeroize-1.8.2.sha256sum] = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +SRC_URI[zmij-1.0.21.sha256sum] = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch b/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch index 48904dd4..3e52c431 100644 --- a/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker/0001-Remove-protobuf-src-usage.patch @@ -1,4 +1,4 @@ -From 9e5b68749fb8e9fe932b90f92a95aa2d18d83795 Mon Sep 17 00:00:00 2001 +From 26c14a895ebaa68829acdb0e1dc613314c5d9657 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 4 Dec 2024 09:53:15 -0500 Subject: [PATCH] Remove protobuf-src usage @@ -20,60 +20,60 @@ Signed-off-by: Scott Murray 4 files changed, 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock -index df1ef1a..56837b5 100644 +index 641dc5a..02d8c36 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -180,15 +180,6 @@ version = "1.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +@@ -478,15 +478,6 @@ dependencies = [ + "hashbrown 0.16.1", + ] -[[package]] --name = "autotools" --version = "0.2.7" +-name = "cmake" +-version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +-checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" -dependencies = [ - "cc", -] - [[package]] - name = "axum" - version = "0.6.20" -@@ -664,7 +655,6 @@ version = "0.5.0" + name = "colorchoice" + version = "1.0.5" +@@ -778,7 +769,6 @@ version = "0.6.1" dependencies = [ - "prost", + "prost 0.14.3", "prost-types", - "protobuf-src", - "tonic", - "tonic-build", - ] -@@ -2494,15 +2484,6 @@ dependencies = [ - "prost", + "tonic 0.14.5", + "tonic-prost", + "tonic-prost-build", +@@ -3167,15 +3157,6 @@ dependencies = [ + "prost 0.14.3", ] -[[package]] -name = "protobuf-src" --version = "1.1.0+21.5" +-version = "2.1.1+27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +-checksum = "6217c3504da19b85a3a4b2e9a5183d635822d83507ba0986624b5c05b83bfc40" -dependencies = [ -- "autotools", +- "cmake", -] - [[package]] name = "quote" - version = "1.0.37" + version = "1.0.45" diff --git a/databroker-proto/Cargo.toml b/databroker-proto/Cargo.toml -index 2475412..877c270 100644 +index 5b6a459..f5e2cbb 100644 --- a/databroker-proto/Cargo.toml +++ b/databroker-proto/Cargo.toml -@@ -25,4 +25,3 @@ prost-types = { workspace = true } +@@ -26,4 +26,3 @@ prost-types = { workspace = true } [build-dependencies] - tonic-build = { workspace = true, features = ["transport", "prost"] } --protobuf-src = "1.1.0" + tonic-prost-build = { workspace = true, features = ["transport"] } +-protobuf-src = "2" diff --git a/databroker-proto/build.rs b/databroker-proto/build.rs -index 1a832c9..8a85b9d 100644 +index 9c90f99..ba0f6d9 100644 --- a/databroker-proto/build.rs +++ b/databroker-proto/build.rs @@ -14,7 +14,6 @@ @@ -81,53 +81,53 @@ index 1a832c9..8a85b9d 100644 fn main() -> Result<(), Box> { - std::env::set_var("PROTOC", protobuf_src::protoc()); - tonic_build::configure() + tonic_prost_build::configure() .compile_well_known_types(false) .protoc_arg("--experimental_allow_proto3_optional") diff --git a/lib/Cargo.lock b/lib/Cargo.lock -index 2a147ff..0835e6f 100644 +index 039b2ea..22d68c0 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock -@@ -71,15 +71,6 @@ version = "1.4.0" +@@ -118,15 +118,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" -[[package]] --name = "autotools" --version = "0.2.7" +-name = "cmake" +-version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf" +-checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" -dependencies = [ - "cc", -] - [[package]] - name = "axum" - version = "0.6.20" -@@ -191,7 +182,6 @@ version = "0.5.0" + name = "colorchoice" + version = "1.0.5" +@@ -154,7 +145,6 @@ version = "0.6.1" dependencies = [ "prost", "prost-types", - "protobuf-src", "tonic", - "tonic-build", - ] -@@ -682,15 +672,6 @@ dependencies = [ + "tonic-prost", + "tonic-prost-build", +@@ -774,15 +764,6 @@ dependencies = [ "prost", ] -[[package]] -name = "protobuf-src" --version = "1.1.0+21.5" +-version = "2.1.1+27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +-checksum = "6217c3504da19b85a3a4b2e9a5183d635822d83507ba0986624b5c05b83bfc40" -dependencies = [ -- "autotools", +- "cmake", -] - [[package]] name = "quote" - version = "1.0.37" + version = "1.0.45" -- -2.47.0 +2.53.0 diff --git a/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb index dbf6fefb..963ca166 100644 --- a/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb +++ b/recipes-connectivity/kuksa-databroker/kuksa-databroker_git.bb @@ -4,8 +4,8 @@ SUMMARY = "KUKSA.val databroker, the KUKSA Vehicle Abstraction Layer" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" -BRANCH = "main" -SRCREV = "30e5c13abc496d0b39aaa6c25acebb088b9902e3" +BRANCH = "release/0.6.1" +SRCREV = "dd9cb5d1c2da2543dd3b3aa7e5fb350d07412c66" SRC_URI = "git://github.com/eclipse-kuksa/kuksa-databroker.git;protocol=https;branch=${BRANCH}"