From fc6c3a7e2bb5756cd6e2f6b442d30470acc58d0a Mon Sep 17 00:00:00 2001 From: Raghavendra Maddikery Date: Thu, 22 Jan 2026 12:00:30 +0100 Subject: [PATCH 01/55] Integrates datarouter in qemu reference_integration platform --- qnx_qemu/.bazelrc | 11 ++- qnx_qemu/build/BUILD | 5 +- qnx_qemu/build/system.build | 14 +++- qnx_qemu/configs/startup.sh | 8 +++ qnx_qemu/datarouter_integration/BUILD | 26 +++++++ .../etc/log-channels.json | 71 +++++++++++++++++++ .../datarouter_integration/etc/logging.json | 9 +++ 7 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 qnx_qemu/datarouter_integration/BUILD create mode 100644 qnx_qemu/datarouter_integration/etc/log-channels.json create mode 100644 qnx_qemu/datarouter_integration/etc/logging.json diff --git a/qnx_qemu/.bazelrc b/qnx_qemu/.bazelrc index f5f02ea756a..1ad0449d093 100644 --- a/qnx_qemu/.bazelrc +++ b/qnx_qemu/.bazelrc @@ -1,11 +1,18 @@ common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ common --registry=https://bcr.bazel.build -build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False -build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False build:_common --@score_baselibs//score/json:base_library=nlohmann build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False build:_common --@score_communication//score/mw/com/flags:tracing_library=stub + +# Flags needed by datarouter +build:_common --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True + build:_common --cxxopt=-Wno-error=mismatched-new-delete build:x86_64-qnx --config=_common diff --git a/qnx_qemu/build/BUILD b/qnx_qemu/build/BUILD index 077d30e0e9e..15f11ba5408 100644 --- a/qnx_qemu/build/BUILD +++ b/qnx_qemu/build/BUILD @@ -51,11 +51,14 @@ qnx_ifs( ":configs", "@score_scrample//src:scrample", "//scrample_integration:etc_configs", - "@score_persistency//tests/cpp_test_scenarios:cpp_test_scenarios", + "//datarouter_integration:etc_configs", + "@score_persistency//tests/cpp_test_scenarios:cpp_test_scenarios", + "@score_logging//score/datarouter:datarouter", ], ext_repo_maping = { "SCRAMPLE_PATH": "$(location @score_scrample//src:scrample)", "CPP_TEST_SCENARIOS_PATH": "$(location @score_persistency//tests/cpp_test_scenarios:cpp_test_scenarios)", + "DATAROUTER_PATH": "$(location @score_logging//score/datarouter:datarouter)", }, visibility = [ "//:__pkg__" diff --git a/qnx_qemu/build/system.build b/qnx_qemu/build/system.build index baab76a47fb..8d039adef5d 100644 --- a/qnx_qemu/build/system.build +++ b/qnx_qemu/build/system.build @@ -66,7 +66,7 @@ libpam.so.2 # Pluggable Authentication Modules libr # Note: /bin/sh symlink already defined in init.build as /proc/boot/ksh toybox # Minimal Unix utilities collection (replaces many GNU tools) [type=link] cp=toybox # Copy files and directories -[type=link] ls=toybox # List directory contents +[type=link] ls=toybox # List directory contents [type=link] cat=toybox # Display file contents [type=link] chmod=toybox # Change file permissions [type=link] rm=toybox # Remove files and directories @@ -255,7 +255,7 @@ pci/pci_debug2.so # Enhanced PCI debugging support [perms=0444] pci_hw.cfg = configs/pci_hw.cfg # PCI hardware configuration [perms=0444] qcrypto.conf = configs/qcrypto.conf # QNX cryptographic library configuration -# System hostname configuration +# System hostname configuration /etc/hostname = configs/hostname # System hostname definition file /etc/profile = configs/profile @@ -281,3 +281,13 @@ pci/pci_debug2.so # Enhanced PCI debugging support [perms=777] /scrample = ${SCRAMPLE_PATH} [perms=777] /cpp_tests_persistency = ${CPP_TEST_SCENARIOS_PATH} + + +############################################# +### Datarouter ### +############################################# +[perms=777] /usr/bin/datarouter = ${DATAROUTER_PATH} + +# Datarouter configuration files (relative to binary: ./etc/) +[perms=644] /usr/bin/etc/logging.json = datarouter_integration/etc/logging.json +[perms=644] /usr/bin/etc/log-channels.json = datarouter_integration/etc/log-channels.json diff --git a/qnx_qemu/configs/startup.sh b/qnx_qemu/configs/startup.sh index ce9a5c1b5e7..edac716f71c 100644 --- a/qnx_qemu/configs/startup.sh +++ b/qnx_qemu/configs/startup.sh @@ -82,3 +82,11 @@ mkdir -p /tmp_ram/tmp_discovery ln -sP /tmp_ram/tmp_discovery /tmp_discovery /proc/boot/sshd -f /var/ssh/sshd_config # Start SSH daemon with specified configuration file + +echo "---> Starting datarouter" +cd /usr/bin +sleep 2 # Brief delay to allow system services to be setup (needed for QNX QEMU timing) +# start datarouter as nonroot user with pathspace ability +# pathspace ability provides the datarouter access to the `procnto` +# pathname prefix space required for mw/com message passing with mw::log frontend +on -A nonroot,allow,pathspace -u 1051:1091 ./datarouter --no_adaptive_runtime & diff --git a/qnx_qemu/datarouter_integration/BUILD b/qnx_qemu/datarouter_integration/BUILD new file mode 100644 index 00000000000..89984b02f1c --- /dev/null +++ b/qnx_qemu/datarouter_integration/BUILD @@ -0,0 +1,26 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +exports_files([ + "etc/logging.json", + "etc/log-channels.json", +]) + +filegroup( + name = "etc_configs", + srcs = [ + "etc/logging.json", + "etc/log-channels.json", + ], + visibility = ["//visibility:public"], +) diff --git a/qnx_qemu/datarouter_integration/etc/log-channels.json b/qnx_qemu/datarouter_integration/etc/log-channels.json new file mode 100644 index 00000000000..516c9742e60 --- /dev/null +++ b/qnx_qemu/datarouter_integration/etc/log-channels.json @@ -0,0 +1,71 @@ +{ + "channels": { + "3491": { + "address": "0.0.0.0", + "channelThreshold": "kError", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3491 + }, + "3492": { + "address": "0.0.0.0", + "channelThreshold": "kInfo", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3492 + }, + "3493": { + "address": "0.0.0.0", + "channelThreshold": "kVerbose", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3493 + } + }, + "channelAssignments": { + "DR": { + "": [ + "3492" + ], + "CTX1": [ + "3492", + "3493" + ], + "STAT": [ + "3492" + ] + }, + "IPBR": { + "": [ + "3492", + "3493" + ] + }, + "-NI-": { + "": [ + "3491" + ] + } + }, + "defaultChannel": "3493", + "defaultThresold": "kVerbose", + "messageThresholds": { + "": { + "vcip": "kInfo" + }, + "DR": { + "": "kVerbose", + "CTX1": "kVerbose", + "STAT": "kDebug" + }, + "IPBR": { + "": "kVerbose" + }, + "-NI-": { + "": "kVerbose" + } + } +} diff --git a/qnx_qemu/datarouter_integration/etc/logging.json b/qnx_qemu/datarouter_integration/etc/logging.json new file mode 100644 index 00000000000..5ca7a5f357e --- /dev/null +++ b/qnx_qemu/datarouter_integration/etc/logging.json @@ -0,0 +1,9 @@ +{ + "appId": "DR", + "appDesc": "Data Router", + "logLevel": "kInfo", + "ringBufferSize": 786432, + "numberOfSlots": 4, + "slotSizeBytes": 4096, + "datarouterUid": 1051 +} From 448c212a174d8818aabd8aa38e44f0e509f1ab4b Mon Sep 17 00:00:00 2001 From: Oliver Pajonk Date: Mon, 22 Dec 2025 11:39:21 +0100 Subject: [PATCH 02/55] Generate Workspace using Gita (#47) * Generate Workspace using Gita This change adds the capability to generate a workspace directly from the known_good.json file. To achieve this, the known_good.json file is transformed into a configuration file for a git workspace management tool called gita, which is then used to check out all mentioned modules on the specific commit/branch that is given in known_good.json. In addition, the score_modules.MODULE.bazel is updated with local_path_overrides to the checked out modules. Hence, a bazel build will immediately work as expected. # Conflicts: # .gitignore # Conflicts: # .devcontainer/devcontainer.json * also generate .gitmodules metadata * Remove git submodules generation This does not work, since submodules require also commit tracking in the top-level repository. This would by default pollute reference_integration, which is certainly not what we want. * do not create a workspace by default * Add VSCode Tasks and documentation * Fix deprecation warning * mark as executable * clarify the devcontainer relation and which build targets should be working --- .devcontainer/devcontainer.json | 1 + .devcontainer/prepare_workspace.sh | 22 ++++++++++ .gitignore | 5 +++ .vscode/tasks.json | 47 ++++++++++++++++++++ README.md | 41 ++++++++++++++++++ tools/get_module_info.py | 0 tools/known_good_to_workspace_metadata.py | 52 +++++++++++++++++++++++ tools/update_module_from_known_good.py | 38 +++++++++++++++-- tools/update_module_latest.py | 2 +- 9 files changed, 203 insertions(+), 5 deletions(-) create mode 100755 .devcontainer/prepare_workspace.sh create mode 100644 .vscode/tasks.json mode change 100644 => 100755 tools/get_module_info.py create mode 100644 tools/known_good_to_workspace_metadata.py mode change 100644 => 100755 tools/update_module_from_known_good.py mode change 100644 => 100755 tools/update_module_latest.py diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index dd8ec867e9f..789f1e50908 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,6 @@ { "name": "eclipse-s-core", "image": "ghcr.io/eclipse-score/devcontainer:v1.1.0", + "postCreateCommand": "bash .devcontainer/prepare_workspace.sh", "postStartCommand": "ssh-keygen -f '/home/vscode/.ssh/known_hosts' -R '[localhost]:2222' || true" } diff --git a/.devcontainer/prepare_workspace.sh b/.devcontainer/prepare_workspace.sh new file mode 100755 index 00000000000..2a2e5ffdef8 --- /dev/null +++ b/.devcontainer/prepare_workspace.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -euo pipefail + +# Install pipx +sudo apt update +sudo apt install -y pipx + +# Install gita +pipx install gita + +# Enable bash autocompletion for gita +echo "eval \"\$(register-python-argcomplete gita -s bash)\"" >> ~/.bashrc + +# Set GITA_PROJECT_HOME environment variable +echo "export GITA_PROJECT_HOME=$(pwd)/.gita" >> ~/.bashrc +GITA_PROJECT_HOME=$(pwd)/.gita +mkdir -p "$GITA_PROJECT_HOME" +export GITA_PROJECT_HOME + +# Generate workspace metadata files from known_good.json: +# - .gita-workspace.csv +python3 tools/known_good_to_workspace_metadata.py --known-good known_good.json --gita-workspace .gita-workspace.csv diff --git a/.gitignore b/.gitignore index ca2081e4934..fc5e8eb6a8c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,8 @@ __pycache__/ /_build /docs/ubproject.toml /docs/_collections + +# Workspace files +/score_*/ +/.gita/ +/.gita-workspace.csv diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000000..5234f5b4f6f --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,47 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Update workspace metadata from known good", + "type": "shell", + "command": "python3", + "args": [ + "tools/known_good_to_workspace_metadata.py" + ], + "problemMatcher": [] + }, + { + "label": "Switch Bazel modules to local_path_overrides", + "type": "shell", + "command": "python3", + "args": [ + "tools/update_module_from_known_good.py", + "--override-type", + "local_path" + ], + "problemMatcher": [] + }, + { + "label": "Switch Bazel modules to git_overrides", + "type": "shell", + "command": "python3", + "args": [ + "tools/update_module_from_known_good.py", + "--override-type", + "git" + ] + }, + { + "label": "Gita: Generate workspace", + "type": "shell", + "command": "gita", + "args": [ + "clone", + "--preserve-path", + "--from-file", + ".gita-workspace.csv" + ], + "problemMatcher": [] + } + ] +} diff --git a/README.md b/README.md index 07821af1a85..2946b1237e6 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,47 @@ Execute `bazel query //feature_showcase/...` to obtain list of targets that You bazel build --config bl-x86_64-linux @score_orchestrator//src/... --verbose_failures ``` +## Workspace support + +You can obtain a complete S-CORE workspace, i.e. a git checkout of all modules from `known_good.json`, on the specific branches / commits, integrated into one Bazel build. +This helps with cross-module development, debugging, and generally "trying out things". + +> [!NOTE] +> The startup of the [S-CORE devcontainer](https://github.com/eclipse-score/devcontainer) [integrated in this repository](.devcontainer/) already installs supported workspace managers and generates the required metadata. +> You can do this manually as well, of course (e.g. if you do not use the devcontainer). +> Take a look at `.devcontainer/prepare_workspace.sh`, which contains the setup script. + +> [!NOTE] +> Not all Bazel targets are supported yet. +> Running `./scripts/integration_test.sh` will work, though. +> Take a look at the [Known Issues](#known-issues-️) below to see which Bazel targets are available and working. + +The supported workspace managers are: + +| Name | Description | +|------|-------------| +| [Gita](https://github.com/nosarthur/gita) | "a command-line tool to manage multiple git repos" | + +A description of how to use these workspace managers, together with their advantages and drawbacks, is beyond the scope of this document. +In case of doubt, choose the first. + +### Initialization of the workspace + +> [!WARNING] +> This will change the file `score_modules.MODULE.bazel`. +> Do **not** commit these changes! + +1. Switch to local path overrides, using the VSCode Task (`Terminal`->`Run Task...`) "Switch Bazel modules to `local_path_overrides`". + Note that you can switch back to `git_overrides` (the default) using the task "Switch Bazel modules to `git_overrides`" + +2. Run VSCode Task "<Name>: Generate workspace", e.g. "Gita: Generate workspace". + This will clone all modules using the chosen workspace manager. + The modules will be in sub-directories starting with `score_`. + Note that the usage of different workspace managers is mutually exclusive. + +When you now run Bazel, it will use the local working copies of all modules and not download them from git remotes. +You can make local changes to each module, which will be directly reflected in the next Bazel run. + ## Known Issues ⚠️ ### Orchestrator diff --git a/tools/get_module_info.py b/tools/get_module_info.py old mode 100644 new mode 100755 diff --git a/tools/known_good_to_workspace_metadata.py b/tools/known_good_to_workspace_metadata.py new file mode 100644 index 00000000000..145c17614ee --- /dev/null +++ b/tools/known_good_to_workspace_metadata.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +import argparse +import json +import csv + +MODULES_CSV_HEADER = [ + "repo_url", + "name", + "workspace_path", + "version", + "hash", + "branch" +] + +def main(): + parser = argparse.ArgumentParser(description="Convert known_good.json to workspace metadata files for gita and git submodules.") + + parser.add_argument("--known-good", dest="known_good", default="known_good.json", help="Path to known_good.json") + parser.add_argument("--gita-workspace", dest="gita_workspace", default=".gita-workspace.csv", help="File to output gita workspace metadata") + args = parser.parse_args() + + with open(args.known_good, "r") as f: + data = json.load(f) + + modules = data.get("modules", {}) + + gita_metadata = [] + for name, info in modules.items(): + repo_url = info.get("repo", "") + if not repo_url: + raise RuntimeError("repo must not be empty") + + # default branch: main + branch = info.get("branch", "main") + + # if no hash is given, use branch + hash_ = info.get("hash", branch) + + # workspace_path is not available in known_good.json, default to name of repository + workspace_path = name + + # gita format: {url},{name},{path},{prop['type']},{repo_flags},{branch} + row = [repo_url, name, workspace_path, "", "", hash_] + gita_metadata.append(row) + + with open(args.gita_workspace, "w", newline="") as f: + writer = csv.writer(f) + for row in gita_metadata: + writer.writerow(row) + +if __name__ == "__main__": + main() diff --git a/tools/update_module_from_known_good.py b/tools/update_module_from_known_good.py old mode 100644 new mode 100755 index 67820ecf0bd..138590bfa9f --- a/tools/update_module_from_known_good.py +++ b/tools/update_module_from_known_good.py @@ -90,8 +90,24 @@ def generate_git_override_blocks(modules_dict: Dict[str, Any], repo_commit_dict: return blocks +def generate_local_override_blocks(modules_dict: Dict[str, Any]) -> List[str]: + """Generate bazel_dep and local_path_override blocks for each module.""" + blocks = [] + + for name, module in modules_dict.items(): + block = ( + f'bazel_dep(name = "{name}")\n' + 'local_path_override(\n' + f' module_name = "{name}",\n' + f' path = "{name}",\n' + ')\n' + ) + + blocks.append(block) + + return blocks -def generate_file_content(modules: Dict[str, Any], repo_commit_dict: Dict[str, str], timestamp: Optional[str] = None) -> str: +def generate_file_content(args: argparse.Namespace, modules: Dict[str, Any], repo_commit_dict: Dict[str, str], timestamp: Optional[str] = None) -> str: """Generate the complete content for score_modules.MODULE.bazel.""" # License header assembled with parenthesis grouping (no indentation preserved in output). header = ( @@ -117,7 +133,15 @@ def generate_file_content(modules: Dict[str, Any], repo_commit_dict: Dict[str, s "\n" ) - blocks = generate_git_override_blocks(modules, repo_commit_dict) + if args.override_type == "git": + blocks = generate_git_override_blocks(modules, repo_commit_dict) + else: + header += ( + "# Note: This file uses local_path overrides. Ensure that local paths are set up correctly.\n" + "\n" + ) + blocks = generate_local_override_blocks(modules) + if not blocks: raise SystemExit("No valid modules to generate git_override blocks") @@ -149,6 +173,12 @@ def main() -> None: action="append", help="Override commit for a specific repo (format: @)" ) + parser.add_argument( + "--override-type", + choices=["local_path", "git"], + default="git", + help="Type of override to use (default: git)" + ) args = parser.parse_args() @@ -180,7 +210,7 @@ def main() -> None: # Generate file content timestamp = data.get("timestamp") or datetime.now().isoformat() - content = generate_file_content(modules, repo_commit_dict, timestamp) + content = generate_file_content(args, modules, repo_commit_dict, timestamp) if args.dry_run: print(f"Dry run: would write to {output_path}\n") @@ -191,7 +221,7 @@ def main() -> None: else: with open(output_path, "w", encoding="utf-8") as f: f.write(content) - print(f"Generated {output_path} with {len(modules)} git_override entries") + print(f"Generated {output_path} with {len(modules)} {args.override_type}_override entries") if __name__ == "__main__": diff --git a/tools/update_module_latest.py b/tools/update_module_latest.py old mode 100644 new mode 100755 index 77fdee311b3..210f847c46c --- a/tools/update_module_latest.py +++ b/tools/update_module_latest.py @@ -119,7 +119,7 @@ def load_known_good(path: str) -> dict: def write_known_good(path: str, original: dict, modules: list[Module]) -> None: out = dict(original) # shallow copy - out["timestamp"] = dt.datetime.utcnow().replace(microsecond=0).isoformat() + "Z" + out["timestamp"] = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" out["modules"] = {} for m in modules: mod_dict = {"repo": m.repo, "hash": m.hash} From 9973f27e4197179eb33cc83dc4f79b284e444070 Mon Sep 17 00:00:00 2001 From: Anton Krivoborodov <63401640+antonkri@users.noreply.github.com> Date: Mon, 22 Dec 2025 13:04:38 +0200 Subject: [PATCH 03/55] add logging to igate (#64) Co-authored-by: Frank Scholter Peres(MBTI) <145544737+FScholPer@users.noreply.github.com> --- known_good.json | 8 +++++++- score_modules.MODULE.bazel | 12 ++++++------ scripts/integration_test.sh | 9 +++++++++ scripts/run_unit_tests.sh | 16 +++++++++++++++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/known_good.json b/known_good.json index 65b73f56604..a3205d86f8e 100644 --- a/known_good.json +++ b/known_good.json @@ -3,7 +3,7 @@ "modules": { "score_baselibs": { "version": "0.2.2", - "hash": "d072b126faa8ce2b6eaad88c6375b210fe42a547", + "hash": "a3557b809406289a3bf0bc6c447a1d646ee67ba0", "repo": "https://github.com/eclipse-score/baselibs.git", "branch": "release_v0_2_2" }, @@ -12,6 +12,12 @@ "repo": "https://github.com/eclipse-score/communication.git", "hash": "d5414f75bfd4fc116572091ccca305d9e4b39338" }, + "score_logging": { + "version": "0.0.4", + "hash": "d3624d52151fcde9c8351867353a8baf59a269cd", + "repo": "https://github.com/eclipse-score/logging.git", + "branch": "score_05_beta" + }, "score_persistency": { "version": "0.2.1", "hash": "7548876ed3e40ec3f3053c57634de68129287e05", diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index a7c89857af9..12295d01ef4 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -23,11 +23,11 @@ single_version_override( version = "0.1.2", ) -# bazel_dep(name = "score_logging", dev_dependency = True) -# single_version_override( -# module_name = "score_logging", -# version = "0.0.3", -# ) +bazel_dep(name = "score_logging") +single_version_override( + module_name = "score_logging", + version = "0.0.4", +) bazel_dep(name = "score_persistency") git_override( @@ -91,4 +91,4 @@ single_version_override( version = "1.0.2", ) -bazel_dep(name = "nlohmann_json", version = "3.11.3") \ No newline at end of file +bazel_dep(name = "nlohmann_json", version = "3.11.3") diff --git a/scripts/integration_test.sh b/scripts/integration_test.sh index 45b344a5ea4..dfccfbd88f4 100755 --- a/scripts/integration_test.sh +++ b/scripts/integration_test.sh @@ -21,6 +21,15 @@ declare -A BUILD_TARGET_GROUPS=( [score_orchestrator]="@score_orchestrator//src/..." [score_test_scenarios]="@score_test_scenarios//test_scenarios_rust:test_scenarios_rust @score_test_scenarios//test_scenarios_cpp:test_scenarios_cpp" [score_feo]="-- @score_feo//... -@score_feo//:docs -@score_feo//:ide_support -@score_feo//:needs_json" + [score_logging]="@score_logging//score/... \ + --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ + --@score_baselibs//score/json:base_library=nlohmann \ + --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ + --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ + --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ + --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ + --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ + --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True " ) # Parse command line arguments diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index 6ff54a711de..7fffe6414ef 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -23,6 +23,20 @@ declare -A UT_TARGET_GROUPS=( [orchestrator]="@score_orchestrator//src/..." # ok [kyron]="@score_kyron//:unit_tests" # ok [feo]="@score_feo//... --build_tests_only" # ok (flag required or error from docs) + [logging]="@score_logging//score/... \ + --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ + --@score_baselibs//score/json:base_library=nlohmann \ + --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ + --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ + --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ + --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ + --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ + --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True \ + --test_tag_filters=-manual \ + -- -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT \ + -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT \ + -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT \ + -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test " ) # Markdown table header @@ -69,4 +83,4 @@ column -t -s $'\t' "${SUMMARY_FILE}" > "${SUMMARY_FILE}.tmp" && mv "${SUMMARY_FI if [[ $any_failed -ne 0 ]]; then echo "Some unit test groups failed. Exiting with non-zero status." exit 1 -fi \ No newline at end of file +fi From 4cf9c2cee00c988c85811070eca443229399790a Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Mon, 22 Dec 2025 13:15:58 +0100 Subject: [PATCH 04/55] add write permission (#68) needed to edit existing release --- .github/workflows/unit_tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index f09b5bdad25..8f881829db4 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -22,6 +22,9 @@ on: jobs: integration_test: runs-on: ubuntu-latest + permissions: + contents: write # required to upload release assets + steps: - name: Show disk space before build run: | From 54f0d01e729c1ce170c9843c65775b9ae72c168c Mon Sep 17 00:00:00 2001 From: "Frank Scholter Peres(MBTI)" <145544737+FScholPer@users.noreply.github.com> Date: Mon, 22 Dec 2025 14:26:07 +0100 Subject: [PATCH 05/55] switched platform and referenced newest version (#65) * switched platform and referenced newest version * removed hashes * fixed json * updated with logging * updated known_good * readded hashes as the static code analysis fails without * updated persistency * reverted to kyron 0.0.3 --- docs/index.rst | 2 +- known_good.json | 30 ++++++++++++++++-------------- score_modules.MODULE.bazel | 31 +++++++++++++++---------------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 03b500f59f9..2969ed29fad 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,7 +15,7 @@ Reference Integration Documentation =================================== -Release Notes: :need:`doc__score_v05_alpha_release_note` +Newest Release Notes: :need:`doc__score_v05_beta_release_note` .. if-collection:: score_platform diff --git a/known_good.json b/known_good.json index a3205d86f8e..fea938c36b2 100644 --- a/known_good.json +++ b/known_good.json @@ -19,17 +19,18 @@ "branch": "score_05_beta" }, "score_persistency": { - "version": "0.2.1", - "hash": "7548876ed3e40ec3f3053c57634de68129287e05", + "version": "0.2.2", + "hash": "9101956287a94d37ac34c29e94fa6f8d96879a73", "repo": "https://github.com/eclipse-score/persistency.git" }, "score_orchestrator": { - "version": "0.0.3", - "hash": "7bb94ebae08805ea0a83dcc14f7c17da5ab927e6", + "version": "0.0.4", + "hash": "92ee5ff22e571f2180a44edddcb81474e1ec68db", "repo": "https://github.com/eclipse-score/orchestrator.git" }, "score_kyron": { - "hash": "caa9c0b367d18a09e969c1353e95a8c443ae896b", + "version": "0.0.3", + "hash": "558c5b5d8cd142baeafbfce15185c03b97e08eeb", "repo": "https://github.com/eclipse-score/kyron.git" }, "score_feo": { @@ -39,12 +40,13 @@ "branch": "candidate_v0.5" }, "score_tooling": { - "version": "1.0.2", - "hash": "64f81aaf9378e93be5209e52bf1bd149d6d7727f", + "version": "1.0.4", + "hash": "905d1feb00f4ffb586d781f6420423855f802a4c", "repo": "https://github.com/eclipse-score/tooling.git" }, "score_platform": { - "hash": "a9cf44be1342f3c62111de2249eb3132f5ab88da", + "version": "0.5.2", + "hash": "754ef0ddf4cbc68667c1e54c3212a58ecda7837e", "repo": "https://github.com/eclipse-score/score.git" }, "score_bazel_platforms": { @@ -53,18 +55,18 @@ "repo": "https://github.com/eclipse-score/bazel_platforms.git" }, "score_test_scenarios": { - "version": "0.3.0", - "hash": "a2f9cded3deb636f5dc800bf7a47131487119721", + "version": "0.3.1", + "hash": "55280e1376922aead6e09f32542f4e2d0b90cc51", "repo": "https://github.com/eclipse-score/testing_tools.git" }, "score_docs_as_code": { - "version": "2.0.1", - "hash": "bb52c96dd98799bdce68c166ad3b826f017f7cf6", + "version": "2.2.0", + "hash": "c87cd898ef63ce15daec434dc5ea161651cefe97", "repo": "https://github.com/eclipse-score/docs-as-code.git" }, "score_process": { - "version": "1.3.1", - "hash": "270e0ed0a2e560340f02b2f7046752cc937fe251", + "version": "1.4.0", + "hash": "d0570797b22649be2d2cdb603f2d70bdbff304ed", "repo": "https://github.com/eclipse-score/process_description.git" } }, diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 12295d01ef4..f9f6fb8f91b 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -11,10 +11,13 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* +# Generated from known_good.json at 2025-08-13T12:55:10Z +# Do not edit manually - use tools/update_module_from_known_good.py + bazel_dep(name = "score_baselibs") single_version_override( module_name = "score_baselibs", - version = "0.2.2" + version = "0.2.2", ) bazel_dep(name = "score_communication") @@ -30,10 +33,9 @@ single_version_override( ) bazel_dep(name = "score_persistency") -git_override( +single_version_override( module_name = "score_persistency", - remote = "https://github.com/qorix-group/persistency.git", - commit = "49089f1ac9d232f09eb65ca086b92f67e75aaff8", + version = "0.2.2", ) bazel_dep(name = "score_orchestrator") @@ -48,17 +50,22 @@ single_version_override( version = "0.0.3", ) +bazel_dep(name = "score_feo") +single_version_override( + module_name = "score_feo", + version = "1.0.2", +) + bazel_dep(name = "score_tooling") single_version_override( module_name = "score_tooling", - version = "1.0.2", + version = "1.0.4", ) bazel_dep(name = "score_platform") -git_override( +single_version_override( module_name = "score_platform", - remote = "https://github.com/eclipse-score/score.git", - commit = "45faa6781b5c7d292d885d4e2ad95eaf21c925c5", + version = "0.5.2", ) bazel_dep(name = "score_bazel_platforms") @@ -84,11 +91,3 @@ single_version_override( module_name = "score_process", version = "1.4.0", ) - -bazel_dep(name = "score_feo", version = "1.0.2") -single_version_override( - module_name = "score_feo", - version = "1.0.2", -) - -bazel_dep(name = "nlohmann_json", version = "3.11.3") From c79c8de3cf6a1b4733d1ee35a687b82ec29c6eb4 Mon Sep 17 00:00:00 2001 From: Oliver Pajonk Date: Mon, 22 Dec 2025 14:45:26 +0100 Subject: [PATCH 06/55] Update EB corbos Linux for Safety Applications dependencies to 0.5.0-beta (2nd part) (#67) * bump score_docs_as_code version * bump score_persistency --- ebclfsa/MODULE.bazel | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ebclfsa/MODULE.bazel b/ebclfsa/MODULE.bazel index 03de15d32c8..04b66a59752 100644 --- a/ebclfsa/MODULE.bazel +++ b/ebclfsa/MODULE.bazel @@ -35,10 +35,10 @@ gcc.toolchain( ) use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc") -bazel_dep(name = "score_docs_as_code", version = "2.0.1") # part of 0.5.0-alpha release +bazel_dep(name = "score_docs_as_code", version = "2.2.0") # part of 0.5.0-beta release single_version_override( module_name = "score_docs_as_code", - version = "2.0.1", + version = "2.2.0", ) bazel_dep(name = "score_baselibs") @@ -51,8 +51,8 @@ single_version_override( ], ) bazel_dep(name = "score_communication", version = "0.1.2") # part of 0.5.0-beta release -bazel_dep(name = "score_scrample", version = "0.1.0") # part of 0.5.0-alpha release -bazel_dep(name = "score_persistency", version = "0.2.1") # part of 0.5.0-alpha release +bazel_dep(name = "score_scrample", version = "0.1.0") # part of 0.5.0-beta release +bazel_dep(name = "score_persistency", version = "0.2.2") # part of 0.5.0-beta release # git_override is not forwarded by bazel_dep, so we need to redefine it here git_override( From d5450be75ba2817303122a33f74019899302e71b Mon Sep 17 00:00:00 2001 From: Oliver Pajonk Date: Mon, 22 Dec 2025 15:12:55 +0100 Subject: [PATCH 07/55] Update README with OS Integration Details, exclude from main Bazel project (#66) * Update README with OS Integration Details, exclude them from main Bazel project Since the OS integrations are currently realized as separate Bazel projects, and contain individual documentation, this should be reflected in the main README. Also, the sub-directories should be excluded explicitly from the top-level Bazel project. For this, the https://bazel.build/run/bazelrc#bazelignore is updated. # Conflicts: # README.md * fix: outdated module name --- .bazelignore | 2 ++ README.md | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.bazelignore b/.bazelignore index 1dc4fc58170..ee0205ffc21 100644 --- a/.bazelignore +++ b/.bazelignore @@ -1 +1,3 @@ +autosd +ebclfsa qnx_qemu diff --git a/README.md b/README.md index 2946b1237e6..e2f67be8f3d 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ bazel build --config bl-x86_64-linux @score_baselibs//score/... --verbose_failur ### Communication ```bash -bazel build --config bl-x86_64-linux @communication//score/mw/com:com --verbose_failures +bazel build --config bl-x86_64-linux @score_communication//score/mw/com:com --verbose_failures ``` ### Persistency @@ -57,6 +57,16 @@ Execute `bazel query //feature_showcase/...` to obtain list of targets that You bazel build --config bl-x86_64-linux @score_orchestrator//src/... --verbose_failures ``` +## Operating system integrations + +> [!NOTE] +> Integrations of Eclipse S-CORE into reference operating systems are currently realized as **independent Bazel projects**. +> Please refer to the README documents in the respective sub-directories for details about the specific integration. + +* [QNX](./qnx_qemu/README.md) +* [Red Hat AutoSD](./autosd/build/README.md) +* [Elektrobit corbos Linux for Safety Applications](./ebclfsa/README.md) + ## Workspace support You can obtain a complete S-CORE workspace, i.e. a git checkout of all modules from `known_good.json`, on the specific branches / commits, integrated into one Bazel build. From 4c280a72c36c5cd5864e1e5bf0d4076cd3f9ea59 Mon Sep 17 00:00:00 2001 From: "Frank Scholter Peres(MBTI)" <145544737+FScholPer@users.noreply.github.com> Date: Tue, 23 Dec 2025 09:29:08 +0100 Subject: [PATCH 08/55] added release and push master trigger and missing workflow_dispatch (#71) --- .github/workflows/build_and_test_autosd.yml | 6 ++++++ .github/workflows/build_and_test_ebclfsa.yml | 5 +++++ .github/workflows/codeql-multiple-repo-scan.yml | 6 ++++++ .github/workflows/test_integration.yml | 7 +++++-- .github/workflows/unit_tests.yml | 5 +++-- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index b8039461d99..656e549449a 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -17,8 +17,14 @@ on: pull_request: paths: - 'autosd/**' + push: + branches: + - main + release: + types: [created] workflow_dispatch: + jobs: build: name: build-and-test-autosd diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index 89521dc5aa4..b7028cd18bb 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -17,6 +17,11 @@ on: pull_request: paths: - 'ebclfsa/**' + push: + branches: + - main + release: + types: [created] workflow_dispatch: jobs: diff --git a/.github/workflows/codeql-multiple-repo-scan.yml b/.github/workflows/codeql-multiple-repo-scan.yml index aaca77bfa2c..47fa3a5cd2b 100644 --- a/.github/workflows/codeql-multiple-repo-scan.yml +++ b/.github/workflows/codeql-multiple-repo-scan.yml @@ -18,6 +18,12 @@ on: types: [opened, reopened, synchronize] merge_group: types: [checks_requested] + push: + branches: + - main + release: + types: [created] + workflow_dispatch: permissions: contents: write diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index 20d2c31bcb5..57897e086c7 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -18,8 +18,11 @@ name: build latest mains on: workflow_dispatch: pull_request: - schedule: - - cron: '30 2 * * *' # Every night at 02:30 UTC on main branch + release: + types: [created] + push: + branches: + - main jobs: integration_test: runs-on: ubuntu-latest diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 8f881829db4..4675e727e64 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -17,8 +17,9 @@ on: pull_request: release: types: [created] - schedule: - - cron: '30 3 * * *' # Every night at 03:30 UTC on main branch + push: + branches: + - main jobs: integration_test: runs-on: ubuntu-latest From 2b5601cda83dca6ec1c658d8c91cdbefe701c4a3 Mon Sep 17 00:00:00 2001 From: igorostrowskiq Date: Thu, 8 Jan 2026 13:05:15 +0100 Subject: [PATCH 09/55] Add test for feat_req__persistency__multiple_kvs (#73) --- .../python_test_cases/BUILD | 2 +- .../python_test_cases/fit_scenario.py | 13 ++- .../python_test_cases/test_properties.py | 10 ++ .../test_orchestartion_with_persistency.py | 17 +-- .../persistency/test_multiple_kvs_per_app.py | 107 ++++++++++++++++++ .../src/internals/kyron/mod.rs | 13 +++ .../internals/{ => kyron}/runtime_helper.rs | 0 .../rust_test_scenarios/src/internals/mod.rs | 3 +- .../src/internals/persistency/kvs_instance.rs | 29 +++++ .../internals/persistency/kvs_parameters.rs | 71 ++++++++++++ .../src/internals/persistency/mod.rs | 2 + .../src/scenarios/basic/mod.rs | 9 +- .../basic/orchestration_with_persistency.rs | 2 +- .../rust_test_scenarios/src/scenarios/mod.rs | 4 +- .../src/scenarios/persistency/mod.rs | 23 ++++ .../persistency/multiple_kvs_per_app.rs | 82 ++++++++++++++ 16 files changed, 363 insertions(+), 24 deletions(-) create mode 100644 feature_integration_tests/python_test_cases/test_properties.py create mode 100644 feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py create mode 100644 feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs rename feature_integration_tests/rust_test_scenarios/src/internals/{ => kyron}/runtime_helper.rs (100%) create mode 100644 feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs create mode 100644 feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs create mode 100644 feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs create mode 100644 feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs create mode 100644 feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs diff --git a/feature_integration_tests/python_test_cases/BUILD b/feature_integration_tests/python_test_cases/BUILD index 3aa8031e9ba..8f9d2d31977 100644 --- a/feature_integration_tests/python_test_cases/BUILD +++ b/feature_integration_tests/python_test_cases/BUILD @@ -28,7 +28,7 @@ score_virtualenv( # Tests targets score_py_pytest( name = "fit", - srcs = glob(["tests/**/*.py"]) + ["conftest.py", "fit_scenario.py"], + srcs = glob(["tests/**/*.py"]) + ["conftest.py", "fit_scenario.py", "test_properties.py"], args = [ "--traces=all", "--rust-target-path=$(rootpath //feature_integration_tests/rust_test_scenarios)", diff --git a/feature_integration_tests/python_test_cases/fit_scenario.py b/feature_integration_tests/python_test_cases/fit_scenario.py index f76406d6142..6038f37b473 100644 --- a/feature_integration_tests/python_test_cases/fit_scenario.py +++ b/feature_integration_tests/python_test_cases/fit_scenario.py @@ -12,6 +12,17 @@ ) +class ResultCode: + """ + Test scenario exit codes. + """ + + SUCCESS = 0 + PANIC = 101 + SIGKILL = -9 + SIGABRT = -6 + + def temp_dir_common( tmp_path_factory: pytest.TempPathFactory, base_name: str, *args: str ) -> Generator[Path, None, None]: @@ -63,7 +74,7 @@ def results( **kwargs, ) -> ScenarioResult: result = self._run_command(command, execution_timeout, args, kwargs) - success = result.return_code == 0 and not result.hang + success = result.return_code == ResultCode.SUCCESS and not result.hang if self.expect_command_failure() and success: raise RuntimeError(f"Command execution succeeded unexpectedly: {result=}") if not self.expect_command_failure() and not success: diff --git a/feature_integration_tests/python_test_cases/test_properties.py b/feature_integration_tests/python_test_cases/test_properties.py new file mode 100644 index 00000000000..2f30b7b7a11 --- /dev/null +++ b/feature_integration_tests/python_test_cases/test_properties.py @@ -0,0 +1,10 @@ +try: + from attribute_plugin import add_test_properties # type: ignore[import-untyped] +except ImportError: + # Define no-op decorator if attribute_plugin is not available (outside bazel) + # Keeps IDE debugging functionality + def add_test_properties(*args, **kwargs): + def decorator(func): + return func # No-op decorator + + return decorator diff --git a/feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py b/feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py index 182f9e3eec0..8659bb90e32 100644 --- a/feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py +++ b/feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py @@ -1,22 +1,11 @@ import json +from collections.abc import Generator from pathlib import Path -from typing import Any, Generator +from typing import Any import pytest - -try: - from attribute_plugin import add_test_properties # type: ignore[import-untyped] -except ImportError: - # Define no-op decorator if attribute_plugin is not available (outside bazel) - # Keeps IDE debugging functionality - def add_test_properties(*args, **kwargs): - def decorator(func): - return func # No-op decorator - - return decorator - - from fit_scenario import FitScenario, temp_dir_common +from test_properties import add_test_properties from testing_utils import LogContainer diff --git a/feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py b/feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py new file mode 100644 index 00000000000..a15b48085ad --- /dev/null +++ b/feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py @@ -0,0 +1,107 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +import json +from pathlib import Path +from typing import Any, Generator + +import pytest +from fit_scenario import FitScenario, temp_dir_common +from test_properties import add_test_properties +from testing_utils import LogContainer + + +@add_test_properties( + partially_verifies=["feat_req__persistency__multiple_kvs"], + test_type="requirements-based", + derivation_technique="requirements-analysis", +) +class TestMultipleInstanceIds(FitScenario): + """ + Verifies that multiple KVS instances with different IDs store and retrieve independent values without interference. + """ + + @pytest.fixture(scope="class") + def scenario_name(self) -> str: + return "persistency.multiple_kvs_per_app" + + @pytest.fixture(scope="class") + def kvs_key(self) -> str: + return "number" + + @pytest.fixture(scope="class") + def kvs_value_1(self) -> float: + return 111.1 + + @pytest.fixture(scope="class") + def kvs_value_2(self) -> float: + return 222.2 + + @pytest.fixture(scope="class") + def temp_dir( + self, + tmp_path_factory: pytest.TempPathFactory, + ) -> Generator[Path, None, None]: + yield from temp_dir_common(tmp_path_factory, self.__class__.__name__) + + @pytest.fixture(scope="class") + def test_config( + self, + temp_dir: Path, + kvs_key: str, + kvs_value_1: float, + kvs_value_2: float, + ) -> dict[str, Any]: + return { + "kvs_parameters_1": { + "kvs_parameters": {"instance_id": 1, "dir": str(temp_dir)}, + }, + "kvs_parameters_2": { + "kvs_parameters": {"instance_id": 2, "dir": str(temp_dir)}, + }, + "test": {"key": kvs_key, "value_1": kvs_value_1, "value_2": kvs_value_2}, + } + + def test_logged_execution( + self, + kvs_key: str, + kvs_value_1: float, + kvs_value_2: float, + logs_info_level: LogContainer, + ): + log1 = logs_info_level.find_log("instance", value="InstanceId(1)") + assert log1 is not None + assert log1.key == kvs_key + assert log1.value == kvs_value_1 + + log2 = logs_info_level.find_log("instance", value="InstanceId(2)") + assert log2 is not None + assert log2.key == kvs_key + assert log2.value == kvs_value_2 + + def test_kvs_write_results( + self, + temp_dir: Path, + kvs_key: str, + kvs_value_1: float, + kvs_value_2: float, + ): + # Verify KVS Instance(1) + kvs1_file = temp_dir / "kvs_1_0.json" + data1 = json.loads(kvs1_file.read_text()) + assert data1["v"][kvs_key]["v"] == kvs_value_1 + + # Verify KVS Instance(2) + kvs2_file = temp_dir / "kvs_2_0.json" + data2 = json.loads(kvs2_file.read_text()) + assert data2["v"][kvs_key]["v"] == kvs_value_2 diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs b/feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs new file mode 100644 index 00000000000..2938643029f --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs @@ -0,0 +1,13 @@ +// +// Copyright (c) 2025 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// +pub mod runtime_helper; diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/runtime_helper.rs b/feature_integration_tests/rust_test_scenarios/src/internals/kyron/runtime_helper.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/runtime_helper.rs rename to feature_integration_tests/rust_test_scenarios/src/internals/kyron/runtime_helper.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/mod.rs b/feature_integration_tests/rust_test_scenarios/src/internals/mod.rs index 2938643029f..117edcc98ef 100644 --- a/feature_integration_tests/rust_test_scenarios/src/internals/mod.rs +++ b/feature_integration_tests/rust_test_scenarios/src/internals/mod.rs @@ -10,4 +10,5 @@ // // SPDX-License-Identifier: Apache-2.0 // -pub mod runtime_helper; +pub mod kyron; +pub mod persistency; diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs new file mode 100644 index 00000000000..9771632a8fd --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs @@ -0,0 +1,29 @@ +//! KVS instance test helpers. + +use crate::internals::persistency::kvs_parameters::KvsParameters; +use rust_kvs::prelude::{ErrorCode, Kvs, KvsBuilder}; + +/// Create KVS instance based on provided parameters. +pub fn kvs_instance(kvs_parameters: KvsParameters) -> Result { + let mut builder = KvsBuilder::new(kvs_parameters.instance_id); + + if let Some(flag) = kvs_parameters.defaults { + builder = builder.defaults(flag); + } + + if let Some(flag) = kvs_parameters.kvs_load { + builder = builder.kvs_load(flag); + } + + if let Some(dir) = kvs_parameters.dir { + builder = builder.dir(dir.to_string_lossy().to_string()); + } + + if let Some(snapshot_max_count) = kvs_parameters.snapshot_max_count { + builder = builder.snapshot_max_count(snapshot_max_count); + } + + let kvs: Kvs = builder.build()?; + + Ok(kvs) +} diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs new file mode 100644 index 00000000000..cbdefeded3b --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs @@ -0,0 +1,71 @@ +//! KVS parameters test helpers. + +use rust_kvs::prelude::{InstanceId, KvsDefaults, KvsLoad}; +use serde::{de, Deserialize, Deserializer}; +use std::path::PathBuf; + +/// KVS parameters in serde-compatible format. +#[derive(Deserialize, Debug, Clone)] +#[serde(deny_unknown_fields)] +pub struct KvsParameters { + #[serde(deserialize_with = "deserialize_instance_id")] + pub instance_id: InstanceId, + #[serde(default, deserialize_with = "deserialize_defaults")] + pub defaults: Option, + #[serde(default, deserialize_with = "deserialize_kvs_load")] + pub kvs_load: Option, + pub dir: Option, + pub snapshot_max_count: Option, +} + +impl KvsParameters { + /// Parse `KvsParameters` from `Value`. + /// `Value` is expected to contain `kvs_parameters` field. + pub fn from_value(value: &serde_json::Value) -> Result { + serde_json::from_value(value["kvs_parameters"].clone()) + } +} + +fn deserialize_instance_id<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + let value = usize::deserialize(deserializer)?; + Ok(InstanceId(value)) +} + +fn deserialize_defaults<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + let value_opt: Option = Option::deserialize(deserializer)?; + if let Some(value_str) = value_opt { + let value = match value_str.as_str() { + "ignored" => KvsDefaults::Ignored, + "optional" => KvsDefaults::Optional, + "required" => KvsDefaults::Required, + _ => return Err(de::Error::custom("Invalid \"defaults\" mode")), + }; + return Ok(Some(value)); + } + + Ok(None) +} + +fn deserialize_kvs_load<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + let value_opt: Option = Option::deserialize(deserializer)?; + if let Some(value_str) = value_opt { + let value = match value_str.as_str() { + "ignored" => KvsLoad::Ignored, + "optional" => KvsLoad::Optional, + "required" => KvsLoad::Required, + _ => return Err(de::Error::custom("Invalid \"kvs_load\" mode")), + }; + return Ok(Some(value)); + } + + Ok(None) +} diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs new file mode 100644 index 00000000000..db406453147 --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs @@ -0,0 +1,2 @@ +pub mod kvs_instance; +pub mod kvs_parameters; diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs b/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs index 62667b93a68..cb871dd13a6 100644 --- a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs +++ b/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs @@ -9,16 +9,15 @@ // // SPDX-License-Identifier: Apache-2.0 // -use test_scenarios_rust::scenario::{ScenarioGroup, ScenarioGroupImpl}; - mod orchestration_with_persistency; +use orchestration_with_persistency::OrchestrationWithPersistency; +use test_scenarios_rust::scenario::{ScenarioGroup, ScenarioGroupImpl}; + pub fn basic_scenario_group() -> Box { Box::new(ScenarioGroupImpl::new( "basic", - vec![Box::new( - orchestration_with_persistency::OrchestrationWithPersistency, - )], + vec![Box::new(OrchestrationWithPersistency)], vec![], )) } diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs b/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs index a9a7641a77c..ceab4b4b153 100644 --- a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs +++ b/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs @@ -10,7 +10,7 @@ // // SPDX-License-Identifier: Apache-2.0 // -use crate::internals::runtime_helper::Runtime; +use crate::internals::kyron::runtime_helper::Runtime; use kyron_foundation::containers::Vector; use kyron_foundation::prelude::CommonErrors; use orchestration::prelude::*; diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs b/feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs index 2a381791faa..8c7f2242877 100644 --- a/feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs +++ b/feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs @@ -13,13 +13,15 @@ use test_scenarios_rust::scenario::{ScenarioGroup, ScenarioGroupImpl}; mod basic; +mod persistency; use basic::basic_scenario_group; +use persistency::persistency_group; pub fn root_scenario_group() -> Box { Box::new(ScenarioGroupImpl::new( "root", vec![], - vec![basic_scenario_group()], + vec![basic_scenario_group(), persistency_group()], )) } diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs b/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs new file mode 100644 index 00000000000..ca8fec57928 --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs @@ -0,0 +1,23 @@ +// Copyright (c) 2025 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// +mod multiple_kvs_per_app; + +use multiple_kvs_per_app::MultipleKvsPerApp; +use test_scenarios_rust::scenario::{ScenarioGroup, ScenarioGroupImpl}; + +pub fn persistency_group() -> Box { + Box::new(ScenarioGroupImpl::new( + "persistency", + vec![Box::new(MultipleKvsPerApp)], + vec![], + )) +} diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs b/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs new file mode 100644 index 00000000000..18ff2767447 --- /dev/null +++ b/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs @@ -0,0 +1,82 @@ +use crate::internals::persistency::{kvs_instance::kvs_instance, kvs_parameters::KvsParameters}; +use rust_kvs::prelude::KvsApi; +use serde::Deserialize; +use serde_json::Value; +use test_scenarios_rust::scenario::Scenario; +use tracing::{field, info}; + +#[derive(Deserialize, Debug)] +pub struct TestInput { + pub key: String, + pub value_1: f64, + pub value_2: f64, +} + +impl TestInput { + /// Parse `TestInput` from JSON string. + /// JSON is expected to contain `test` field. + pub fn from_json(json_str: &str) -> Result { + let v: Value = serde_json::from_str(json_str)?; + serde_json::from_value(v["test"].clone()) + } +} + +pub struct MultipleKvsPerApp; + +impl Scenario for MultipleKvsPerApp { + fn name(&self) -> &str { + "multiple_kvs_per_app" + } + + fn run(&self, input: &str) -> Result<(), String> { + // Parameters. + let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); + let params1 = + KvsParameters::from_value(&v["kvs_parameters_1"]).expect("Failed to parse parameters"); + let params2 = + KvsParameters::from_value(&v["kvs_parameters_2"]).expect("Failed to parse parameters"); + let logic = TestInput::from_json(input).expect("Failed to parse input string"); + { + // Create first KVS instance. + let kvs1 = kvs_instance(params1.clone()).expect("Failed to create KVS instance"); + + // Create second KVS instance. + let kvs2 = kvs_instance(params2.clone()).expect("Failed to create KVS instance"); + + // Set values to both KVS instances. + kvs1.set_value(&logic.key, logic.value_1) + .expect("Failed to set kvs1 value"); + kvs2.set_value(&logic.key, logic.value_2) + .expect("Failed to set kvs2 value"); + + // Flush KVS. + kvs1.flush().expect("Failed to flush first instance"); + kvs2.flush().expect("Failed to flush second instance"); + } + + { + // Second KVS run. + let kvs1 = kvs_instance(params1).expect("Failed to create KVS1 instance"); + let kvs2 = kvs_instance(params2).expect("Failed to create KVS2 instance"); + + let value1 = kvs1 + .get_value_as::(&logic.key) + .expect("Failed to read kvs1 value"); + info!( + instance = field::debug(kvs1.parameters().instance_id), + key = logic.key, + value = value1 + ); + let value2 = kvs2 + .get_value_as::(&logic.key) + .expect("Failed to read kvs2 value"); + info!( + instance = field::debug(kvs2.parameters().instance_id), + key = logic.key, + value = value2 + ); + } + + Ok(()) + } +} From 16190e26ec4effd6093e76533547675347696121 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Mon, 12 Jan 2026 14:39:36 +0100 Subject: [PATCH 10/55] fit: refactor (#74) - simplify directories structure - cleanup unused hooks - clean configs --- .../workflows/build_and_test_on_every_pr.yml | 2 +- MODULE.bazel | 2 +- feature_integration_tests/README.md | 19 ++++++++++--------- .../python_test_cases/pytest.ini | 9 --------- .../{python_test_cases => test_cases}/BUILD | 4 ++-- .../conftest.py | 17 ----------------- .../fit_scenario.py | 0 .../test_cases/pytest.ini | 3 +++ .../requirements.txt | 0 .../requirements.txt.lock | 0 .../test_properties.py | 0 .../test_orchestration_with_persistency.py} | 0 .../persistency/test_multiple_kvs_per_app.py | 0 .../rust}/BUILD | 4 ++-- .../rust}/src/internals/kyron/mod.rs | 0 .../src/internals/kyron/runtime_helper.rs | 0 .../rust}/src/internals/mod.rs | 0 .../src/internals/persistency/kvs_instance.rs | 0 .../internals/persistency/kvs_parameters.rs | 0 .../rust}/src/internals/persistency/mod.rs | 0 .../rust}/src/main.rs | 0 .../rust}/src/scenarios/basic/mod.rs | 0 .../basic/orchestration_with_persistency.rs | 0 .../rust}/src/scenarios/mod.rs | 0 .../rust}/src/scenarios/persistency/mod.rs | 0 .../persistency/multiple_kvs_per_app.rs | 0 .../rust/orchestration_persistency/main.rs | 3 +-- 27 files changed, 20 insertions(+), 43 deletions(-) delete mode 100644 feature_integration_tests/python_test_cases/pytest.ini rename feature_integration_tests/{python_test_cases => test_cases}/BUILD (91%) rename feature_integration_tests/{python_test_cases => test_cases}/conftest.py (79%) rename feature_integration_tests/{python_test_cases => test_cases}/fit_scenario.py (100%) create mode 100644 feature_integration_tests/test_cases/pytest.ini rename feature_integration_tests/{python_test_cases => test_cases}/requirements.txt (100%) rename feature_integration_tests/{python_test_cases => test_cases}/requirements.txt.lock (100%) rename feature_integration_tests/{python_test_cases => test_cases}/test_properties.py (100%) rename feature_integration_tests/{python_test_cases/tests/basic/test_orchestartion_with_persistency.py => test_cases/tests/basic/test_orchestration_with_persistency.py} (100%) rename feature_integration_tests/{python_test_cases => test_cases}/tests/persistency/test_multiple_kvs_per_app.py (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/BUILD (94%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/kyron/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/kyron/runtime_helper.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/persistency/kvs_instance.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/persistency/kvs_parameters.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/internals/persistency/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/main.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/scenarios/basic/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/scenarios/basic/orchestration_with_persistency.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/scenarios/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/scenarios/persistency/mod.rs (100%) rename feature_integration_tests/{rust_test_scenarios => test_scenarios/rust}/src/scenarios/persistency/multiple_kvs_per_app.rs (100%) diff --git a/.github/workflows/build_and_test_on_every_pr.yml b/.github/workflows/build_and_test_on_every_pr.yml index 05e861166e5..b0fafafe6ef 100644 --- a/.github/workflows/build_and_test_on_every_pr.yml +++ b/.github/workflows/build_and_test_on_every_pr.yml @@ -53,4 +53,4 @@ jobs: done < ci/showcase_targets_run.txt - name: Feature Integration Tests run: | - bazel test --config bl-x86_64-linux //feature_integration_tests/python_test_cases:fit + bazel test --config bl-x86_64-linux //feature_integration_tests/test_cases:fit diff --git a/MODULE.bazel b/MODULE.bazel index 3db57550c8e..2a6fdba698d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -37,7 +37,7 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_depen pip.parse( hub_name = "pip_score_venv_test", python_version = PYTHON_VERSION, - requirements_lock = "//feature_integration_tests/python_test_cases:requirements.txt.lock", + requirements_lock = "//feature_integration_tests/test_cases:requirements.txt.lock", ) use_repo(pip, "pip_score_venv_test") diff --git a/feature_integration_tests/README.md b/feature_integration_tests/README.md index 902e6d11fb1..2cb213a4261 100644 --- a/feature_integration_tests/README.md +++ b/feature_integration_tests/README.md @@ -4,15 +4,16 @@ This directory contains Feature Integration Tests for the S-CORE project. It inc ## Structure -- `python_test_cases/` — Python-based integration test cases +- `test_cases/` — Python-based integration test cases - `conftest.py` — Pytest configuration and fixtures - `fit_scenario.py` — Base scenario class - `requirements.txt` — Python dependencies - `BUILD` — Bazel build and test definitions - `tests/` — Test cases (e.g., orchestration with persistency) -- `rust_test_scenarios/` — Rust-based integration test scenarios - - `src/` — Rust source code for test scenarios - - `BUILD` — Bazel build definitions +- `test_scenarios/` — Location of test scenarios + - `rust/` — Rust-based integration test scenarios + - `src/` — Rust source code for test scenarios + - `BUILD` — Bazel build definitions ## Running Tests @@ -21,19 +22,19 @@ This directory contains Feature Integration Tests for the S-CORE project. It inc Python tests are managed with Bazel and Pytest. To run the main test target: ```sh -bazel test //feature_integration_tests/python_test_cases:fit +bazel test //feature_integration_tests/test_cases:fit ``` ### Rust Test Scenarios -Rust test scenarios are defined in `rust_test_scenarios/src/scenarios`. Build and run them using Bazel: +Rust test scenarios are defined in `test_scenarios/rust/src/scenarios`. Build and run them using Bazel: ```sh -bazel build //feature_integration_tests/rust_test_scenarios +bazel build //feature_integration_tests/test_scenarios/rust:rust_test_scenarios ``` ```sh -bazel run //feature_integration_tests/rust_test_scenarios -- --list-scenarios +bazel run //feature_integration_tests/test_scenarios/rust:rust_test_scenarios -- --list-scenarios ``` ## Updating Python Requirements @@ -41,5 +42,5 @@ bazel run //feature_integration_tests/rust_test_scenarios -- --list-scenarios To update Python dependencies: ```sh -bazel run //feature_integration_tests/python_test_cases:requirements.update +bazel run //feature_integration_tests/test_cases:requirements.update ``` diff --git a/feature_integration_tests/python_test_cases/pytest.ini b/feature_integration_tests/python_test_cases/pytest.ini deleted file mode 100644 index 79d506db703..00000000000 --- a/feature_integration_tests/python_test_cases/pytest.ini +++ /dev/null @@ -1,9 +0,0 @@ -[pytest] -addopts = -v -testpaths = tests -markers = - PartiallyVerifies - FullyVerifies - Description - TestType - DerivationTechnique diff --git a/feature_integration_tests/python_test_cases/BUILD b/feature_integration_tests/test_cases/BUILD similarity index 91% rename from feature_integration_tests/python_test_cases/BUILD rename to feature_integration_tests/test_cases/BUILD index 8f9d2d31977..527187c4a87 100644 --- a/feature_integration_tests/python_test_cases/BUILD +++ b/feature_integration_tests/test_cases/BUILD @@ -31,11 +31,11 @@ score_py_pytest( srcs = glob(["tests/**/*.py"]) + ["conftest.py", "fit_scenario.py", "test_properties.py"], args = [ "--traces=all", - "--rust-target-path=$(rootpath //feature_integration_tests/rust_test_scenarios)", + "--rust-target-path=$(rootpath //feature_integration_tests/test_scenarios/rust:rust_test_scenarios)", ], data = [ ":python_tc_venv", - "//feature_integration_tests/rust_test_scenarios", + "//feature_integration_tests/test_scenarios/rust:rust_test_scenarios", ], env = { "RUST_BACKTRACE": "1", diff --git a/feature_integration_tests/python_test_cases/conftest.py b/feature_integration_tests/test_cases/conftest.py similarity index 79% rename from feature_integration_tests/python_test_cases/conftest.py rename to feature_integration_tests/test_cases/conftest.py index b07758d82fe..001b14a2b3c 100644 --- a/feature_integration_tests/python_test_cases/conftest.py +++ b/feature_integration_tests/test_cases/conftest.py @@ -64,20 +64,3 @@ def pytest_sessionstart(session): except Exception as e: pytest.exit(str(e), returncode=1) - - -def pytest_collection_modifyitems(items: list[pytest.Function]): - markers_to_process = ( - "PartiallyVerifies", - "FullyVerifies", - "Description", - "TestType", - "DerivationTechnique", - ) - for item in items: - # Add custom markers info to XML report - for marker in item.iter_markers(): - if marker.name not in markers_to_process: - continue - - item.user_properties.append((marker.name, marker.args[0])) diff --git a/feature_integration_tests/python_test_cases/fit_scenario.py b/feature_integration_tests/test_cases/fit_scenario.py similarity index 100% rename from feature_integration_tests/python_test_cases/fit_scenario.py rename to feature_integration_tests/test_cases/fit_scenario.py diff --git a/feature_integration_tests/test_cases/pytest.ini b/feature_integration_tests/test_cases/pytest.ini new file mode 100644 index 00000000000..d4b25fd2f87 --- /dev/null +++ b/feature_integration_tests/test_cases/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +addopts = -v +testpaths = tests diff --git a/feature_integration_tests/python_test_cases/requirements.txt b/feature_integration_tests/test_cases/requirements.txt similarity index 100% rename from feature_integration_tests/python_test_cases/requirements.txt rename to feature_integration_tests/test_cases/requirements.txt diff --git a/feature_integration_tests/python_test_cases/requirements.txt.lock b/feature_integration_tests/test_cases/requirements.txt.lock similarity index 100% rename from feature_integration_tests/python_test_cases/requirements.txt.lock rename to feature_integration_tests/test_cases/requirements.txt.lock diff --git a/feature_integration_tests/python_test_cases/test_properties.py b/feature_integration_tests/test_cases/test_properties.py similarity index 100% rename from feature_integration_tests/python_test_cases/test_properties.py rename to feature_integration_tests/test_cases/test_properties.py diff --git a/feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py b/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py similarity index 100% rename from feature_integration_tests/python_test_cases/tests/basic/test_orchestartion_with_persistency.py rename to feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py diff --git a/feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py b/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py similarity index 100% rename from feature_integration_tests/python_test_cases/tests/persistency/test_multiple_kvs_per_app.py rename to feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py diff --git a/feature_integration_tests/rust_test_scenarios/BUILD b/feature_integration_tests/test_scenarios/rust/BUILD similarity index 94% rename from feature_integration_tests/rust_test_scenarios/BUILD rename to feature_integration_tests/test_scenarios/rust/BUILD index 41f582aed7d..29e476e5dbc 100644 --- a/feature_integration_tests/rust_test_scenarios/BUILD +++ b/feature_integration_tests/test_scenarios/rust/BUILD @@ -16,7 +16,7 @@ load("@rules_rust//rust:defs.bzl", "rust_binary") rust_binary( name = "rust_test_scenarios", srcs = glob(["src/**/*.rs"]), - visibility = ["//feature_integration_tests/python_test_cases:__pkg__"], + visibility = ["//feature_integration_tests/test_cases:__pkg__"], tags = [ "manual", ], @@ -31,4 +31,4 @@ rust_binary( "@score_crates//:serde", "@score_crates//:serde_json", ], -) \ No newline at end of file +) diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/kyron/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/kyron/runtime_helper.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/kyron/runtime_helper.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_instance.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/persistency/kvs_parameters.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/internals/persistency/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/main.rs b/feature_integration_tests/test_scenarios/rust/src/main.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/main.rs rename to feature_integration_tests/test_scenarios/rust/src/main.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/scenarios/basic/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/scenarios/basic/orchestration_with_persistency.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/scenarios/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs diff --git a/feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs similarity index 100% rename from feature_integration_tests/rust_test_scenarios/src/scenarios/persistency/multiple_kvs_per_app.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs diff --git a/feature_showcase/rust/orchestration_persistency/main.rs b/feature_showcase/rust/orchestration_persistency/main.rs index 55a98fb23ca..d77dee6d6ea 100644 --- a/feature_showcase/rust/orchestration_persistency/main.rs +++ b/feature_showcase/rust/orchestration_persistency/main.rs @@ -138,11 +138,10 @@ fn detect_object_component_design() -> Result { fn main() { // Setup any logging framework you want to use. - let logger = LogAndTraceBuilder::new() + let _logger = LogAndTraceBuilder::new() .global_log_level(logging_tracing::Level::INFO) .enable_logging(true) .build(); - // logger.init_log_trace(); // Create runtime let (builder, _engine_id) = kyron::runtime::RuntimeBuilder::new().with_engine( From 9066b4aa0d524804411404135ce23d6fe3ea4d92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Gr=C3=A4per?= <160226396+kgraeper@users.noreply.github.com> Date: Fri, 16 Jan 2026 17:29:05 +0100 Subject: [PATCH 11/55] feat: reusable workflows for module integration testing (#75) --- .../workflows/reusable_integration-build.yml | 152 ++++++++++ .github/workflows/reusable_smoke-test.yml | 206 ++++++++++++++ .github/workflows/test_integration.yml | 85 +----- scripts/integration_test.sh | 206 ++++++++++++-- tools/get_module_info.py | 49 ++-- tools/known_good_to_workspace_metadata.py | 23 +- tools/models/__init__.py | 5 + tools/models/module.py | 110 ++++++++ tools/override_known_good_repo.py | 265 ++++++++++++++++++ tools/update_module_from_known_good.py | 97 ++++--- tools/update_module_latest.py | 40 +-- 11 files changed, 1049 insertions(+), 189 deletions(-) create mode 100644 .github/workflows/reusable_integration-build.yml create mode 100644 .github/workflows/reusable_smoke-test.yml create mode 100644 tools/models/__init__.py create mode 100644 tools/models/module.py create mode 100755 tools/override_known_good_repo.py diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml new file mode 100644 index 00000000000..0b25f1c92d4 --- /dev/null +++ b/.github/workflows/reusable_integration-build.yml @@ -0,0 +1,152 @@ +# Module Integration Build Workflow +# +# Summary: +# Builds all modules referenced in known_good.json with Bazel and runs the +# integration test script to validate module interoperability. +# +# What it does: +# - Checks out the reference integration repository +# - Updates score_modules.MODULE.bazel from the provided known_good.json +# - Builds all referenced modules (via scripts/integration_test.sh and Bazel) +# - Runs integration tests +# - Uploads logs from _logs/ as artifact: bazel-build-logs-${{ inputs.config }} +# +# Inputs: +# - known_good (string, required): JSON content used to pin module SHAs. +# - config (string, optional, default: bl-x86_64-linux): Bazel config passed as +# CONFIG to scripts/integration_test.sh. +# - repo_runner_labels (string, optional): Runner label(s). Accepts either a +# single label string (e.g., ubuntu-latest) or a JSON string representing a +# label or an array of labels (e.g., "\"ubuntu-latest\"" or +# "[\"self-hosted\",\"linux\",\"x64\"]"). +# - target_branch (string, optional, default: main): Ref/branch to checkout. +# +# Repository Variables: +# - reference_integration_repo (optional): Repository to checkout (owner/repo). +# Default: eclipse-score/reference_integration +# +# Secrets: +# - REPO_READ_TOKEN (secret, optional): Token for private module access; falls +# back to github.token when not provided. +# +# Runner selection: +# - Priority: `inputs.repo_runner_labels` > 'ubuntu-latest'. +# - `repo_runner_labels` can be provided as a single label string or as JSON +# (string or array). When JSON is used, it is parsed via fromJSON(). +# +# Usage: +# This workflow is reusable and triggered via workflow_call from other workflows. +# Example: +# jobs: +# integration: +# uses: eclipse-score/reference_integration/.github/workflows/module-integration-build.yml@main +# with: +# known_good: | +# { "modules": [] } +# config: bl-x86_64-linux +# repo_runner_labels: 'ubuntu-latest' +# secrets: +# REPO_READ_TOKEN: ${{ secrets.REPO_READ_TOKEN }} +# +name: Module Integration Build + +on: + workflow_call: + secrets: + REPO_READ_TOKEN: + description: 'GitHub token with read access to the score modules. Defaults to github.token' + required: false + inputs: + known_good: + description: 'Content of the known_good.json file to use for the integration test.' + required: true + type: string + config: + description: 'Optional configuration for the integration test.' + required: false + type: string + default: 'bl-x86_64-linux' + repo_runner_labels: + description: 'Runner label(s) for the job; single label or JSON string/array.' + required: false + type: string + target_branch: + description: 'Reference Integration repository ref to checkout.' + required: false + type: string + default: 'main' + +env: + REFERENCE_INTEGRATION_REPO: ${{ vars.reference_integration_repo != '' && vars.reference_integration_repo || 'eclipse-score/reference_integration' }} + +jobs: + integration-test: + name: Integration Test + runs-on: ${{ inputs.repo_runner_labels != '' && (startsWith(inputs.repo_runner_labels, '[') && fromJSON(inputs.repo_runner_labels) || inputs.repo_runner_labels) || 'ubuntu-latest' }} + steps: + - name: Show disk space before build + run: | + echo 'Disk space before build:' + df -h + - name: Removing unneeded software + run: | + echo "Removing unneeded software... " + if [ -d /usr/share/dotnet ]; then echo "Removing dotnet..."; start=$(date +%s); sudo rm -rf /usr/share/dotnet; end=$(date +%s); echo "Duration: $((end-start))s"; fi + #if [ -d /usr/local/lib/android ]; then echo "Removing android..."; start=$(date +%s); sudo rm -rf /usr/local/lib/android; end=$(date +%s); echo "Duration: $((end-start))s"; fi + if [ -d /opt/ghc ]; then echo "Removing haskell (ghc)..."; start=$(date +%s); sudo rm -rf /opt/ghc; end=$(date +%s); echo "Duration: $((end-start))s"; fi + if [ -d /usr/local/.ghcup ]; then echo "Removing haskell (ghcup)..."; start=$(date +%s); sudo rm -rf /usr/local/.ghcup; end=$(date +%s); echo "Duration: $((end-start))s"; fi + if [ -d /usr/share/swift ]; then echo "Removing swift..."; start=$(date +%s); sudo rm -rf /usr/share/swift; end=$(date +%s); echo "Duration: $((end-start))s"; fi + if [ -d /usr/local/share/chromium ]; then echo "Removing chromium..."; start=$(date +%s); sudo rm -rf /usr/local/share/chromium; end=$(date +%s); echo "Duration: $((end-start))s"; fi + - name: Show disk space after cleanup + run: | + echo 'Disk space after cleanup:' + df -h + - name: Checkout repository + uses: actions/checkout@v4.2.2 + with: + repository: ${{ env.REFERENCE_INTEGRATION_REPO }} + ref: ${{ inputs.target_branch || 'main' }} + token: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + - name: Setup Bazel + uses: bazel-contrib/setup-bazel@0.15.0 + with: + # Avoid downloading Bazel every time. + bazelisk-cache: true + # Store build cache per workflow. + disk-cache: ${{ github.workflow }} + # Share repository cache between workflows. + repository-cache: true + - name: Update known good commits + run: | + echo "::group::write known_good.json from input" + # write the known_good.json from input + cat > known_good.updated.json <<'EOF' + ${{ inputs.known_good }} + EOF + cat known_good.updated.json + echo "::endgroup::" + + echo "::group::update score_modules.MODULE.bazel" + python3 tools/update_module_from_known_good.py --known known_good.updated.json + cat score_modules.MODULE.bazel + echo "::endgroup::" + env: + GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + - name: Bazel build targets + run: | + CONFIG="${{ inputs.config }}" scripts/integration_test.sh --known-good known_good.updated.json + env: + GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + - name: Show disk space after build + if: always() + run: | + echo 'Disk space after build:' + df -h + - name: Upload logs artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: bazel-build-logs-${{ inputs.config }} + path: _logs/ + if-no-files-found: warn + retention-days: 14 diff --git a/.github/workflows/reusable_smoke-test.yml b/.github/workflows/reusable_smoke-test.yml new file mode 100644 index 00000000000..c76d7562726 --- /dev/null +++ b/.github/workflows/reusable_smoke-test.yml @@ -0,0 +1,206 @@ +# Module Smoke Test Workflow +# +# Summary: +# Orchestrates a fast validation of a single module by producing an +# updated known_good.json (optionally overriding one module to the current PR) +# and then invoking the integration build workflow to compile and test. +# +# What it does: +# - Checks out the reference integration repository +# - Generates known_good.updated.json: +# * If testing an external module PR: overrides `module_name` to the PR SHA +# * If testing this repo: updates modules to latest branches +# - Uploads known_good.updated.json as an artifact +# - Calls the Module Integration Build workflow with a matrix of configs +# - Publishes a summary to the GitHub Step Summary +# +# Inputs: +# - repo_runner_labels (string, required, default: ubuntu-latest): Runner label. +# - module_name (string, required): Module to override (e.g., score_baselibs). +# - target_branch (string, required, default: main): +# The ref to checkout via actions/checkout — can be a branch name, tag, or +# commit SHA. This ensures the workflow uses the exact version of the +# integration files you intend. +# +# Repository Variables: +# - reference_integration_repo (optional): Repository providing integration +# workflows and tools (format: owner/repo). Supports private forks. +# Default: eclipse-score/reference_integration +# +# Secrets: +# - REPO_READ_TOKEN (optional): Token for reading private repos; falls back to +# github.token when not provided. +# +# Usage: +# This workflow is reusable and triggered via workflow_call from other workflows. +# Example: +# jobs: +# smoke: +# uses: eclipse-score/reference_integration/.github/workflows/module-smoke-test.yml@main +# with: +# repo_runner_labels: ubuntu-latest +# module_name: score_baselibs +# target_branch: main +# secrets: +# REPO_READ_TOKEN: ${{ secrets.REPO_READ_TOKEN }} +# +# Note: Set the 'reference_integration_repo' repository variable to use a +# private fork (e.g., my-org/reference_integration). +# +# Notes: +# - Extend the matrix in `integration-test` to cover additional configs. + +name: Module Smoke Test + +on: + workflow_call: + inputs: + repo_runner_labels: + description: 'The runner tag to use for the job' + required: true + type: string + default: 'ubuntu-latest' + module_name: + description: 'Name of the module to override (e.g., score_baselibs).' + required: true + type: string + target_branch: + description: 'Ref to checkout (branch, tag, or commit SHA).' + required: true + type: string + default: 'main' + secrets: + REPO_READ_TOKEN: + description: 'Token for reading repositories' + required: false + +env: + REFERENCE_INTEGRATION_REPO: ${{ vars.reference_integration_repo != '' && vars.reference_integration_repo || 'eclipse-score/reference_integration' }} + +jobs: + preparation: + name: Preparation + runs-on: ubuntu-latest + outputs: + known_good_updated: ${{ steps.set_known_good.outputs.known_good_updated }} + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 + with: + repository: ${{ env.REFERENCE_INTEGRATION_REPO }} + ref: ${{ inputs.target_branch }} + token: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + - name: Create updated known_good.json with PR commit + id: set_known_good + run: | + if [ "${{ github.repository }}" != "${{ env.REFERENCE_INTEGRATION_REPO }}" ]; then + echo "Overriding ${{ inputs.module_name }} with current PR" + python3 tools/override_known_good_repo.py \ + --known known_good.json \ + --output known_good.updated.json \ + --module-override ${{ inputs.module_name }}@${{ github.event.repository.clone_url }}@${{ github.sha }} + else + echo "Testing reference integration repository itself - updating to latest commits" + echo "::group::get latest commits from module branches" + python3 tools/update_module_latest.py --output known_good.updated.json + cat known_good.updated.json + echo "::endgroup::" + fi + + # Output the content as a JSON string + echo "known_good_updated<> $GITHUB_OUTPUT + cat known_good.updated.json >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + env: + GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + - name: Show updated known_good.json + run: | + echo "Updated known_good.json:" + cat known_good.updated.json + - name: Upload updated known_good.json artifact + uses: actions/upload-artifact@v4 + with: + name: known_good.updated.json + path: known_good.updated.json + + docs: + name: Generate Documentation + runs-on: ubuntu-latest + needs: preparation + steps: + - name: not implemented + run: echo "Documentation generation not yet implemented here." + + integration-test: + name: Integration Testing (${{ matrix.config }}) + needs: preparation + strategy: + fail-fast: false + matrix: + config: + - bl-x86_64-linux + # Add more configs here as needed + # - bl-aarch64-linux + # - bl-x86_64-qnx + uses: ./.github/workflows/reusable_integration-build.yml + secrets: + REPO_READ_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + with: + known_good: ${{ needs.preparation.outputs.known_good_updated }} + config: ${{ matrix.config }} + repo_runner_labels: ${{ inputs.repo_runner_labels }} + target_branch: ${{ inputs.target_branch }} + + summary: + name: Publish Summary + runs-on: ubuntu-latest + needs: [integration-test, docs] + if: always() + steps: + # get all artefacts from integration-test job with name bazel-build-logs-* + - name: Download Integration Test Artifacts + uses: actions/download-artifact@v4 + with: + pattern: bazel-build-logs-* + path: _logs/integration_test_logs + merge-multiple: true + - name: Publish Integration Test Summary + run: | + { + echo '## Overall Status' + echo + if [ "${{ needs.integration-test.result }}" == "success" ]; then + echo '- Integration Test: ✅ **SUCCESS**' + else + echo '- Integration Test: ❌ **FAILURE**' + fi + + if [ "${{ needs.docs.result }}" == "success" ]; then + echo '- Documentation Generation: ✅ **SUCCESS**' + else + echo '- Documentation Generation: ❌ **FAILURE**' + fi + + echo + echo '---' + echo + echo '## Integration Test Summary' + echo + + # Process each build_summary.md file from different configs + for summary_file in _logs/integration_test_logs/*/build_summary.md; do + if [ -f "$summary_file" ]; then + config_name=$(basename $(dirname "$summary_file")) + echo "### Configuration: $config_name" + echo + cat "$summary_file" + echo + fi + done + + # If no summary files found, check direct path + if [ -f _logs/integration_test_logs/build_summary.md ]; then + cat _logs/integration_test_logs/build_summary.md + echo + fi + } >> "$GITHUB_STEP_SUMMARY" \ No newline at end of file diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index 57897e086c7..f1e67e95abf 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -18,81 +18,14 @@ name: build latest mains on: workflow_dispatch: pull_request: - release: - types: [created] push: - branches: - - main + # schedule: + # - cron: '30 2 * * *' # Every night at 02:30 UTC on main branch jobs: - integration_test: - runs-on: ubuntu-latest - steps: - - name: Show disk space before build - run: | - echo 'Disk space before build:' - df -h - - name: Removing unneeded software - run: | - echo "Removing unneeded software... " - if [ -d /usr/share/dotnet ]; then echo "Removing dotnet..."; start=$(date +%s); sudo rm -rf /usr/share/dotnet; end=$(date +%s); echo "Duration: $((end-start))s"; fi - #if [ -d /usr/local/lib/android ]; then echo "Removing android..."; start=$(date +%s); sudo rm -rf /usr/local/lib/android; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /opt/ghc ]; then echo "Removing haskell (ghc)..."; start=$(date +%s); sudo rm -rf /opt/ghc; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/.ghcup ]; then echo "Removing haskell (ghcup)..."; start=$(date +%s); sudo rm -rf /usr/local/.ghcup; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/share/swift ]; then echo "Removing swift..."; start=$(date +%s); sudo rm -rf /usr/share/swift; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/share/chromium ]; then echo "Removing chromium..."; start=$(date +%s); sudo rm -rf /usr/local/share/chromium; end=$(date +%s); echo "Duration: $((end-start))s"; fi - - name: Show disk space after cleanup - run: | - echo 'Disk space after cleanup:' - df -h - - name: Checkout repository - uses: actions/checkout@v4.2.2 - - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.15.0 - with: - # Avoid downloading Bazel every time. - bazelisk-cache: true - # Store build cache per workflow. - disk-cache: ${{ github.workflow }} - # Share repository cache between workflows. - repository-cache: true - - name: Update known good commits - run: | - echo "::group::get latest commits from module branches" - python3 tools/update_module_latest.py --output known_good.updated.json - cat known_good.updated.json - echo "::endgroup::" - echo "::group::update score_modules.MODULE.bazel" - python3 tools/update_module_from_known_good.py --known known_good.updated.json - cat score_modules.MODULE.bazel - echo "::endgroup::" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Bazel build targets - run: | - scripts/integration_test.sh --known-good known_good.updated.json - - name: Show disk space after build - if: always() - run: | - echo 'Disk space after build:' - df -h - - name: Publish build summary - if: always() - run: | - if [ -f _logs/build_summary.md ]; then - { - echo '## Bazel Build Summary' - echo - # Append the markdown directly so tables render (no leading indentation) - cat _logs/build_summary.md - } >> "$GITHUB_STEP_SUMMARY" - else - echo "No build summary file found (_logs/build_summary.md)" >> "$GITHUB_STEP_SUMMARY" - fi - - name: Upload logs artifact - if: always() - uses: actions/upload-artifact@v4 - with: - name: bazel-build-logs - path: _logs/ - if-no-files-found: warn - retention-days: 14 + integration_test: + uses: ./.github/workflows/reusable_smoke-test.yml + secrets: inherit + with: + repo_runner_labels: 'ubuntu-latest' + module_name: 'reference_integration' + target_branch: ${{ github.ref }} diff --git a/scripts/integration_test.sh b/scripts/integration_test.sh index dfccfbd88f4..20947b1d30e 100755 --- a/scripts/integration_test.sh +++ b/scripts/integration_test.sh @@ -11,6 +11,14 @@ CONFIG=${CONFIG:-bl-x86_64-linux} LOG_DIR=${LOG_DIR:-_logs/logs} SUMMARY_FILE=${SUMMARY_FILE:-_logs/build_summary.md} KNOWN_GOOD_FILE="" +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# Go up one level to get the repository root since this script is in scripts/ directory +repo_root="$(cd "${script_dir}/.." && pwd)" + +# Set default known_good.json if it exists +if [[ -z "${KNOWN_GOOD_FILE}" ]] && [[ -f "known_good.json" ]]; then + KNOWN_GOOD_FILE="known_good.json" +fi # maybe move this to known_good.json or a config file later declare -A BUILD_TARGET_GROUPS=( @@ -59,11 +67,14 @@ get_commit_hash() { return fi - # Get the script directory - local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - # Use the Python script to extract module info - python3 "${script_dir}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "hash" 2>/dev/null || echo "N/A" + local result + result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "hash" 2>&1) + if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then + echo "${result}" + else + echo "N/A" + fi } # Function to extract repo URL from known_good.json @@ -76,11 +87,89 @@ get_module_repo() { return fi - # Get the script directory - local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - # Use the Python script to extract module repo - python3 "${script_dir}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "repo" 2>/dev/null || echo "N/A" + local result + result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "repo" 2>&1) + if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then + echo "${result}" + else + echo "N/A" + fi +} + +# Function to extract version from known_good.json +get_module_version() { + local module_name=$1 + local known_good_file=$2 + + if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then + echo "N/A" + return + fi + + # Use the Python script to extract module version + local result + result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "version" 2>&1) + if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then + echo "${result}" + else + echo "N/A" + fi +} + +get_module_version_gh() { + local module_name=$1 + local known_good_file=$2 + local repo_url=$3 + local commit_hash=$4 + + if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then + echo "::warning::get_module_version_gh: known_good_file not found or empty" >&2 + echo "N/A" + return + fi + + # Check if gh CLI is installed + if ! command -v gh &> /dev/null; then + echo "::warning::gh CLI not found. Install it to resolve commit hashes to tags." >&2 + echo "N/A" + return + fi + + echo "::debug::get_module_version_gh: module=${module_name}, repo=${repo_url}, hash=${commit_hash}" >&2 + + # Extract owner/repo from GitHub URL + if [[ "${repo_url}" =~ github\.com[/:]([^/]+)/([^/.]+)(\.git)?$ ]]; then + local owner="${BASH_REMATCH[1]}" + local repo="${BASH_REMATCH[2]}" + + echo "::debug::Querying GitHub API: repos/${owner}/${repo}/tags for commit ${commit_hash}" >&2 + + # Query GitHub API for tags and find matching commit + local tag_name + tag_name=$(gh api "repos/${owner}/${repo}/tags" --jq ".[] | select(.commit.sha == \"${commit_hash}\") | .name" 2>/dev/null | head -n1) + + if [[ -n "${tag_name}" ]]; then + echo "::debug::Found tag: ${tag_name}" >&2 + echo "${tag_name}" + else + echo "::debug::No tag found for commit ${commit_hash}" >&2 + echo "N/A" + fi + else + echo "::warning::Invalid repo URL format: ${repo_url}" >&2 + echo "N/A" + fi +} + +# Helper function to truncate hash +truncate_hash() { + local hash=$1 + if [[ ${#hash} -gt 8 ]]; then + echo "${hash:0:8}" + else + echo "${hash}" + fi } warn_count() { @@ -151,20 +240,103 @@ for group in "${!BUILD_TARGET_GROUPS[@]}"; do # Get commit hash/version for this group (group name is the module name) commit_hash=$(get_commit_hash "${group}" "${KNOWN_GOOD_FILE}") + commit_hash_old=$(get_commit_hash "${group}" "known_good.json") + version=$(get_module_version "${group}" "${KNOWN_GOOD_FILE}") repo=$(get_module_repo "${group}" "${KNOWN_GOOD_FILE}") - # Truncate commit hash for display (first 8 chars) - if [[ "${commit_hash}" != "N/A" ]] && [[ ${#commit_hash} -gt 8 ]]; then - commit_hash_display="${commit_hash:0:8}" - else - commit_hash_display="${commit_hash}" + # Debug output + echo "::debug::Module=${group}, version=${version}, hash=${commit_hash}, hash_old=${commit_hash_old}, repo=${repo}" >&2 + + # Determine what to display and link to + # Step 1: Determine old version/hash identifier + old_identifier="N/A" + old_link="" + if [[ "${commit_hash_old}" != "N/A" ]]; then + echo "::debug::Step 1: Getting old version for ${group}" >&2 + version_old=$(get_module_version "${group}" "known_good.json") + echo "::debug::version_old from JSON: ${version_old}" >&2 + if [[ "${version_old}" == "N/A" ]]; then + # Try to get version from GitHub API + echo "::debug::Trying to resolve version_old from GitHub for ${group}" >&2 + version_old=$(get_module_version_gh "${group}" "known_good.json" "${repo}" "${commit_hash_old}") + echo "::debug::version_old from GitHub: ${version_old}" >&2 + fi + + # Prefer version over hash + if [[ "${version_old}" != "N/A" ]]; then + old_identifier="${version_old}" + if [[ "${repo}" != "N/A" ]]; then + old_link="${repo}/releases/tag/${version_old}" + fi + else + old_identifier=$(truncate_hash "${commit_hash_old}") + if [[ "${repo}" != "N/A" ]]; then + old_link="${repo}/tree/${commit_hash_old}" + fi + fi + echo "::debug::old_identifier=${old_identifier}" >&2 + fi + + # Step 2: Determine if hash changed + hash_changed=0 + if [[ "${commit_hash_old}" != "N/A" ]] && [[ "${commit_hash}" != "N/A" ]] && [[ "${commit_hash}" != "${commit_hash_old}" ]]; then + hash_changed=1 + fi + echo "::debug::hash_changed=${hash_changed}" >&2 + + # Step 3: Determine new version/hash identifier (only if hash changed) + new_identifier="N/A" + new_link="" + if [[ ${hash_changed} -eq 1 ]] && [[ "${commit_hash}" != "N/A" ]]; then + echo "::debug::Step 3: Hash changed, getting new version for ${group}" >&2 + # Try to get version from known_good file first, then GitHub API + if [[ "${version}" == "N/A" ]]; then + echo "::debug::Trying to resolve new version from GitHub for ${group}" >&2 + version=$(get_module_version_gh "${group}" "${KNOWN_GOOD_FILE}" "${repo}" "${commit_hash}") + echo "::debug::new version from GitHub: ${version}" >&2 + fi + + # Prefer version over hash + if [[ "${version}" != "N/A" ]]; then + new_identifier="${version}" + if [[ "${repo}" != "N/A" ]]; then + new_link="${repo}/releases/tag/${version}" + fi + else + new_identifier=$(truncate_hash "${commit_hash}") + if [[ "${repo}" != "N/A" ]]; then + new_link="${repo}/tree/${commit_hash}" + fi + fi + echo "::debug::new_identifier=${new_identifier}" >&2 fi - # Only add link if KNOWN_GOOD_FILE is set - if [[ -n "${KNOWN_GOOD_FILE}" ]]; then - commit_version_cell="[${commit_hash_display}](${repo}/tree/${commit_hash})" + # Step 4: Format output based on whether hash changed + echo "::debug::Formatting output: hash_changed=${hash_changed}, old=${old_identifier}, new=${new_identifier}" >&2 + if [[ ${hash_changed} -eq 1 ]]; then + # Hash changed - show old -> new + if [[ "${repo}" != "N/A" ]] && [[ -n "${old_link}" ]] && [[ -n "${new_link}" ]]; then + commit_version_cell="[${old_identifier}](${old_link}) → [${new_identifier}](${new_link}) ([diff](${repo}/compare/${commit_hash_old}...${commit_hash}))" + else + commit_version_cell="${old_identifier} → ${new_identifier}" + fi + elif [[ "${old_identifier}" != "N/A" ]]; then + # Hash not changed - show only old + if [[ "${repo}" != "N/A" ]] && [[ -n "${old_link}" ]]; then + commit_version_cell="[${old_identifier}](${old_link})" + else + commit_version_cell="${old_identifier}" + fi + elif [[ "${new_identifier}" != "N/A" ]]; then + # No old available - show new + if [[ "${repo}" != "N/A" ]] && [[ -n "${new_link}" ]]; then + commit_version_cell="[${new_identifier}](${new_link})" + else + commit_version_cell="${new_identifier}" + fi else - commit_version_cell="${commit_hash_display}" + # Nothing available + commit_version_cell="N/A" fi echo "| ${group} | ${status_symbol} | ${duration} | ${w_count} | ${d_count} | ${commit_version_cell} |" | tee -a "${SUMMARY_FILE}" diff --git a/tools/get_module_info.py b/tools/get_module_info.py index ac463ef1f80..45286d92927 100755 --- a/tools/get_module_info.py +++ b/tools/get_module_info.py @@ -3,59 +3,66 @@ import json import sys -from typing import Dict, Any +from typing import Optional +from models import Module -def load_module_data(known_good_file: str, module_name: str) -> Dict[str, Any]: + +def load_module(known_good_file: str, module_name: str) -> Optional[Module]: """ - Load module data from known_good.json. + Load module from known_good.json. Args: known_good_file: Path to the known_good.json file module_name: Name of the module to look up Returns: - Dictionary with module data, or empty dict if not found + Module instance, or None if not found """ try: with open(known_good_file, 'r') as f: data = json.load(f) - modules = data.get('modules', {}) - return modules.get(module_name, {}) - except Exception: - return {} + modules_dict = data.get('modules', {}) + module_data = modules_dict.get(module_name) + + if not module_data: + return None + + return Module.from_dict(module_name, module_data) + except Exception as e: + # Log error to stderr for debugging + print(f"Error loading {known_good_file}: {e}", file=sys.stderr) + return None -def get_module_field(module_data: Dict[str, Any], field: str = 'hash') -> str: +def get_module_field(module: Optional[Module], field: str = 'hash') -> str: """ - Extract a specific field from module data. + Extract a specific field from module. Args: - module_data: Dictionary with module information + module: Module instance field: Field to extract ('hash', 'version', 'repo', or 'all') Returns: Requested field value, or 'N/A' if not found - For 'hash': truncated to 8 chars if longer + For 'hash': returns the hash value For 'all': returns hash/version (prefers hash, falls back to version) """ - if not module_data: + if not module: return 'N/A' if field == 'repo': - repo = module_data.get('repo', 'N/A') + repo = module.repo or 'N/A' # Remove .git suffix if present if repo.endswith('.git'): repo = repo[:-4] return repo elif field == 'version': - return module_data.get('version', 'N/A') + return module.version or 'N/A' elif field == 'hash': - hash_val = module_data.get('hash', 'N/A') - return hash_val + return module.hash or 'N/A' else: # field == 'all' or default - hash_val = module_data.get('hash', module_data.get('version', 'N/A')) - return hash_val + return module.hash or module.version or 'N/A' if __name__ == '__main__': @@ -69,6 +76,6 @@ def get_module_field(module_data: Dict[str, Any], field: str = 'hash') -> str: module_name = sys.argv[2] field = sys.argv[3] if len(sys.argv) == 4 else 'all' - module_data = load_module_data(known_good_file, module_name) - result = get_module_field(module_data, field) + module = load_module(known_good_file, module_name) + result = get_module_field(module, field) print(result) diff --git a/tools/known_good_to_workspace_metadata.py b/tools/known_good_to_workspace_metadata.py index 145c17614ee..dd9e3ad8b87 100644 --- a/tools/known_good_to_workspace_metadata.py +++ b/tools/known_good_to_workspace_metadata.py @@ -3,6 +3,8 @@ import json import csv +from models import Module + MODULES_CSV_HEADER = [ "repo_url", "name", @@ -22,25 +24,24 @@ def main(): with open(args.known_good, "r") as f: data = json.load(f) - modules = data.get("modules", {}) + modules_dict = data.get("modules", {}) + + # Parse modules using Module dataclass + modules = Module.parse_modules(modules_dict) gita_metadata = [] - for name, info in modules.items(): - repo_url = info.get("repo", "") - if not repo_url: - raise RuntimeError("repo must not be empty") - - # default branch: main - branch = info.get("branch", "main") + for module in modules: + if not module.repo: + raise RuntimeError(f"Module {module.name}: repo must not be empty") # if no hash is given, use branch - hash_ = info.get("hash", branch) + hash_value = module.hash if module.hash else module.branch # workspace_path is not available in known_good.json, default to name of repository - workspace_path = name + workspace_path = module.name # gita format: {url},{name},{path},{prop['type']},{repo_flags},{branch} - row = [repo_url, name, workspace_path, "", "", hash_] + row = [module.repo, module.name, workspace_path, "", "", hash_value] gita_metadata.append(row) with open(args.gita_workspace, "w", newline="") as f: diff --git a/tools/models/__init__.py b/tools/models/__init__.py new file mode 100644 index 00000000000..838a6f4b290 --- /dev/null +++ b/tools/models/__init__.py @@ -0,0 +1,5 @@ +"""Models for score reference integration tools.""" + +from .module import Module + +__all__ = ["Module"] diff --git a/tools/models/module.py b/tools/models/module.py new file mode 100644 index 00000000000..3db3354e517 --- /dev/null +++ b/tools/models/module.py @@ -0,0 +1,110 @@ +"""Module dataclass for score reference integration.""" + +from __future__ import annotations + +from dataclasses import dataclass +from urllib.parse import urlparse +from typing import Any, Dict, List +import logging + + +@dataclass +class Module: + name: str + hash: str + repo: str + version: str | None = None + patches: list[str] | None = None + branch: str = "main" + + @classmethod + def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: + """Create a Module instance from a dictionary representation. + + Args: + name: The module name + module_data: Dictionary containing module configuration with keys: + - repo (str): Repository URL + - hash or commit (str): Commit hash + - version (str, optional): Module version + - patches (list[str], optional): List of patch files + - branch (str, optional): Git branch name (default: main) + + Returns: + Module instance + """ + repo = module_data.get("repo", "") + # Support both 'hash' and 'commit' keys + commit_hash = module_data.get("hash") or module_data.get("commit", "") + version = module_data.get("version") + patches = module_data.get("patches", []) + branch = module_data.get("branch", "main") + + return cls( + name=name, + hash=commit_hash, + repo=repo, + version=version, + patches=patches if patches else None, + branch=branch + ) + + @classmethod + def parse_modules(cls, modules_dict: Dict[str, Any]) -> List[Module]: + """Parse modules dictionary into Module dataclass instances. + + Args: + modules_dict: Dictionary mapping module names to their configuration data + + Returns: + List of Module instances, skipping invalid modules + """ + modules = [] + for name, module_data in modules_dict.items(): + module = cls.from_dict(name, module_data) + + # Skip modules with missing repo and no version + if not module.repo and not module.version: + logging.warning("Skipping module %s with missing repo", name) + continue + + modules.append(module) + + return modules + + @property + def owner_repo(self) -> str: + """Return owner/repo part extracted from HTTPS GitHub URL.""" + # Examples: + # https://github.com/eclipse-score/logging.git -> eclipse-score/logging + parsed = urlparse(self.repo) + if parsed.netloc != "github.com": + raise ValueError(f"Not a GitHub URL: {self.repo}") + + # Extract path, remove leading slash and .git suffix + path = parsed.path.lstrip("/").removesuffix(".git") + + # Split and validate owner/repo format + parts = path.split("/", 2) # Split max 2 times to get owner and repo + if len(parts) < 2 or not parts[0] or not parts[1]: + raise ValueError(f"Cannot parse owner/repo from: {self.repo}") + + return f"{parts[0]}/{parts[1]}" + + def to_dict(self) -> Dict[str, Any]: + """Convert Module instance to dictionary representation for JSON output. + + Returns: + Dictionary with module configuration + """ + result = { + "repo": self.repo, + "hash": self.hash + } + if self.version: + result["version"] = self.version + if self.patches: + result["patches"] = self.patches + if self.branch and self.branch != "main": + result["branch"] = self.branch + return result diff --git a/tools/override_known_good_repo.py b/tools/override_known_good_repo.py new file mode 100755 index 00000000000..d892d583212 --- /dev/null +++ b/tools/override_known_good_repo.py @@ -0,0 +1,265 @@ +#!/usr/bin/env python3 +""" +Update a known_good.json file by pinning modules to specific commits. + +Usage: + python3 tools/override_known_good_repo.py \ + --known known_good.json \ + --output known_good.updated.json \ + --module-override https://github.com/org/repo.git@abc123def + +This script reads a known_good.json file and produces a new one with specified +module commit pins. The output can then be used with +update_module_from_known_good.py to generate the MODULE.bazel file. +""" +import argparse +import json +import os +import re +import datetime as dt +from typing import Dict, Any, List +import logging + +from models import Module + +# Configure logging +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_known_good(path: str) -> Dict[str, Any]: + """Load and parse the known_good.json file.""" + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + + if isinstance(data, dict) and isinstance(data.get("modules"), dict): + return data + raise SystemExit( + f"Invalid known_good.json at {path} (expected object with 'modules' dict)" + ) + + +def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[str]) -> int: + """ + Parse repo override arguments and apply them to modules. + + Supports two formats: + 1. module_name@hash (find repo from module) + 2. module_name@repo_url@hash (explicit repo with module validation) + + Args: + modules: Dictionary mapping module names to Module instances + repo_overrides: List of override strings + + Returns: + The number of overrides applied. + """ + repo_url_pattern = re.compile(r'^https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git$') + hash_pattern = re.compile(r'^[a-fA-F0-9]{7,40}$') + overrides_applied = 0 + + # Parse and validate overrides + for entry in repo_overrides: + logging.info(f"Override registered: {entry}") + parts = entry.split("@") + + if len(parts) == 2: + # module_name@hash + module_name, commit_hash = parts + + if not hash_pattern.match(commit_hash): + raise SystemExit( + f"Invalid commit hash in '{entry}': {commit_hash}\n" + "Expected 7-40 hex characters" + ) + + # Validate module exists + if module_name not in modules: + logging.warning( + f"Module '{module_name}' not found in known_good.json\n" + f"Available modules: {', '.join(sorted(modules.keys()))}" + ) + continue + + module = modules[module_name] + old_value = module.version or module.hash + + if commit_hash == module.hash: + logging.info( + f"Module '{module_name}' already at specified commit {commit_hash}, no change needed" + ) + else: + module.hash = commit_hash + module.version = None # Clear version when overriding hash + logging.info(f"Applied override to {module_name}: {old_value} -> {commit_hash}") + overrides_applied += 1 + + elif len(parts) == 3: + # Format: module_name@repo_url@hash + module_name, repo_url, commit_hash = parts + + if not hash_pattern.match(commit_hash): + raise SystemExit( + f"Invalid commit hash in '{entry}': {commit_hash}\n" + "Expected 7-40 hex characters" + ) + + if not repo_url_pattern.match(repo_url): + raise SystemExit( + f"Invalid repo URL in '{entry}': {repo_url}\n" + "Expected format: https://github.com/org/repo.git" + ) + + # Validate module exists + if module_name not in modules: + logging.warning( + f"Module '{module_name}' not found in known_good.json\n" + f"Available modules: {', '.join(sorted(modules.keys()))}" + ) + continue + + module = modules[module_name] + old_value = module.version or module.hash + + if module.hash != commit_hash: + module.hash = commit_hash + module.version = None # Clear version when overriding hash + + module.repo = repo_url + logging.info(f"Applied override to {module_name}: {old_value} -> {commit_hash} (repo: {repo_url})") + overrides_applied += 1 + + else: + raise SystemExit( + f"Invalid override spec: {entry}\n" + "Supported formats:\n" + " 1. module_name@commit_hash\n" + " 2. module_name@repo_url@commit_hash\n" + ) + + return overrides_applied + + +def apply_overrides(data: Dict[str, Any], repo_overrides: List[str]) -> Dict[str, Any]: + """Apply repository commit overrides to the known_good data.""" + modules_dict = data.get("modules", {}) + + # Parse modules into Module instances (skip validation since we're just overriding) + modules_list = [Module.from_dict(name, mod_data) for name, mod_data in modules_dict.items()] + modules = {m.name: m for m in modules_list} + + # Parse and apply overrides + overrides_applied = parse_and_apply_overrides(modules, repo_overrides) + + if overrides_applied == 0: + logging.warning("No overrides were applied to any modules") + else: + logging.info(f"Successfully applied {overrides_applied} override(s)") + + # Convert modules back to dict format + data["modules"] = {name: module.to_dict() for name, module in modules.items()} + + # Update timestamp + data["timestamp"] = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" + + return data + + +def write_known_good(data: Dict[str, Any], output_path: str, dry_run: bool = False) -> None: + """Write known_good data to file or print for dry-run.""" + output_json = json.dumps(data, indent=4, sort_keys=False) + "\n" + + if dry_run: + print(f"\nDry run: would write to {output_path}\n") + print("---- BEGIN UPDATED JSON ----") + print(output_json, end="") + print("---- END UPDATED JSON ----") + else: + with open(output_path, "w", encoding="utf-8") as f: + f.write(output_json) + logging.info(f"Successfully wrote updated known_good.json to {output_path}") + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Override repository commits in known_good.json", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Pin by module name (simplest - looks up repo automatically) + python3 tools/override_known_good_repo.py \ + --known known_good.json \ + --output known_good.updated.json \ + --module-override score_baselibs@abc123def + + # Pin with module name and explicit repo URL + python3 tools/override_known_good_repo.py \ + --known known_good.json \ + --output known_good.updated.json \ + --module-override score_baselibs@https://github.com/eclipse-score/baselibs.git@abc123 + + # Pin multiple modules + python3 tools/override_known_good_repo.py \ + --known known_good.json \ + --output known_good.updated.json \ + --module-override score_baselibs@abc123 \ + --module-override score_communication@def456 + """ + ) + + parser.add_argument( + "--known", + default="known_good.json", + help="Path to input known_good.json file (default: known_good.json)" + ) + parser.add_argument( + "--output", + default="known_good.updated.json", + help="Path to output JSON file (default: known_good.updated.json)" + ) + parser.add_argument( + "--module-override", + dest="module_overrides", + action="append", + required=False, + help=( + "Override a module to a commit. Formats: module_name@hash | " + "module_name@repo_url@hash. Can be specified multiple times." + ), + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print the result instead of writing to file" + ) + parser.add_argument( + "-v", "--verbose", + action="store_true", + help="Enable verbose logging" + ) + + args = parser.parse_args() + + if args.verbose: + logging.getLogger().setLevel(logging.DEBUG) + + known_path = os.path.abspath(args.known) + output_path = os.path.abspath(args.output) + + if not os.path.exists(known_path): + raise SystemExit(f"Input file not found: {known_path}") + + # Load, update, and output + logging.info(f"Loading {known_path}") + data = load_known_good(known_path) + + if not args.module_overrides: + parser.error("at least one --module-override is required") + + overrides = args.module_overrides + + updated_data = apply_overrides(data, overrides) + write_known_good(updated_data, output_path, args.dry_run) + + +if __name__ == "__main__": + main() diff --git a/tools/update_module_from_known_good.py b/tools/update_module_from_known_good.py index 138590bfa9f..a2c6c720eb1 100755 --- a/tools/update_module_from_known_good.py +++ b/tools/update_module_from_known_good.py @@ -9,6 +9,9 @@ --output score_modules.MODULE.bazel The generated score_modules.MODULE.bazel file is included by MODULE.bazel. + +Note: To override repository commits before generating the MODULE.bazel file, +use tools/override_known_good_repo.py first to create an updated known_good.json. """ import argparse import json @@ -18,6 +21,11 @@ import logging from typing import Dict, List, Any, Optional +from models import Module + +# Configure logging +logging.basicConfig(level=logging.WARNING, format='%(levelname)s: %(message)s') + def load_known_good(path: str) -> Dict[str, Any]: """Load and parse the known_good.json file.""" @@ -32,55 +40,52 @@ def load_known_good(path: str) -> Dict[str, Any]: ) -def generate_git_override_blocks(modules_dict: Dict[str, Any], repo_commit_dict: Dict[str, str]) -> List[str]: +def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[str, str]) -> List[str]: """Generate bazel_dep and git_override blocks for each module.""" blocks = [] - for name, module in modules_dict.items(): - repo = module.get("repo") - commit = module.get("hash") or module.get("commit") - patches = module.get("patches", []) + for module in modules: + commit = module.hash # Allow overriding specific repos via command line - if repo in repo_commit_dict: - commit = repo_commit_dict[repo] + if module.repo in repo_commit_dict: + commit = repo_commit_dict[module.repo] - # Check if module has a version, use different logic - version = module.get("version") + # Generate patches lines if patches exist patches_lines = "" - if patches: + if module.patches: patches_lines = " patches = [\n" - for patch in patches: + for patch in module.patches: patches_lines += f' "{patch}",\n' patches_lines += " ],\n patch_strip = 1,\n" - if version: + if module.version: # If version is provided, use bazel_dep with single_version_override block = ( - f'bazel_dep(name = "{name}")\n' + f'bazel_dep(name = "{module.name}")\n' 'single_version_override(\n' - f' module_name = "{name}",\n' - f' version = "{version}",\n' + f' module_name = "{module.name}",\n' + f' version = "{module.version}",\n' f'{patches_lines}' ')\n' ) else: - if not repo or not commit: - logging.warning("Skipping module %s with missing repo or commit: repo=%s, commit=%s", name, repo, commit) + if not module.repo or not commit: + logging.warning("Skipping module %s with missing repo or commit: repo=%s, commit=%s", + module.name, module.repo, commit) continue # Validate commit hash format (7-40 hex characters) if not re.match(r'^[a-fA-F0-9]{7,40}$', commit): - logging.warning("Skipping module %s with invalid commit hash: %s", name, commit) + logging.warning("Skipping module %s with invalid commit hash: %s", module.name, commit) continue # If no version, use bazel_dep with git_override - block = ( - f'bazel_dep(name = "{name}")\n' + f'bazel_dep(name = "{module.name}")\n' 'git_override(\n' - f' module_name = "{name}",\n' - f' remote = "{repo}",\n' + f' module_name = "{module.name}",\n' + f' remote = "{module.repo}",\n' f' commit = "{commit}",\n' f'{patches_lines}' ')\n' @@ -90,16 +95,16 @@ def generate_git_override_blocks(modules_dict: Dict[str, Any], repo_commit_dict: return blocks -def generate_local_override_blocks(modules_dict: Dict[str, Any]) -> List[str]: +def generate_local_override_blocks(modules: List[Module]) -> List[str]: """Generate bazel_dep and local_path_override blocks for each module.""" blocks = [] - for name, module in modules_dict.items(): + for module in modules: block = ( - f'bazel_dep(name = "{name}")\n' + f'bazel_dep(name = "{module.name}")\n' 'local_path_override(\n' - f' module_name = "{name}",\n' - f' path = "{name}",\n' + f' module_name = "{module.name}",\n' + f' path = "{module.name}",\n' ')\n' ) @@ -107,9 +112,9 @@ def generate_local_override_blocks(modules_dict: Dict[str, Any]) -> List[str]: return blocks -def generate_file_content(args: argparse.Namespace, modules: Dict[str, Any], repo_commit_dict: Dict[str, str], timestamp: Optional[str] = None) -> str: +def generate_file_content(args: argparse.Namespace, modules: List[Module], repo_commit_dict: Dict[str, str], timestamp: Optional[str] = None) -> str: """Generate the complete content for score_modules.MODULE.bazel.""" - # License header assembled with parenthesis grouping (no indentation preserved in output). + # License header header = ( "# *******************************************************************************\n" "# Copyright (c) 2025 Contributors to the Eclipse Foundation\n" @@ -151,7 +156,23 @@ def generate_file_content(args: argparse.Namespace, modules: Dict[str, Any], rep def main() -> None: parser = argparse.ArgumentParser( - description="Generate score_modules.MODULE.bazel from known_good.json" + description="Generate score_modules.MODULE.bazel from known_good.json", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Generate MODULE.bazel from known_good.json + python3 tools/update_module_from_known_good.py + + # Use a custom input and output file + python3 tools/update_module_from_known_good.py \\ + --known custom_known_good.json \\ + --output custom_modules.MODULE.bazel + + # Preview without writing + python3 tools/update_module_from_known_good.py --dry-run + +Note: To override repository commits, use tools/override_known_good_repo.py first. + """ ) parser.add_argument( "--known", @@ -168,6 +189,11 @@ def main() -> None: action="store_true", help="Print generated content instead of writing to file" ) + parser.add_argument( + "-v", "--verbose", + action="store_true", + help="Enable verbose logging" + ) parser.add_argument( "--repo-override", action="append", @@ -182,6 +208,9 @@ def main() -> None: args = parser.parse_args() + if args.verbose: + logging.getLogger().setLevel(logging.INFO) + known_path = os.path.abspath(args.known) output_path = os.path.abspath(args.output) @@ -203,10 +232,14 @@ def main() -> None: # Load known_good.json data = load_known_good(known_path) - modules = data.get("modules") or {} + modules_dict = data.get("modules") or {} + if not modules_dict: + raise SystemExit("No modules found in known_good.json") + # Parse modules into Module dataclass instances + modules = Module.parse_modules(modules_dict) if not modules: - raise SystemExit("No modules found in known_good.json") + raise SystemExit("No valid modules to process") # Generate file content timestamp = data.get("timestamp") or datetime.now().isoformat() diff --git a/tools/update_module_latest.py b/tools/update_module_latest.py index 210f847c46c..8884485e3ac 100755 --- a/tools/update_module_latest.py +++ b/tools/update_module_latest.py @@ -31,8 +31,8 @@ import json import os import sys -from dataclasses import dataclass -from urllib.parse import urlparse + +from models import Module try: from github import Github, GithubException @@ -43,35 +43,6 @@ GithubException = None -@dataclass -class Module: - name: str - hash: str - repo: str - version: str | None = None - patches: list[str] | None = None - branch: str = "main" - - @property - def owner_repo(self) -> str: - """Return owner/repo part extracted from HTTPS GitHub URL.""" - # Examples: - # https://github.com/eclipse-score/logging.git -> eclipse-score/logging - parsed = urlparse(self.repo) - if parsed.netloc != "github.com": - raise ValueError(f"Not a GitHub URL: {self.repo}") - - # Extract path, remove leading slash and .git suffix - path = parsed.path.lstrip("/").removesuffix(".git") - - # Split and validate owner/repo format - parts = path.split("/", 2) # Split max 2 times to get owner and repo - if len(parts) < 2 or not parts[0] or not parts[1]: - raise ValueError(f"Cannot parse owner/repo from: {self.repo}") - - return f"{parts[0]}/{parts[1]}" - - def fetch_latest_commit(owner_repo: str, branch: str, token: str | None) -> str: """Fetch latest commit sha for given owner_repo & branch using PyGithub.""" if not HAS_PYGITHUB: @@ -123,6 +94,8 @@ def write_known_good(path: str, original: dict, modules: list[Module]) -> None: out["modules"] = {} for m in modules: mod_dict = {"repo": m.repo, "hash": m.hash} + if m.version: + mod_dict["version"] = m.version if m.patches: mod_dict["patches"] = m.patches if m.branch: @@ -209,7 +182,10 @@ def main(argv: list[str]) -> int: latest = fetch_latest_commit_gh(mod.owner_repo, branch) else: latest = fetch_latest_commit(mod.owner_repo, branch, token) - updated.append(Module(name=mod.name, hash=latest, repo=mod.repo, version=mod.version, patches=mod.patches, branch=mod.branch)) + + # Only reuse version if hash did not change + version_to_use = mod.version if latest == mod.hash else None + updated.append(Module(name=mod.name, hash=latest, repo=mod.repo, version=version_to_use, patches=mod.patches, branch=mod.branch)) # Display format: if version exists, show "version -> hash", otherwise "hash -> hash" if mod.version: From ff55c9ecd0056d34ef72b5b8c0545be6486bfdfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Gr=C3=A4per?= <160226396+kgraeper@users.noreply.github.com> Date: Mon, 19 Jan 2026 19:46:58 +0100 Subject: [PATCH 12/55] feat: replace bash integration test script with Python version (#77) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reorganized directory structure: moved tools/ → scripts/known_good/ - Created proper package structure with __init__.py files - Extracted build configuration to external JSON file (build_config.json) - Introduced dataclass models for better type safety: * BuildModuleConfig for build configuration * Module for repository module metadata * KnownGood for known_good.json structure - Separated concerns into dedicated model files: * scripts/models/build_config.py * scripts/known_good/models/module.py * scripts/known_good/models/known_good.py - Refactored all scripts to use KnownGood dataclass: * integration_test.py * override_known_good_repo.py * update_module_latest.py * update_module_from_known_good.py * known_good_to_workspace_metadata.py - Removed duplicate functions (load_modules, load_known_good, write_known_good) - Moved timestamp update logic into KnownGood.write() method - Improved exception handling to catch SystemExit from validation errors - Removed unused get_module_info.py - Eliminated sys.path.insert usage through proper package imports All functionality preserved while improving code quality and type correctness. --- .devcontainer/prepare_workspace.sh | 2 +- .../workflows/reusable_integration-build.yml | 14 +- .github/workflows/reusable_smoke-test.yml | 4 +- .vscode/tasks.json | 6 +- README.md | 2 +- build_config.json | 28 ++ scripts/__init__.py | 1 + scripts/integration_test.py | 362 ++++++++++++++++++ scripts/integration_test.sh | 356 ----------------- scripts/known_good/__init__.py | 1 + .../known_good_to_workspace_metadata.py | 14 +- .../known_good}/models/__init__.py | 0 scripts/known_good/models/known_good.py | 89 +++++ .../known_good}/models/module.py | 2 +- .../known_good}/override_known_good_repo.py | 63 +-- .../known_good}/requirements.txt | 0 .../update_module_from_known_good.py | 47 +-- .../known_good}/update_module_latest.py | 76 +--- scripts/models/__init__.py | 1 + scripts/models/build_config.py | 40 ++ tools/get_module_info.py | 81 ---- 21 files changed, 590 insertions(+), 599 deletions(-) create mode 100644 build_config.json create mode 100644 scripts/__init__.py create mode 100755 scripts/integration_test.py delete mode 100755 scripts/integration_test.sh create mode 100644 scripts/known_good/__init__.py rename {tools => scripts/known_good}/known_good_to_workspace_metadata.py (85%) rename {tools => scripts/known_good}/models/__init__.py (100%) create mode 100644 scripts/known_good/models/known_good.py rename {tools => scripts/known_good}/models/module.py (99%) rename {tools => scripts/known_good}/override_known_good_repo.py (79%) rename {tools => scripts/known_good}/requirements.txt (100%) rename {tools => scripts/known_good}/update_module_from_known_good.py (85%) rename {tools => scripts/known_good}/update_module_latest.py (71%) create mode 100644 scripts/models/__init__.py create mode 100644 scripts/models/build_config.py delete mode 100755 tools/get_module_info.py diff --git a/.devcontainer/prepare_workspace.sh b/.devcontainer/prepare_workspace.sh index 2a2e5ffdef8..0a4207a5b2e 100755 --- a/.devcontainer/prepare_workspace.sh +++ b/.devcontainer/prepare_workspace.sh @@ -19,4 +19,4 @@ export GITA_PROJECT_HOME # Generate workspace metadata files from known_good.json: # - .gita-workspace.csv -python3 tools/known_good_to_workspace_metadata.py --known-good known_good.json --gita-workspace .gita-workspace.csv +python3 scripts/known_good/known_good_to_workspace_metadata.py --known-good known_good.json --gita-workspace .gita-workspace.csv diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml index 0b25f1c92d4..f1723223f70 100644 --- a/.github/workflows/reusable_integration-build.yml +++ b/.github/workflows/reusable_integration-build.yml @@ -7,14 +7,14 @@ # What it does: # - Checks out the reference integration repository # - Updates score_modules.MODULE.bazel from the provided known_good.json -# - Builds all referenced modules (via scripts/integration_test.sh and Bazel) +# - Builds all referenced modules (via scripts/integration_test.py and Bazel) # - Runs integration tests # - Uploads logs from _logs/ as artifact: bazel-build-logs-${{ inputs.config }} # # Inputs: # - known_good (string, required): JSON content used to pin module SHAs. -# - config (string, optional, default: bl-x86_64-linux): Bazel config passed as -# CONFIG to scripts/integration_test.sh. +# - config (string, optional, default: bl-x86_64-linux): Bazel config passed to +# scripts/integration_test.py. # - repo_runner_labels (string, optional): Runner label(s). Accepts either a # single label string (e.g., ubuntu-latest) or a JSON string representing a # label or an array of labels (e.g., "\"ubuntu-latest\"" or @@ -22,7 +22,7 @@ # - target_branch (string, optional, default: main): Ref/branch to checkout. # # Repository Variables: -# - reference_integration_repo (optional): Repository to checkout (owner/repo). +# - REFERENCE_INTEGRATION_REPO (optional): Repository to checkout (owner/repo). # Default: eclipse-score/reference_integration # # Secrets: @@ -77,7 +77,7 @@ on: default: 'main' env: - REFERENCE_INTEGRATION_REPO: ${{ vars.reference_integration_repo != '' && vars.reference_integration_repo || 'eclipse-score/reference_integration' }} + REFERENCE_INTEGRATION_REPO: ${{ vars.REFERENCE_INTEGRATION_REPO != '' && vars.REFERENCE_INTEGRATION_REPO || 'eclipse-score/reference_integration' }} jobs: integration-test: @@ -127,14 +127,14 @@ jobs: echo "::endgroup::" echo "::group::update score_modules.MODULE.bazel" - python3 tools/update_module_from_known_good.py --known known_good.updated.json + python3 scripts/known_good/update_module_from_known_good.py --known known_good.updated.json cat score_modules.MODULE.bazel echo "::endgroup::" env: GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} - name: Bazel build targets run: | - CONFIG="${{ inputs.config }}" scripts/integration_test.sh --known-good known_good.updated.json + python3 scripts/integration_test.py --known-good known_good.updated.json --config "${{ inputs.config }}" env: GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} - name: Show disk space after build diff --git a/.github/workflows/reusable_smoke-test.yml b/.github/workflows/reusable_smoke-test.yml index c76d7562726..ac5326c99d9 100644 --- a/.github/workflows/reusable_smoke-test.yml +++ b/.github/workflows/reusable_smoke-test.yml @@ -95,14 +95,14 @@ jobs: run: | if [ "${{ github.repository }}" != "${{ env.REFERENCE_INTEGRATION_REPO }}" ]; then echo "Overriding ${{ inputs.module_name }} with current PR" - python3 tools/override_known_good_repo.py \ + python3 scripts/known_good/override_known_good_repo.py \ --known known_good.json \ --output known_good.updated.json \ --module-override ${{ inputs.module_name }}@${{ github.event.repository.clone_url }}@${{ github.sha }} else echo "Testing reference integration repository itself - updating to latest commits" echo "::group::get latest commits from module branches" - python3 tools/update_module_latest.py --output known_good.updated.json + python3 scripts/known_good/update_module_latest.py --output known_good.updated.json cat known_good.updated.json echo "::endgroup::" fi diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 5234f5b4f6f..f67340a34d7 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,7 +6,7 @@ "type": "shell", "command": "python3", "args": [ - "tools/known_good_to_workspace_metadata.py" + "scripts/known_good/known_good_to_workspace_metadata.py" ], "problemMatcher": [] }, @@ -15,7 +15,7 @@ "type": "shell", "command": "python3", "args": [ - "tools/update_module_from_known_good.py", + "scripts/known_good/update_module_from_known_good.py", "--override-type", "local_path" ], @@ -26,7 +26,7 @@ "type": "shell", "command": "python3", "args": [ - "tools/update_module_from_known_good.py", + "scripts/known_good/update_module_from_known_good.py", "--override-type", "git" ] diff --git a/README.md b/README.md index e2f67be8f3d..18d238158fb 100644 --- a/README.md +++ b/README.md @@ -202,4 +202,4 @@ local_path_override(module_name = "score_tooling", path = "../tooling") Use `scripts/generate_rust_analyzer_support.sh` to generate rust_analyzer settings that will let VS Code work. ## 🗂 Notes -Keep this file updated as integration issues are resolved. Prefer converting ad-hoc shell steps into Bazel rules or documented scripts under `tools/` for repeatability. +Keep this file updated as integration issues are resolved. Prefer converting ad-hoc shell steps into Bazel rules or documented scripts under `scripts/` for repeatability. diff --git a/build_config.json b/build_config.json new file mode 100644 index 00000000000..85c986fea1f --- /dev/null +++ b/build_config.json @@ -0,0 +1,28 @@ +{ + "modules": { + "score_baselibs": { + "build_targets": "@score_baselibs//score/..." + }, + "score_communication": { + "build_targets": "@score_communication//score/mw/com:com" + }, + "score_persistency": { + "build_targets": "@score_persistency//src/cpp/src/... @score_persistency//src/rust/..." + }, + "score_kyron": { + "build_targets": "@score_kyron//src/..." + }, + "score_orchestrator": { + "build_targets": "@score_orchestrator//src/..." + }, + "score_test_scenarios": { + "build_targets": "@score_test_scenarios//test_scenarios_rust:test_scenarios_rust @score_test_scenarios//test_scenarios_cpp:test_scenarios_cpp" + }, + "score_feo": { + "build_targets": "-- @score_feo//... -@score_feo//:docs -@score_feo//:ide_support -@score_feo//:needs_json" + }, + "score_logging": { + "build_targets": "@score_logging//score/... --@score_baselibs//score/memory/shared/flags:use_typedshmd=False --@score_baselibs//score/json:base_library=nlohmann --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True" + } + } +} diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 00000000000..7994ee43e26 --- /dev/null +++ b/scripts/__init__.py @@ -0,0 +1 @@ +# Scripts package diff --git a/scripts/integration_test.py b/scripts/integration_test.py new file mode 100755 index 00000000000..e08146f0f1b --- /dev/null +++ b/scripts/integration_test.py @@ -0,0 +1,362 @@ +#!/usr/bin/env python3 +"""Integration build script for SCORE modules. + +Captures warning counts for regression tracking and generates build summaries. +""" + +import argparse +import json +import os +import re +import subprocess +import sys +import time +from datetime import datetime +from pathlib import Path +from typing import Dict, Optional, Tuple + +from models.build_config import BuildModuleConfig, load_build_config +from known_good.models import Module +from known_good.models.known_good import load_known_good + +repo_root = Path(__file__).parent.parent + + +def get_module_version_gh(repo_url: str, commit_hash: str) -> Optional[str]: + """Get version tag from GitHub API for a commit hash. + + Args: + repo_url: GitHub repository URL + commit_hash: Commit hash to look up + + Returns: + Tag name if found, None otherwise + """ + # Check if gh CLI is installed + if not subprocess.run(['which', 'gh'], capture_output=True).returncode == 0: + print("::warning::gh CLI not found. Install it to resolve commit hashes to tags.") + return None + + # Extract owner/repo from GitHub URL + match = re.search(r'github\.com[/:]([^/]+)/([^/.]+)(\.git)?$', repo_url) + if not match: + print(f"::warning::Invalid repo URL format: {repo_url}") + return None + + owner, repo = match.group(1), match.group(2) + + print(f"::debug::Querying GitHub API: repos/{owner}/{repo}/tags for commit {commit_hash}") + + try: + result = subprocess.run( + ['gh', 'api', f'repos/{owner}/{repo}/tags', '--jq', + f'.[] | select(.commit.sha == "{commit_hash}") | .name'], + capture_output=True, + text=True, + timeout=10 + ) + + if result.returncode == 0 and result.stdout.strip(): + tag = result.stdout.strip().split('\n')[0] + print(f"::debug::Found tag: {tag}") + return tag + + print(f"::debug::No tag found for commit {commit_hash}") + return None + except Exception as e: + print(f"::warning::Error querying GitHub API: {e}") + return None + + +def truncate_hash(hash_str: str, length: int = 8) -> str: + """Truncate hash to specified length. + + Args: + hash_str: Full hash string + length: Maximum length + + Returns: + Truncated hash + """ + if len(hash_str) > length: + return hash_str[:length] + return hash_str + + +def count_pattern(log_file: Path, pattern: str) -> int: + """Count lines matching pattern in log file. + + Args: + log_file: Path to log file + pattern: Pattern to search for (case-insensitive) + + Returns: + Number of matching lines found + """ + if not log_file.exists(): + return 0 + + count = 0 + with open(log_file, 'r') as f: + for line in f: + if pattern in line.lower(): + count += 1 + return count + + +def get_identifier_and_link(module: Optional[Module]) -> Tuple[Optional[str], str]: + """Get display identifier and link for a module. + + Args: + module: Module instance or None + + Returns: + Tuple of (identifier, link_url) + """ + if not module or not module.hash: + return None, "" + + if module.version: + identifier = module.version + link = f"{module.repo}/releases/tag/{module.version}" if module.repo else "" + else: + # Try to get version from GitHub + if module.repo: + gh_version = get_module_version_gh(module.repo, module.hash) + if gh_version: + identifier = gh_version + link = f"{module.repo}/releases/tag/{gh_version}" + else: + identifier = truncate_hash(module.hash) + link = f"{module.repo}/tree/{module.hash}" + else: + identifier = truncate_hash(module.hash) + link = "" + + return identifier, link + + +def build_group(group_name: str, targets: str, config: str, log_file: Path) -> Tuple[int, int]: + """Build a group of Bazel targets. + + Args: + group_name: Name of the build group + targets: Bazel targets to build + config: Bazel config to use + log_file: Path to log file + + Returns: + Tuple of (exit_code, duration_seconds) + """ + print(f"--- Building group: {group_name} ---") + + # Build command + cmd = ['bazel', 'build', '--verbose_failures', f'--config={config}'] + targets.split() + + print(f"bazel build --verbose_failures --config {config} {targets}") + print(f"::group::Bazel build ({group_name})") + + start_time = time.time() + + # Run build and capture output + with open(log_file, 'w') as f: + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True + ) + + # Stream output to both terminal and file + if process.stdout: + for line in process.stdout: + print(line, end='') + f.write(line) + + process.wait() + + end_time = time.time() + duration = int(end_time - start_time) + + print("::endgroup::") + + return process.returncode, duration + + +def format_commit_version_cell( + group_name: str, + old_modules: Dict[str, Module], + new_modules: Dict[str, Module] +) -> str: + """Format the commit/version cell for the summary table. + + Args: + group_name: Name of the module group + old_modules: Modules from old known_good.json + new_modules: Modules from new known_good.json + + Returns: + Formatted markdown cell content + """ + # Get module info or defaults + old_module = old_modules.get(group_name) + new_module = new_modules.get(group_name) + + if new_module is None or new_module.hash is None: + return "N/A" + + print(f"::debug::Module={group_name}, old_version={old_module.version if old_module else 'None'}, " + f"old_hash={old_module.hash if old_module else 'None'}, " + f"new_version={new_module.version}, " + f"new_hash={new_module.hash}, " + f"repo={new_module.repo}") + + # Get identifiers and links + old_identifier, old_link = get_identifier_and_link(old_module) + + # Check if hash changed + hash_changed = old_module is None or old_module.hash != new_module.hash + + # Determine new identifier only if hash changed + new_identifier, new_link = (None, "") if not hash_changed else get_identifier_and_link(new_module) + + # Format output + if hash_changed: + # Hash changed - show old -> new + if new_module.repo and old_module and old_link and new_link and old_module.hash and new_identifier: + return f"[{old_identifier}]({old_link}) → [{new_identifier}]({new_link}) ([diff]({new_module.repo}/compare/{old_module.hash}...{new_module.hash}))" + elif new_module.repo and new_link and new_identifier: + return f"{old_identifier} → [{new_identifier}]({new_link})" + elif new_identifier: + return f"{old_identifier} → {new_identifier}" + else: + return "N/A" + elif old_identifier: + # Hash not changed - show only old + if old_link: + return f"[{old_identifier}]({old_link})" + else: + return old_identifier + else: + return "N/A" + + +def main(): + """Main entry point.""" + parser = argparse.ArgumentParser( + description='Integration build script for SCORE modules', + formatter_class=argparse.RawDescriptionHelpFormatter + ) + parser.add_argument( + '--known-good', + type=Path, + default=None, + help='Path to known_good.json file (default: known_good.json in repo root)' + ) + parser.add_argument( + '--build-config', + type=Path, + default=None, + help='Path to build_config.json file (default: build_config.json in repo root)' + ) + parser.add_argument( + '--config', + default=os.environ.get('CONFIG', 'bl-x86_64-linux'), + help='Bazel config to use (default: bl-x86_64-linux, or from CONFIG env var)' + ) + + args = parser.parse_args() + + # Configuration + config = args.config + log_dir = Path(os.environ.get('LOG_DIR', '_logs/logs')) + summary_file = Path(os.environ.get('SUMMARY_FILE', '_logs/build_summary.md')) + + known_good_file = args.known_good + if not known_good_file: + known_good_file = repo_root / 'known_good.json' + + build_config_file = args.build_config + if not build_config_file: + build_config_file = repo_root / 'build_config.json' + + # Load build configuration + BUILD_TARGET_GROUPS = load_build_config(build_config_file) + + # Create log directory + log_dir.mkdir(parents=True, exist_ok=True) + summary_file.parent.mkdir(parents=True, exist_ok=True) + + # Load modules from known_good files + old_modules = load_known_good(Path('known_good.json')).modules if Path('known_good.json').exists() else {} + new_modules = load_known_good(known_good_file).modules if known_good_file else {} + + # Start summary + timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + with open(summary_file, 'w') as f: + f.write(f"=== Integration Build Started {timestamp} ===\n") + f.write(f"Config: {config}\n") + if known_good_file: + f.write(f"Known Good File: {known_good_file}\n") + f.write("\n") + f.write("## Build Groups Summary\n") + f.write("\n") + f.write("| Group | Status | Duration (s) | Warnings | Deprecated refs | Commit/Version |\n") + f.write("|-------|--------|--------------|----------|-----------------|----------------|\n") + + print(f"=== Integration Build Started {timestamp} ===") + print(f"Config: {config}") + if known_good_file: + print(f"Known Good File: {known_good_file}") + + overall_warn_total = 0 + overall_depr_total = 0 + any_failed = False + + # Build each group + for group_name, module_config in BUILD_TARGET_GROUPS.items(): + log_file = log_dir / f"{group_name}.log" + + exit_code, duration = build_group(group_name, module_config.build_targets, config, log_file) + + if exit_code != 0: + any_failed = True + + # Count warnings and deprecated + warn_count = count_pattern(log_file, 'warning:') + depr_count = count_pattern(log_file, 'deprecated') + overall_warn_total += warn_count + overall_depr_total += depr_count + + # Format status + status_symbol = "✅" if exit_code == 0 else f"❌({exit_code})" + + # Format commit/version cell + commit_version_cell = format_commit_version_cell(group_name, old_modules, new_modules) + + # Append row to summary + row = f"| {group_name} | {status_symbol} | {duration} | {warn_count} | {depr_count} | {commit_version_cell} |\n" + with open(summary_file, 'a') as f: + f.write(row) + print(row.strip()) + + # Append totals + with open(summary_file, 'a') as f: + f.write(f"| TOTAL | | | {overall_warn_total} | {overall_depr_total} | |\n") + + # Print summary + print('::group::Build Summary') + print('=== Build Summary ===') + with open(summary_file, 'r') as f: + for line in f: + print(line, end='') + print('::endgroup::') + + # Exit with error if any build failed + if any_failed: + print("::error::One or more build groups failed. See summary above.") + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/scripts/integration_test.sh b/scripts/integration_test.sh deleted file mode 100755 index 20947b1d30e..00000000000 --- a/scripts/integration_test.sh +++ /dev/null @@ -1,356 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Integration build script. -# Captures warning counts for regression tracking. -# -# Usage: ./integration_test.sh [--known-good ] -# --known-good: Optional path to known_good.json file - -CONFIG=${CONFIG:-bl-x86_64-linux} -LOG_DIR=${LOG_DIR:-_logs/logs} -SUMMARY_FILE=${SUMMARY_FILE:-_logs/build_summary.md} -KNOWN_GOOD_FILE="" -script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -# Go up one level to get the repository root since this script is in scripts/ directory -repo_root="$(cd "${script_dir}/.." && pwd)" - -# Set default known_good.json if it exists -if [[ -z "${KNOWN_GOOD_FILE}" ]] && [[ -f "known_good.json" ]]; then - KNOWN_GOOD_FILE="known_good.json" -fi - -# maybe move this to known_good.json or a config file later -declare -A BUILD_TARGET_GROUPS=( - [score_baselibs]="@score_baselibs//score/..." - [score_communication]="@score_communication//score/mw/com:com" - [score_persistency]="@score_persistency//src/cpp/src/... @score_persistency//src/rust/..." - [score_kyron]="@score_kyron//src/..." - [score_orchestrator]="@score_orchestrator//src/..." - [score_test_scenarios]="@score_test_scenarios//test_scenarios_rust:test_scenarios_rust @score_test_scenarios//test_scenarios_cpp:test_scenarios_cpp" - [score_feo]="-- @score_feo//... -@score_feo//:docs -@score_feo//:ide_support -@score_feo//:needs_json" - [score_logging]="@score_logging//score/... \ - --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ - --@score_baselibs//score/json:base_library=nlohmann \ - --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ - --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ - --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ - --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ - --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ - --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True " -) - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - --known-good) - KNOWN_GOOD_FILE="$2" - shift 2 - ;; - *) - echo "Unknown option: $1" - echo "Usage: $0 [--known-good ]" - exit 1 - ;; - esac -done - -mkdir -p "${LOG_DIR}" || true - -# Function to extract commit hash from known_good.json -get_commit_hash() { - local module_name=$1 - local known_good_file=$2 - - if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then - echo "N/A" - return - fi - - # Use the Python script to extract module info - local result - result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "hash" 2>&1) - if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then - echo "${result}" - else - echo "N/A" - fi -} - -# Function to extract repo URL from known_good.json -get_module_repo() { - local module_name=$1 - local known_good_file=$2 - - if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then - echo "N/A" - return - fi - - # Use the Python script to extract module repo - local result - result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "repo" 2>&1) - if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then - echo "${result}" - else - echo "N/A" - fi -} - -# Function to extract version from known_good.json -get_module_version() { - local module_name=$1 - local known_good_file=$2 - - if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then - echo "N/A" - return - fi - - # Use the Python script to extract module version - local result - result=$(python3 "${repo_root}/tools/get_module_info.py" "${known_good_file}" "${module_name}" "version" 2>&1) - if [[ $? -eq 0 ]] && [[ -n "${result}" ]] && [[ "${result}" != "N/A" ]]; then - echo "${result}" - else - echo "N/A" - fi -} - -get_module_version_gh() { - local module_name=$1 - local known_good_file=$2 - local repo_url=$3 - local commit_hash=$4 - - if [[ -z "${known_good_file}" ]] || [[ ! -f "${known_good_file}" ]]; then - echo "::warning::get_module_version_gh: known_good_file not found or empty" >&2 - echo "N/A" - return - fi - - # Check if gh CLI is installed - if ! command -v gh &> /dev/null; then - echo "::warning::gh CLI not found. Install it to resolve commit hashes to tags." >&2 - echo "N/A" - return - fi - - echo "::debug::get_module_version_gh: module=${module_name}, repo=${repo_url}, hash=${commit_hash}" >&2 - - # Extract owner/repo from GitHub URL - if [[ "${repo_url}" =~ github\.com[/:]([^/]+)/([^/.]+)(\.git)?$ ]]; then - local owner="${BASH_REMATCH[1]}" - local repo="${BASH_REMATCH[2]}" - - echo "::debug::Querying GitHub API: repos/${owner}/${repo}/tags for commit ${commit_hash}" >&2 - - # Query GitHub API for tags and find matching commit - local tag_name - tag_name=$(gh api "repos/${owner}/${repo}/tags" --jq ".[] | select(.commit.sha == \"${commit_hash}\") | .name" 2>/dev/null | head -n1) - - if [[ -n "${tag_name}" ]]; then - echo "::debug::Found tag: ${tag_name}" >&2 - echo "${tag_name}" - else - echo "::debug::No tag found for commit ${commit_hash}" >&2 - echo "N/A" - fi - else - echo "::warning::Invalid repo URL format: ${repo_url}" >&2 - echo "N/A" - fi -} - -# Helper function to truncate hash -truncate_hash() { - local hash=$1 - if [[ ${#hash} -gt 8 ]]; then - echo "${hash:0:8}" - else - echo "${hash}" - fi -} - -warn_count() { - # Grep typical compiler and Bazel warnings; adjust patterns as needed. - local file=$1 - # Count lines with 'warning:' excluding ones from system headers optionally later. - grep -i 'warning:' "$file" | wc -l || true -} - -depr_count() { - local file=$1 - grep -i 'deprecated' "$file" | wc -l || true -} - -timestamp() { date '+%Y-%m-%d %H:%M:%S'; } - -echo "=== Integration Build Started $(timestamp) ===" | tee "${SUMMARY_FILE}" -echo "Config: ${CONFIG}" | tee -a "${SUMMARY_FILE}" -if [[ -n "${KNOWN_GOOD_FILE}" ]]; then - echo "Known Good File: ${KNOWN_GOOD_FILE}" | tee -a "${SUMMARY_FILE}" -fi -echo "" >> "${SUMMARY_FILE}" -echo "## Build Groups Summary" >> "${SUMMARY_FILE}" -echo "" >> "${SUMMARY_FILE}" -# Markdown table header -{ - echo "| Group | Status | Duration (s) | Warnings | Deprecated refs | Commit/Version |"; - echo "|-------|--------|--------------|----------|-----------------|----------------|"; -} >> "${SUMMARY_FILE}" - -overall_warn_total=0 -overall_depr_total=0 - -# Track if any build group failed -any_failed=0 - -for group in "${!BUILD_TARGET_GROUPS[@]}"; do - targets="${BUILD_TARGET_GROUPS[$group]}" - log_file="${LOG_DIR}/${group}.log" - - # Log build group banner only to stdout/stderr (not into summary table file) - echo "--- Building group: ${group} ---" - start_ts=$(date +%s) - echo "bazel build --verbose_failures --config "${CONFIG}" ${targets}" - # GitHub Actions log grouping start - echo "::group::Bazel build (${group})" - set +e - bazel build --verbose_failures --config "${CONFIG}" ${targets} 2>&1 | tee "$log_file" - build_status=${PIPESTATUS[0]} - # Track if any build group failed - if [[ ${build_status} -ne 0 ]]; then - any_failed=1 - fi - set -e - echo "::endgroup::" # End Bazel build group - end_ts=$(date +%s) - duration=$(( end_ts - start_ts )) - w_count=$(warn_count "$log_file") - d_count=$(depr_count "$log_file") - overall_warn_total=$(( overall_warn_total + w_count )) - overall_depr_total=$(( overall_depr_total + d_count )) - # Append as a markdown table row (duration without trailing 's') - if [[ ${build_status} -eq 0 ]]; then - status_symbol="✅" - else - status_symbol="❌(${build_status})" - fi - - # Get commit hash/version for this group (group name is the module name) - commit_hash=$(get_commit_hash "${group}" "${KNOWN_GOOD_FILE}") - commit_hash_old=$(get_commit_hash "${group}" "known_good.json") - version=$(get_module_version "${group}" "${KNOWN_GOOD_FILE}") - repo=$(get_module_repo "${group}" "${KNOWN_GOOD_FILE}") - - # Debug output - echo "::debug::Module=${group}, version=${version}, hash=${commit_hash}, hash_old=${commit_hash_old}, repo=${repo}" >&2 - - # Determine what to display and link to - # Step 1: Determine old version/hash identifier - old_identifier="N/A" - old_link="" - if [[ "${commit_hash_old}" != "N/A" ]]; then - echo "::debug::Step 1: Getting old version for ${group}" >&2 - version_old=$(get_module_version "${group}" "known_good.json") - echo "::debug::version_old from JSON: ${version_old}" >&2 - if [[ "${version_old}" == "N/A" ]]; then - # Try to get version from GitHub API - echo "::debug::Trying to resolve version_old from GitHub for ${group}" >&2 - version_old=$(get_module_version_gh "${group}" "known_good.json" "${repo}" "${commit_hash_old}") - echo "::debug::version_old from GitHub: ${version_old}" >&2 - fi - - # Prefer version over hash - if [[ "${version_old}" != "N/A" ]]; then - old_identifier="${version_old}" - if [[ "${repo}" != "N/A" ]]; then - old_link="${repo}/releases/tag/${version_old}" - fi - else - old_identifier=$(truncate_hash "${commit_hash_old}") - if [[ "${repo}" != "N/A" ]]; then - old_link="${repo}/tree/${commit_hash_old}" - fi - fi - echo "::debug::old_identifier=${old_identifier}" >&2 - fi - - # Step 2: Determine if hash changed - hash_changed=0 - if [[ "${commit_hash_old}" != "N/A" ]] && [[ "${commit_hash}" != "N/A" ]] && [[ "${commit_hash}" != "${commit_hash_old}" ]]; then - hash_changed=1 - fi - echo "::debug::hash_changed=${hash_changed}" >&2 - - # Step 3: Determine new version/hash identifier (only if hash changed) - new_identifier="N/A" - new_link="" - if [[ ${hash_changed} -eq 1 ]] && [[ "${commit_hash}" != "N/A" ]]; then - echo "::debug::Step 3: Hash changed, getting new version for ${group}" >&2 - # Try to get version from known_good file first, then GitHub API - if [[ "${version}" == "N/A" ]]; then - echo "::debug::Trying to resolve new version from GitHub for ${group}" >&2 - version=$(get_module_version_gh "${group}" "${KNOWN_GOOD_FILE}" "${repo}" "${commit_hash}") - echo "::debug::new version from GitHub: ${version}" >&2 - fi - - # Prefer version over hash - if [[ "${version}" != "N/A" ]]; then - new_identifier="${version}" - if [[ "${repo}" != "N/A" ]]; then - new_link="${repo}/releases/tag/${version}" - fi - else - new_identifier=$(truncate_hash "${commit_hash}") - if [[ "${repo}" != "N/A" ]]; then - new_link="${repo}/tree/${commit_hash}" - fi - fi - echo "::debug::new_identifier=${new_identifier}" >&2 - fi - - # Step 4: Format output based on whether hash changed - echo "::debug::Formatting output: hash_changed=${hash_changed}, old=${old_identifier}, new=${new_identifier}" >&2 - if [[ ${hash_changed} -eq 1 ]]; then - # Hash changed - show old -> new - if [[ "${repo}" != "N/A" ]] && [[ -n "${old_link}" ]] && [[ -n "${new_link}" ]]; then - commit_version_cell="[${old_identifier}](${old_link}) → [${new_identifier}](${new_link}) ([diff](${repo}/compare/${commit_hash_old}...${commit_hash}))" - else - commit_version_cell="${old_identifier} → ${new_identifier}" - fi - elif [[ "${old_identifier}" != "N/A" ]]; then - # Hash not changed - show only old - if [[ "${repo}" != "N/A" ]] && [[ -n "${old_link}" ]]; then - commit_version_cell="[${old_identifier}](${old_link})" - else - commit_version_cell="${old_identifier}" - fi - elif [[ "${new_identifier}" != "N/A" ]]; then - # No old available - show new - if [[ "${repo}" != "N/A" ]] && [[ -n "${new_link}" ]]; then - commit_version_cell="[${new_identifier}](${new_link})" - else - commit_version_cell="${new_identifier}" - fi - else - # Nothing available - commit_version_cell="N/A" - fi - - echo "| ${group} | ${status_symbol} | ${duration} | ${w_count} | ${d_count} | ${commit_version_cell} |" | tee -a "${SUMMARY_FILE}" -done - -# Append aggregate totals row to summary table -echo "| TOTAL | | | ${overall_warn_total} | ${overall_depr_total} | |" >> "${SUMMARY_FILE}" -echo '::group::Build Summary' -echo '=== Build Summary (echo) ===' -cat "${SUMMARY_FILE}" || echo "(Could not read summary file ${SUMMARY_FILE})" -echo '::endgroup::' - -# Report to GitHub Actions if any build group failed -if [[ ${any_failed} -eq 1 ]]; then - echo "::error::One or more build groups failed. See summary above." - exit 1 -fi diff --git a/scripts/known_good/__init__.py b/scripts/known_good/__init__.py new file mode 100644 index 00000000000..eac8e9d3f50 --- /dev/null +++ b/scripts/known_good/__init__.py @@ -0,0 +1 @@ +# Known good utilities package diff --git a/tools/known_good_to_workspace_metadata.py b/scripts/known_good/known_good_to_workspace_metadata.py similarity index 85% rename from tools/known_good_to_workspace_metadata.py rename to scripts/known_good/known_good_to_workspace_metadata.py index dd9e3ad8b87..f77b738cbbb 100644 --- a/tools/known_good_to_workspace_metadata.py +++ b/scripts/known_good/known_good_to_workspace_metadata.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 import argparse -import json import csv +from pathlib import Path -from models import Module +from models.known_good import load_known_good MODULES_CSV_HEADER = [ "repo_url", @@ -21,13 +21,9 @@ def main(): parser.add_argument("--gita-workspace", dest="gita_workspace", default=".gita-workspace.csv", help="File to output gita workspace metadata") args = parser.parse_args() - with open(args.known_good, "r") as f: - data = json.load(f) - - modules_dict = data.get("modules", {}) - - # Parse modules using Module dataclass - modules = Module.parse_modules(modules_dict) + # Load known_good using KnownGood dataclass + known_good = load_known_good(Path(args.known_good)) + modules = list(known_good.modules.values()) gita_metadata = [] for module in modules: diff --git a/tools/models/__init__.py b/scripts/known_good/models/__init__.py similarity index 100% rename from tools/models/__init__.py rename to scripts/known_good/models/__init__.py diff --git a/scripts/known_good/models/known_good.py b/scripts/known_good/models/known_good.py new file mode 100644 index 00000000000..70fedc3e0a2 --- /dev/null +++ b/scripts/known_good/models/known_good.py @@ -0,0 +1,89 @@ +"""KnownGood dataclass for score reference integration.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Dict +from pathlib import Path +import json +import datetime as dt + +from .module import Module + + +@dataclass +class KnownGood: + """Known good configuration with modules and metadata.""" + modules: Dict[str, Module] + timestamp: str + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> KnownGood: + """Create a KnownGood instance from a dictionary. + + Args: + data: Dictionary containing known_good.json data + + Returns: + KnownGood instance + """ + modules_dict = data.get('modules', {}) + modules_list = Module.parse_modules(modules_dict) + modules = {m.name: m for m in modules_list} + timestamp = data.get('timestamp', '') + + return cls(modules=modules, timestamp=timestamp) + + def to_dict(self) -> Dict[str, Any]: + """Convert KnownGood instance to dictionary for JSON output. + + Returns: + Dictionary with known_good configuration + """ + return { + "modules": {name: module.to_dict() for name, module in self.modules.items()}, + "timestamp": self.timestamp + } + + def write(self, output_path: Path, dry_run: bool = False) -> None: + """Write known_good data to file or print for dry-run. + + Args: + output_path: Path to output file + dry_run: If True, print instead of writing + """ + + # Update timestamp before writing + self.timestamp = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" + + output_json = json.dumps(self.to_dict(), indent=4, sort_keys=False) + "\n" + + if dry_run: + print(f"\nDry run: would write to {output_path}\n") + print("---- BEGIN UPDATED JSON ----") + print(output_json, end="") + print("---- END UPDATED JSON ----") + else: + with open(output_path, "w", encoding="utf-8") as f: + f.write(output_json) + print(f"Successfully wrote updated known_good.json to {output_path}") + + +def load_known_good(path: Path) -> KnownGood: + """Load and parse the known_good.json file. + + Args: + path: Path to known_good.json file + + Returns: + KnownGood instance with parsed modules + """ + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + + if not isinstance(data, dict) or not isinstance(data.get("modules"), dict): + raise SystemExit( + f"Invalid known_good.json at {path} (expected object with 'modules' dict)" + ) + + return KnownGood.from_dict(data) diff --git a/tools/models/module.py b/scripts/known_good/models/module.py similarity index 99% rename from tools/models/module.py rename to scripts/known_good/models/module.py index 3db3354e517..259f4f2861d 100644 --- a/tools/models/module.py +++ b/scripts/known_good/models/module.py @@ -97,7 +97,7 @@ def to_dict(self) -> Dict[str, Any]: Returns: Dictionary with module configuration """ - result = { + result: Dict[str, Any] = { "repo": self.repo, "hash": self.hash } diff --git a/tools/override_known_good_repo.py b/scripts/known_good/override_known_good_repo.py similarity index 79% rename from tools/override_known_good_repo.py rename to scripts/known_good/override_known_good_repo.py index d892d583212..ecb573fe400 100755 --- a/tools/override_known_good_repo.py +++ b/scripts/known_good/override_known_good_repo.py @@ -13,31 +13,20 @@ update_module_from_known_good.py to generate the MODULE.bazel file. """ import argparse -import json import os import re import datetime as dt -from typing import Dict, Any, List +from pathlib import Path +from typing import Dict, List import logging from models import Module +from models.known_good import KnownGood, load_known_good # Configure logging logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') -def load_known_good(path: str) -> Dict[str, Any]: - """Load and parse the known_good.json file.""" - with open(path, "r", encoding="utf-8") as f: - data = json.load(f) - - if isinstance(data, dict) and isinstance(data.get("modules"), dict): - return data - raise SystemExit( - f"Invalid known_good.json at {path} (expected object with 'modules' dict)" - ) - - def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[str]) -> int: """ Parse repo override arguments and apply them to modules. @@ -139,44 +128,28 @@ def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[s return overrides_applied -def apply_overrides(data: Dict[str, Any], repo_overrides: List[str]) -> Dict[str, Any]: - """Apply repository commit overrides to the known_good data.""" - modules_dict = data.get("modules", {}) - - # Parse modules into Module instances (skip validation since we're just overriding) - modules_list = [Module.from_dict(name, mod_data) for name, mod_data in modules_dict.items()] - modules = {m.name: m for m in modules_list} +def apply_overrides(known_good: KnownGood, repo_overrides: List[str]) -> KnownGood: + """Apply repository commit overrides to the known_good data. + Args: + known_good: KnownGood instance to modify + repo_overrides: List of override strings + + Returns: + Updated KnownGood instance + """ # Parse and apply overrides - overrides_applied = parse_and_apply_overrides(modules, repo_overrides) + overrides_applied = parse_and_apply_overrides(known_good.modules, repo_overrides) if overrides_applied == 0: logging.warning("No overrides were applied to any modules") else: logging.info(f"Successfully applied {overrides_applied} override(s)") - # Convert modules back to dict format - data["modules"] = {name: module.to_dict() for name, module in modules.items()} - # Update timestamp - data["timestamp"] = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" + known_good.timestamp = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" - return data - - -def write_known_good(data: Dict[str, Any], output_path: str, dry_run: bool = False) -> None: - """Write known_good data to file or print for dry-run.""" - output_json = json.dumps(data, indent=4, sort_keys=False) + "\n" - - if dry_run: - print(f"\nDry run: would write to {output_path}\n") - print("---- BEGIN UPDATED JSON ----") - print(output_json, end="") - print("---- END UPDATED JSON ----") - else: - with open(output_path, "w", encoding="utf-8") as f: - f.write(output_json) - logging.info(f"Successfully wrote updated known_good.json to {output_path}") + return known_good def main() -> None: @@ -250,15 +223,15 @@ def main() -> None: # Load, update, and output logging.info(f"Loading {known_path}") - data = load_known_good(known_path) + known_good = load_known_good(known_path) if not args.module_overrides: parser.error("at least one --module-override is required") overrides = args.module_overrides - updated_data = apply_overrides(data, overrides) - write_known_good(updated_data, output_path, args.dry_run) + updated_known_good = apply_overrides(known_good, overrides) + updated_known_good.write(Path(output_path), args.dry_run) if __name__ == "__main__": diff --git a/tools/requirements.txt b/scripts/known_good/requirements.txt similarity index 100% rename from tools/requirements.txt rename to scripts/known_good/requirements.txt diff --git a/tools/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py similarity index 85% rename from tools/update_module_from_known_good.py rename to scripts/known_good/update_module_from_known_good.py index a2c6c720eb1..49101e354e8 100755 --- a/tools/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -4,42 +4,29 @@ with `bazel_dep` and `git_override` calls for each module in the JSON. Usage: - python3 tools/update_module_from_known_good.py \ + python3 scripts/known_good/update_module_from_known_good.py \ --known known_good.json \ --output score_modules.MODULE.bazel The generated score_modules.MODULE.bazel file is included by MODULE.bazel. Note: To override repository commits before generating the MODULE.bazel file, -use tools/override_known_good_repo.py first to create an updated known_good.json. +use scripts/known_good/override_known_good_repo.py first to create an updated known_good.json. """ import argparse -import json import os import re -from datetime import datetime import logging -from typing import Dict, List, Any, Optional +from typing import Dict, List, Optional +from pathlib import Path from models import Module +from models.known_good import load_known_good # Configure logging logging.basicConfig(level=logging.WARNING, format='%(levelname)s: %(message)s') -def load_known_good(path: str) -> Dict[str, Any]: - """Load and parse the known_good.json file.""" - with open(path, "r", encoding="utf-8") as f: - data = json.load(f) - - # Expect a single JSON object containing a "modules" dict/object - if isinstance(data, dict) and isinstance(data.get("modules"), dict): - return data - raise SystemExit( - f"Invalid known_good.json at {path} (expected object with 'modules' dict)" - ) - - def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[str, str]) -> List[str]: """Generate bazel_dep and git_override blocks for each module.""" blocks = [] @@ -134,7 +121,7 @@ def generate_file_content(args: argparse.Namespace, modules: List[Module], repo_ if timestamp: header += ( f"# Generated from known_good.json at {timestamp}\n" - "# Do not edit manually - use tools/update_module_from_known_good.py\n" + "# Do not edit manually - use scripts/known_good/update_module_from_known_good.py\n" "\n" ) @@ -161,17 +148,17 @@ def main() -> None: epilog=""" Examples: # Generate MODULE.bazel from known_good.json - python3 tools/update_module_from_known_good.py + python3 scripts/known_good/update_module_from_known_good.py # Use a custom input and output file - python3 tools/update_module_from_known_good.py \\ + python3 scripts/known_good/update_module_from_known_good.py \\ --known custom_known_good.json \\ --output custom_modules.MODULE.bazel # Preview without writing - python3 tools/update_module_from_known_good.py --dry-run + python3 scripts/known_good/update_module_from_known_good.py --dry-run -Note: To override repository commits, use tools/override_known_good_repo.py first. +Note: To override repository commits, use scripts/known_good/override_known_good_repo.py first. """ ) parser.add_argument( @@ -231,19 +218,15 @@ def main() -> None: repo_commit_dict[repo_url] = commit_hash # Load known_good.json - data = load_known_good(known_path) - modules_dict = data.get("modules") or {} - if not modules_dict: + known_good = load_known_good(Path(known_path)) + if not known_good.modules: raise SystemExit("No modules found in known_good.json") - # Parse modules into Module dataclass instances - modules = Module.parse_modules(modules_dict) - if not modules: - raise SystemExit("No valid modules to process") + # Get modules list + modules = list(known_good.modules.values()) # Generate file content - timestamp = data.get("timestamp") or datetime.now().isoformat() - content = generate_file_content(args, modules, repo_commit_dict, timestamp) + content = generate_file_content(args, modules, repo_commit_dict, known_good.timestamp) if args.dry_run: print(f"Dry run: would write to {output_path}\n") diff --git a/tools/update_module_latest.py b/scripts/known_good/update_module_latest.py similarity index 71% rename from tools/update_module_latest.py rename to scripts/known_good/update_module_latest.py index 8884485e3ac..3a93f639a0d 100755 --- a/tools/update_module_latest.py +++ b/scripts/known_good/update_module_latest.py @@ -27,12 +27,12 @@ import argparse import shutil import subprocess -import datetime as dt import json import os import sys +from pathlib import Path -from models import Module +from models.known_good import load_known_good try: from github import Github, GithubException @@ -83,29 +83,6 @@ def fetch_latest_commit_gh(owner_repo: str, branch: str) -> str: return sha -def load_known_good(path: str) -> dict: - with open(path, "r", encoding="utf-8") as f: - return json.load(f) - - -def write_known_good(path: str, original: dict, modules: list[Module]) -> None: - out = dict(original) # shallow copy - out["timestamp"] = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" - out["modules"] = {} - for m in modules: - mod_dict = {"repo": m.repo, "hash": m.hash} - if m.version: - mod_dict["version"] = m.version - if m.patches: - mod_dict["patches"] = m.patches - if m.branch: - mod_dict["branch"] = m.branch - out["modules"][m.name] = mod_dict - with open(path, "w", encoding="utf-8") as f: - json.dump(out, f, indent=4, sort_keys=False) - f.write("\n") - - def parse_args(argv: list[str]) -> argparse.Namespace: p = argparse.ArgumentParser(description="Update module hashes to latest commit on branch") p.add_argument( @@ -123,43 +100,20 @@ def parse_args(argv: list[str]) -> argparse.Namespace: def main(argv: list[str]) -> int: args = parse_args(argv) try: - data = load_known_good(args.known_good) - except OSError as e: - print(f"ERROR: Cannot read known_good file: {e}", file=sys.stderr) + known_good = load_known_good(Path(args.known_good)) + except (OSError, SystemExit) as e: + print(f"ERROR: Cannot read or parse known_good file: {e}", file=sys.stderr) return 3 except json.JSONDecodeError as e: - print(f"ERROR: Invalid JSON: {e}", file=sys.stderr) + print(f"ERROR: Invalid JSON syntax: {e}", file=sys.stderr) return 3 - modules_raw = data.get("modules", {}) - modules: list[Module] = [] - for name, m in modules_raw.items(): - try: - version = m.get("version") - hash_val = m.get("hash", "") - patches = m.get("patches") - repo = m.get("repo") - branch = m.get("branch") - if not repo: - print(f"WARNING: skipping module {name} with missing repo", file=sys.stderr) - continue - modules.append(Module( - name=name, - hash=hash_val, - repo=repo, - version=version, - patches=patches, - branch=branch - )) - except KeyError as e: - print(f"WARNING: skipping module {name} missing key {e}: {m}", file=sys.stderr) - if not modules: + if not known_good.modules: print("ERROR: No modules found to update.", file=sys.stderr) return 3 token = os.environ.get("GITHUB_TOKEN") failures = 0 - updated: list[Module] = [] # Default: use gh if available unless --no-gh specified use_gh = (not args.no_gh) and shutil.which("gh") is not None @@ -174,7 +128,7 @@ def main(argv: list[str]) -> int: if args.no_gh and shutil.which("gh") is not None: print("INFO: --no-gh specified; ignoring installed 'gh' CLI", file=sys.stderr) - for mod in modules: + for mod in known_good.modules.values(): try: # Use module-specific branch if available, otherwise use command-line branch branch = mod.branch if mod.branch else args.branch @@ -184,25 +138,25 @@ def main(argv: list[str]) -> int: latest = fetch_latest_commit(mod.owner_repo, branch, token) # Only reuse version if hash did not change - version_to_use = mod.version if latest == mod.hash else None - updated.append(Module(name=mod.name, hash=latest, repo=mod.repo, version=version_to_use, patches=mod.patches, branch=mod.branch)) + if latest != mod.hash: + mod.hash = latest + mod.version = None # Clear version when hash changes # Display format: if version exists, show "version -> hash", otherwise "hash -> hash" if mod.version: print(f"{mod.name}: {mod.version} -> {latest[:8]} (branch {branch})") else: - print(f"{mod.name}: {mod.hash[:8]} -> {latest[:8]} (branch {branch})") + old_hash = known_good.modules[mod.name].hash + print(f"{mod.name}: {old_hash[:8]} -> {latest[:8]} (branch {branch})") except Exception as e: # noqa: BLE001 failures += 1 print(f"ERROR {mod.name}: {e}", file=sys.stderr) if args.fail_fast: break - # Preserve old hash if continuing - updated.append(mod) - if args.output and updated: + if args.output: try: - write_known_good(args.output, data, updated) + known_good.write(Path(args.output)) print(f"Updated JSON written to {args.output}") except OSError as e: print(f"ERROR: Failed writing output file: {e}", file=sys.stderr) diff --git a/scripts/models/__init__.py b/scripts/models/__init__.py new file mode 100644 index 00000000000..f3d9f4b1ed5 --- /dev/null +++ b/scripts/models/__init__.py @@ -0,0 +1 @@ +# Models package diff --git a/scripts/models/build_config.py b/scripts/models/build_config.py new file mode 100644 index 00000000000..b7975f6be81 --- /dev/null +++ b/scripts/models/build_config.py @@ -0,0 +1,40 @@ +"""Build configuration management for SCORE modules.""" + +import json +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Optional + + +@dataclass +class BuildModuleConfig: + """Configuration for a build module.""" + name: str + build_targets: str + test_targets: Optional[str] = None + + +def load_build_config(config_path: Path) -> Dict[str, BuildModuleConfig]: + """Load build configuration from JSON file. + + Args: + config_path: Path to build_config.json file + + Returns: + Dictionary mapping module names to BuildModuleConfig instances + """ + if not config_path.exists(): + raise FileNotFoundError(f"Build config file not found: {config_path}") + + with open(config_path, 'r') as f: + data = json.load(f) + + modules = data.get('modules', {}) + return { + name: BuildModuleConfig( + name=name, + build_targets=module_data.get('build_targets', ''), + test_targets=module_data.get('test_targets') + ) + for name, module_data in modules.items() + } diff --git a/tools/get_module_info.py b/tools/get_module_info.py deleted file mode 100755 index 45286d92927..00000000000 --- a/tools/get_module_info.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env python3 -"""Extract module information from known_good.json.""" - -import json -import sys -from typing import Optional - -from models import Module - - -def load_module(known_good_file: str, module_name: str) -> Optional[Module]: - """ - Load module from known_good.json. - - Args: - known_good_file: Path to the known_good.json file - module_name: Name of the module to look up - - Returns: - Module instance, or None if not found - """ - try: - with open(known_good_file, 'r') as f: - data = json.load(f) - modules_dict = data.get('modules', {}) - module_data = modules_dict.get(module_name) - - if not module_data: - return None - - return Module.from_dict(module_name, module_data) - except Exception as e: - # Log error to stderr for debugging - print(f"Error loading {known_good_file}: {e}", file=sys.stderr) - return None - - -def get_module_field(module: Optional[Module], field: str = 'hash') -> str: - """ - Extract a specific field from module. - - Args: - module: Module instance - field: Field to extract ('hash', 'version', 'repo', or 'all') - - Returns: - Requested field value, or 'N/A' if not found - For 'hash': returns the hash value - For 'all': returns hash/version (prefers hash, falls back to version) - """ - if not module: - return 'N/A' - - if field == 'repo': - repo = module.repo or 'N/A' - # Remove .git suffix if present - if repo.endswith('.git'): - repo = repo[:-4] - return repo - elif field == 'version': - return module.version or 'N/A' - elif field == 'hash': - return module.hash or 'N/A' - else: # field == 'all' or default - return module.hash or module.version or 'N/A' - - -if __name__ == '__main__': - if len(sys.argv) < 3 or len(sys.argv) > 4: - print('Usage: get_module_info.py [field]') - print(' field: hash (default), version, repo, or all') - print('N/A') - sys.exit(1) - - known_good_file = sys.argv[1] - module_name = sys.argv[2] - field = sys.argv[3] if len(sys.argv) == 4 else 'all' - - module = load_module(known_good_file, module_name) - result = get_module_field(module, field) - print(result) From 139b254d9cb52f1d93d15b43d1b09902c52b3ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Gr=C3=A4per?= <160226396+kgraeper@users.noreply.github.com> Date: Wed, 21 Jan 2026 11:04:46 +0100 Subject: [PATCH 13/55] update known_good to latest mains (#78) --- MODULE.bazel | 6 +- feature_integration_tests/test_cases/BUILD | 2 +- .../src/internals/persistency/kvs_instance.rs | 21 ++++-- .../basic/orchestration_with_persistency.rs | 21 ++++-- .../rust/orchestration_persistency/main.rs | 11 ++- known_good.json | 64 +++++++---------- score_modules.MODULE.bazel | 69 +++++++++++-------- scripts/integration_test.py | 15 +++- .../known_good_to_workspace_metadata.py | 8 ++- scripts/known_good/models/known_good.py | 3 +- .../known_good/override_known_good_repo.py | 10 +-- .../update_module_from_known_good.py | 8 ++- scripts/known_good/update_module_latest.py | 7 +- scripts/run_unit_tests.sh | 20 ++++-- 14 files changed, 162 insertions(+), 103 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 2a6fdba698d..ec3c107dd4a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -21,7 +21,7 @@ include("//:score_modules.MODULE.bazel") include("//:score_toolchains.MODULE.bazel") ## Python -bazel_dep(name = "rules_python", version = "1.4.1") +bazel_dep(name = "rules_python", version = "1.5.1") PYTHON_VERSION = "3.12" @@ -62,6 +62,6 @@ git_override( ) # imports for the feature showcase module -bazel_dep(name = "rules_rust", version = "0.61.0") +bazel_dep(name = "rules_rust", version = "0.67.0") bazel_dep(name = "score_itf", version = "0.1.0") -bazel_dep(name = "score_crates", version = "0.0.4") +bazel_dep(name = "score_crates", version = "0.0.6") diff --git a/feature_integration_tests/test_cases/BUILD b/feature_integration_tests/test_cases/BUILD index 527187c4a87..cb64410b5db 100644 --- a/feature_integration_tests/test_cases/BUILD +++ b/feature_integration_tests/test_cases/BUILD @@ -40,6 +40,6 @@ score_py_pytest( env = { "RUST_BACKTRACE": "1", }, - pytest_ini = ":pytest.ini", + pytest_config = ":pytest.ini", deps = all_requirements, ) diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs index 9771632a8fd..6d75b062762 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs @@ -1,6 +1,7 @@ //! KVS instance test helpers. use crate::internals::persistency::kvs_parameters::KvsParameters; +use rust_kvs::json_backend::JsonBackendBuilder; use rust_kvs::prelude::{ErrorCode, Kvs, KvsBuilder}; /// Create KVS instance based on provided parameters. @@ -16,11 +17,21 @@ pub fn kvs_instance(kvs_parameters: KvsParameters) -> Result { } if let Some(dir) = kvs_parameters.dir { - builder = builder.dir(dir.to_string_lossy().to_string()); - } - - if let Some(snapshot_max_count) = kvs_parameters.snapshot_max_count { - builder = builder.snapshot_max_count(snapshot_max_count); + // Use JsonBackendBuilder to configure directory and snapshot_max_count + // (these methods not available directly on KvsBuilder in Rust) + // change back to dir, if https://github.com/eclipse-score/persistency/issues/222 is resolved. + let backend = JsonBackendBuilder::new() + .working_dir(dir) + .snapshot_max_count(kvs_parameters.snapshot_max_count.unwrap_or(1)) + .build(); + builder = builder.backend(Box::new(backend)); + } else if let Some(snapshot_max_count) = kvs_parameters.snapshot_max_count { + // Configure snapshot_max_count via backend + // change back to snapshot_max_count, if https://github.com/eclipse-score/persistency/issues/222 is resolved. + let backend = JsonBackendBuilder::new() + .snapshot_max_count(snapshot_max_count) + .build(); + builder = builder.backend(Box::new(backend)); } let kvs: Kvs = builder.build()?; diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs index ceab4b4b153..cb567d976a4 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs @@ -19,9 +19,9 @@ use orchestration::{ common::DesignConfig, }; +use rust_kvs::json_backend::JsonBackendBuilder; use rust_kvs::kvs_api::KvsApi; -use rust_kvs::Kvs; -use rust_kvs::KvsBuilder; +use rust_kvs::prelude::{Kvs, KvsBuilder}; use serde_json::Value; use test_scenarios_rust::scenario::Scenario; @@ -76,10 +76,19 @@ async fn kvs_save_cycle_number(path: String) -> Result<(), UserErrValue> { builder = builder.kvs_load(flag); } if let Some(dir) = params.dir { - builder = builder.dir(dir.to_string_lossy().to_string()); - } - if let Some(max_count) = params.snapshot_max_count { - builder = builder.snapshot_max_count(max_count); + // Use JsonBackendBuilder to configure directory (dir() method not available in Rust KvsBuilder) + // change back to dir, if https://github.com/eclipse-score/persistency/issues/222 is resolved. + let backend = JsonBackendBuilder::new() + .working_dir(dir) + .snapshot_max_count(params.snapshot_max_count.unwrap_or(1)) + .build(); + builder = builder.backend(Box::new(backend)); + } else if let Some(max_count) = params.snapshot_max_count { + // Configure snapshot_max_count via backend even without custom dir + let backend = JsonBackendBuilder::new() + .snapshot_max_count(max_count) + .build(); + builder = builder.backend(Box::new(backend)); } // Create KVS. diff --git a/feature_showcase/rust/orchestration_persistency/main.rs b/feature_showcase/rust/orchestration_persistency/main.rs index d77dee6d6ea..1d61254d6f7 100644 --- a/feature_showcase/rust/orchestration_persistency/main.rs +++ b/feature_showcase/rust/orchestration_persistency/main.rs @@ -11,6 +11,7 @@ // SPDX-License-Identifier: Apache-2.0 // +use std::path::PathBuf; use std::time::Duration; use kyron::runtime::*; @@ -25,6 +26,7 @@ use orchestration::{ prelude::InvokeResult, }; +use rust_kvs::json_backend::JsonBackendBuilder; use rust_kvs::prelude::*; // Example Summary: @@ -56,8 +58,15 @@ async fn on_shutdown() -> InvokeResult { // Instance ID for KVS object instances. let instance_id = InstanceId(0); + + // Configure backend with directory path (workaround: KvsBuilder::dir() not available in Rust) + // change back to dir, if https://github.com/eclipse-score/persistency/issues/222 is resolved. + let backend = JsonBackendBuilder::new() + .working_dir(PathBuf::from("./")) + .build(); + let builder = KvsBuilder::new(instance_id) - .dir("./") + .backend(Box::new(backend)) .kvs_load(KvsLoad::Optional); let kvs = builder.build().unwrap(); diff --git a/known_good.json b/known_good.json index fea938c36b2..3bbe51131db 100644 --- a/known_good.json +++ b/known_good.json @@ -1,76 +1,58 @@ { - "timestamp": "2025-08-13T12:55:10Z", "modules": { "score_baselibs": { - "version": "0.2.2", - "hash": "a3557b809406289a3bf0bc6c447a1d646ee67ba0", "repo": "https://github.com/eclipse-score/baselibs.git", - "branch": "release_v0_2_2" + "hash": "ccfe7dc563bedc77fe6e19bd7050104e80fdf7e1" }, "score_communication": { - "version": "0.1.2", "repo": "https://github.com/eclipse-score/communication.git", - "hash": "d5414f75bfd4fc116572091ccca305d9e4b39338" + "hash": "1d3e115e953de771cfb6c780cf677cf3fe5e8bee" }, "score_logging": { - "version": "0.0.4", - "hash": "d3624d52151fcde9c8351867353a8baf59a269cd", "repo": "https://github.com/eclipse-score/logging.git", - "branch": "score_05_beta" + "hash": "cddfb10832cf384ee5c3f8553fb898f56c1d1def" }, "score_persistency": { - "version": "0.2.2", - "hash": "9101956287a94d37ac34c29e94fa6f8d96879a73", - "repo": "https://github.com/eclipse-score/persistency.git" + "repo": "https://github.com/eclipse-score/persistency.git", + "hash": "652f78a822dac698dcb60f80adbc3aea488ebee5" }, "score_orchestrator": { - "version": "0.0.4", - "hash": "92ee5ff22e571f2180a44edddcb81474e1ec68db", - "repo": "https://github.com/eclipse-score/orchestrator.git" + "repo": "https://github.com/eclipse-score/orchestrator.git", + "hash": "dcf5518ac78d01cc06ed8a7ffe9e476c2fa43bd6" }, "score_kyron": { - "version": "0.0.3", - "hash": "558c5b5d8cd142baeafbfce15185c03b97e08eeb", - "repo": "https://github.com/eclipse-score/kyron.git" + "repo": "https://github.com/eclipse-score/kyron.git", + "hash": "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81" }, "score_feo": { - "version": "1.0.2", - "hash": "4841281ab81aad114cfc86a19a69c029a274f28d", "repo": "https://github.com/eclipse-score/feo.git", + "hash": "4841281ab81aad114cfc86a19a69c029a274f28d", "branch": "candidate_v0.5" }, "score_tooling": { - "version": "1.0.4", - "hash": "905d1feb00f4ffb586d781f6420423855f802a4c", - "repo": "https://github.com/eclipse-score/tooling.git" + "repo": "https://github.com/eclipse-score/tooling.git", + "hash": "092d229dbc671febe87ddce5c9763b1f62e2dbaf" }, "score_platform": { - "version": "0.5.2", - "hash": "754ef0ddf4cbc68667c1e54c3212a58ecda7837e", - "repo": "https://github.com/eclipse-score/score.git" + "repo": "https://github.com/eclipse-score/score.git", + "hash": "dafe356f60f725ff77941c220200e1df28965d2d" }, "score_bazel_platforms": { - "version": "0.0.3", - "hash": "c4813d5b65be9cec1d3a2b4d56cce2cf334fad27", - "repo": "https://github.com/eclipse-score/bazel_platforms.git" + "repo": "https://github.com/eclipse-score/bazel_platforms.git", + "hash": "2286de89c35d5660ad183906a6f010b33fcac8db" }, "score_test_scenarios": { - "version": "0.3.1", - "hash": "55280e1376922aead6e09f32542f4e2d0b90cc51", - "repo": "https://github.com/eclipse-score/testing_tools.git" + "repo": "https://github.com/eclipse-score/testing_tools.git", + "hash": "6b5e85863e8fb5687251c19f5bb81e0a3afdf581" }, "score_docs_as_code": { - "version": "2.2.0", - "hash": "c87cd898ef63ce15daec434dc5ea161651cefe97", - "repo": "https://github.com/eclipse-score/docs-as-code.git" + "repo": "https://github.com/eclipse-score/docs-as-code.git", + "hash": "d9f95fd2fdf2df494a8d499b5f061a84f320b53b" }, "score_process": { - "version": "1.4.0", - "hash": "d0570797b22649be2d2cdb603f2d70bdbff304ed", - "repo": "https://github.com/eclipse-score/process_description.git" + "repo": "https://github.com/eclipse-score/process_description.git", + "hash": "86f77b5514e32694efed3541558041b653830380" } }, - "manifest_sha256": "4c9b7f...", - "suite": "full", - "duration_s": 742 + "timestamp": "2026-01-21T08:46:20+00:00Z" } diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index f9f6fb8f91b..1cb18508730 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -11,83 +11,96 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# Generated from known_good.json at 2025-08-13T12:55:10Z -# Do not edit manually - use tools/update_module_from_known_good.py +# Generated from known_good.json at 2026-01-21T08:46:20+00:00Z +# Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_baselibs") -single_version_override( +git_override( module_name = "score_baselibs", - version = "0.2.2", + remote = "https://github.com/eclipse-score/baselibs.git", + commit = "ccfe7dc563bedc77fe6e19bd7050104e80fdf7e1", ) bazel_dep(name = "score_communication") -single_version_override( +git_override( module_name = "score_communication", - version = "0.1.2", + remote = "https://github.com/eclipse-score/communication.git", + commit = "1d3e115e953de771cfb6c780cf677cf3fe5e8bee", ) bazel_dep(name = "score_logging") -single_version_override( +git_override( module_name = "score_logging", - version = "0.0.4", + remote = "https://github.com/eclipse-score/logging.git", + commit = "cddfb10832cf384ee5c3f8553fb898f56c1d1def", ) bazel_dep(name = "score_persistency") -single_version_override( +git_override( module_name = "score_persistency", - version = "0.2.2", + remote = "https://github.com/eclipse-score/persistency.git", + commit = "652f78a822dac698dcb60f80adbc3aea488ebee5", ) bazel_dep(name = "score_orchestrator") -single_version_override( +git_override( module_name = "score_orchestrator", - version = "0.0.4", + remote = "https://github.com/eclipse-score/orchestrator.git", + commit = "dcf5518ac78d01cc06ed8a7ffe9e476c2fa43bd6", ) bazel_dep(name = "score_kyron") -single_version_override( +git_override( module_name = "score_kyron", - version = "0.0.3", + remote = "https://github.com/eclipse-score/kyron.git", + commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", ) bazel_dep(name = "score_feo") -single_version_override( +git_override( module_name = "score_feo", - version = "1.0.2", + remote = "https://github.com/eclipse-score/feo.git", + commit = "4841281ab81aad114cfc86a19a69c029a274f28d", ) bazel_dep(name = "score_tooling") -single_version_override( +git_override( module_name = "score_tooling", - version = "1.0.4", + remote = "https://github.com/eclipse-score/tooling.git", + commit = "092d229dbc671febe87ddce5c9763b1f62e2dbaf", ) bazel_dep(name = "score_platform") -single_version_override( +git_override( module_name = "score_platform", - version = "0.5.2", + remote = "https://github.com/eclipse-score/score.git", + commit = "dafe356f60f725ff77941c220200e1df28965d2d", ) bazel_dep(name = "score_bazel_platforms") -single_version_override( +git_override( module_name = "score_bazel_platforms", - version = "0.0.3", + remote = "https://github.com/eclipse-score/bazel_platforms.git", + commit = "2286de89c35d5660ad183906a6f010b33fcac8db", ) bazel_dep(name = "score_test_scenarios") -single_version_override( +git_override( module_name = "score_test_scenarios", - version = "0.3.1", + remote = "https://github.com/eclipse-score/testing_tools.git", + commit = "6b5e85863e8fb5687251c19f5bb81e0a3afdf581", ) bazel_dep(name = "score_docs_as_code") -single_version_override( +git_override( module_name = "score_docs_as_code", - version = "2.2.0", + remote = "https://github.com/eclipse-score/docs-as-code.git", + commit = "d9f95fd2fdf2df494a8d499b5f061a84f320b53b", ) bazel_dep(name = "score_process") -single_version_override( +git_override( module_name = "score_process", - version = "1.4.0", + remote = "https://github.com/eclipse-score/process_description.git", + commit = "86f77b5514e32694efed3541558041b653830380", ) diff --git a/scripts/integration_test.py b/scripts/integration_test.py index e08146f0f1b..ac1e043b56c 100755 --- a/scripts/integration_test.py +++ b/scripts/integration_test.py @@ -160,6 +160,10 @@ def build_group(group_name: str, targets: str, config: str, log_file: Path) -> T # Run build and capture output with open(log_file, 'w') as f: + # Write command to log file + f.write(f"Command: {' '.join(cmd)}\n") + f.write("-" * 80 + "\n\n") + process = subprocess.Popen( cmd, stdout=subprocess.PIPE, @@ -288,8 +292,15 @@ def main(): summary_file.parent.mkdir(parents=True, exist_ok=True) # Load modules from known_good files - old_modules = load_known_good(Path('known_good.json')).modules if Path('known_good.json').exists() else {} - new_modules = load_known_good(known_good_file).modules if known_good_file else {} + try: + old_modules = load_known_good(Path('known_good.json')).modules if Path('known_good.json').exists() else {} + except FileNotFoundError: + old_modules = {} + + try: + new_modules = load_known_good(known_good_file).modules if known_good_file else {} + except FileNotFoundError as e: + raise SystemExit(f"ERROR: {e}") # Start summary timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') diff --git a/scripts/known_good/known_good_to_workspace_metadata.py b/scripts/known_good/known_good_to_workspace_metadata.py index f77b738cbbb..6c4cb93cea4 100644 --- a/scripts/known_good/known_good_to_workspace_metadata.py +++ b/scripts/known_good/known_good_to_workspace_metadata.py @@ -22,7 +22,13 @@ def main(): args = parser.parse_args() # Load known_good using KnownGood dataclass - known_good = load_known_good(Path(args.known_good)) + try: + known_good = load_known_good(Path(args.known_good)) + except FileNotFoundError as e: + raise SystemExit(f"ERROR: {e}") + except ValueError as e: + raise SystemExit(f"ERROR: {e}") + modules = list(known_good.modules.values()) gita_metadata = [] diff --git a/scripts/known_good/models/known_good.py b/scripts/known_good/models/known_good.py index 70fedc3e0a2..64cb50bb4de 100644 --- a/scripts/known_good/models/known_good.py +++ b/scripts/known_good/models/known_good.py @@ -78,11 +78,12 @@ def load_known_good(path: Path) -> KnownGood: Returns: KnownGood instance with parsed modules """ + with open(path, "r", encoding="utf-8") as f: data = json.load(f) if not isinstance(data, dict) or not isinstance(data.get("modules"), dict): - raise SystemExit( + raise ValueError( f"Invalid known_good.json at {path} (expected object with 'modules' dict)" ) diff --git a/scripts/known_good/override_known_good_repo.py b/scripts/known_good/override_known_good_repo.py index ecb573fe400..70a61ca06a5 100755 --- a/scripts/known_good/override_known_good_repo.py +++ b/scripts/known_good/override_known_good_repo.py @@ -218,12 +218,14 @@ def main() -> None: known_path = os.path.abspath(args.known) output_path = os.path.abspath(args.output) - if not os.path.exists(known_path): - raise SystemExit(f"Input file not found: {known_path}") - # Load, update, and output logging.info(f"Loading {known_path}") - known_good = load_known_good(known_path) + try: + known_good = load_known_good(known_path) + except FileNotFoundError as e: + raise SystemExit(f"ERROR: {e}") + except ValueError as e: + raise SystemExit(f"ERROR: {e}") if not args.module_overrides: parser.error("at least one --module-override is required") diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index 49101e354e8..17cd796e010 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -218,7 +218,13 @@ def main() -> None: repo_commit_dict[repo_url] = commit_hash # Load known_good.json - known_good = load_known_good(Path(known_path)) + try: + known_good = load_known_good(Path(known_path)) + except FileNotFoundError as e: + raise SystemExit(f"ERROR: {e}") + except ValueError as e: + raise SystemExit(f"ERROR: {e}") + if not known_good.modules: raise SystemExit("No modules found in known_good.json") diff --git a/scripts/known_good/update_module_latest.py b/scripts/known_good/update_module_latest.py index 3a93f639a0d..7d6bfd384d9 100755 --- a/scripts/known_good/update_module_latest.py +++ b/scripts/known_good/update_module_latest.py @@ -101,8 +101,11 @@ def main(argv: list[str]) -> int: args = parse_args(argv) try: known_good = load_known_good(Path(args.known_good)) - except (OSError, SystemExit) as e: - print(f"ERROR: Cannot read or parse known_good file: {e}", file=sys.stderr) + except FileNotFoundError as e: + print(f"ERROR: {e}", file=sys.stderr) + return 3 + except ValueError as e: + print(f"ERROR: {e}", file=sys.stderr) return 3 except json.JSONDecodeError as e: print(f"ERROR: Invalid JSON syntax: {e}", file=sys.stderr) diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index 7fffe6414ef..c82416f9f4c 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -14,12 +14,17 @@ declare -A UT_TARGET_GROUPS=( -@score_baselibs//score/containers:dynamic_array_test \ -@score_baselibs//score/mw/log/configuration:* \ -@score_baselibs//score/json/examples:*" - [communication]="@score_communication//score/mw/com/impl/... -- \ - -@score_communication//score/mw/com/impl:unit_test_runtime_single_exec \ - -@score_communication//score/mw/com/impl/configuration:config_parser_test \ - -@score_communication//score/mw/com/impl/configuration:configuration_test \ - -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test" - [persistency]="@score_persistency//:unit_tests" # ok + # DISABLED: All communication tests fail with linker error: + # undefined reference to 'score::mw::log::detail::CreateRecorderFactory()' + # The logging library symbols are not properly available during linking. + # This affects both direct communication tests and tests that depend on logging. + # [communication]="@score_communication//score/mw/com/impl/... -- \ + # -@score_communication//score/mw/com/impl:unit_test_runtime_single_exec \ + # -@score_communication//score/mw/com/impl/configuration:config_parser_test \ + # -@score_communication//score/mw/com/impl/configuration:configuration_test \ + # -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test" + [persistency]="@score_persistency//:unit_tests -- \ + -@score_persistency//src/cpp/tests:test_kvs_cpp" # C++ test has linker issues with logging library [orchestrator]="@score_orchestrator//src/..." # ok [kyron]="@score_kyron//:unit_tests" # ok [feo]="@score_feo//... --build_tests_only" # ok (flag required or error from docs) @@ -36,7 +41,8 @@ declare -A UT_TARGET_GROUPS=( -- -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT \ -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT \ -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT \ - -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test " + -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test \ + -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT " ) # Markdown table header From 1d792abfac1fd63078a0f468b747d9ef9457dc18 Mon Sep 17 00:00:00 2001 From: Alexander Lanin Date: Thu, 22 Jan 2026 21:52:41 +0100 Subject: [PATCH 14/55] refactor: streamline disk space management in CI workflow (#76) --- .../workflows/reusable_integration-build.yml | 27 +++---------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml index f1723223f70..48f33a2e0e9 100644 --- a/.github/workflows/reusable_integration-build.yml +++ b/.github/workflows/reusable_integration-build.yml @@ -84,23 +84,9 @@ jobs: name: Integration Test runs-on: ${{ inputs.repo_runner_labels != '' && (startsWith(inputs.repo_runner_labels, '[') && fromJSON(inputs.repo_runner_labels) || inputs.repo_runner_labels) || 'ubuntu-latest' }} steps: - - name: Show disk space before build - run: | - echo 'Disk space before build:' - df -h - - name: Removing unneeded software - run: | - echo "Removing unneeded software... " - if [ -d /usr/share/dotnet ]; then echo "Removing dotnet..."; start=$(date +%s); sudo rm -rf /usr/share/dotnet; end=$(date +%s); echo "Duration: $((end-start))s"; fi - #if [ -d /usr/local/lib/android ]; then echo "Removing android..."; start=$(date +%s); sudo rm -rf /usr/local/lib/android; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /opt/ghc ]; then echo "Removing haskell (ghc)..."; start=$(date +%s); sudo rm -rf /opt/ghc; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/.ghcup ]; then echo "Removing haskell (ghcup)..."; start=$(date +%s); sudo rm -rf /usr/local/.ghcup; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/share/swift ]; then echo "Removing swift..."; start=$(date +%s); sudo rm -rf /usr/share/swift; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/share/chromium ]; then echo "Removing chromium..."; start=$(date +%s); sudo rm -rf /usr/local/share/chromium; end=$(date +%s); echo "Duration: $((end-start))s"; fi - - name: Show disk space after cleanup - run: | - echo 'Disk space after cleanup:' - df -h + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 + - name: Checkout repository uses: actions/checkout@v4.2.2 with: @@ -113,7 +99,7 @@ jobs: # Avoid downloading Bazel every time. bazelisk-cache: true # Store build cache per workflow. - disk-cache: ${{ github.workflow }} + disk-cache: ${{ inputs.config }} # Share repository cache between workflows. repository-cache: true - name: Update known good commits @@ -137,11 +123,6 @@ jobs: python3 scripts/integration_test.py --known-good known_good.updated.json --config "${{ inputs.config }}" env: GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} - - name: Show disk space after build - if: always() - run: | - echo 'Disk space after build:' - df -h - name: Upload logs artifact if: always() uses: actions/upload-artifact@v4 From cd81377848e3c1cc645873363a207354b468a615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Gr=C3=A4per?= <160226396+kgraeper@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:57:00 +0100 Subject: [PATCH 15/55] update to latest score_bazel_cpp_toolchains (#80) * update to latest score_bazel_cpp_toolchains * fix builds, reduce logging builds * adapt other workflows, remove utests for logging * fix persistency test * add rust toolchain for feo * bin rust toolchain version --- .bazelrc | 28 +++++++--- .../workflows/build_and_test_on_every_pr.yml | 6 +- .github/workflows/release_verification.yml | 2 +- .github/workflows/reusable_smoke-test.yml | 2 +- README.md | 17 +++--- build_config.json | 2 +- known_good.json | 20 +++---- score_modules.MODULE.bazel | 20 +++---- score_toolchains.MODULE.bazel | 56 ++++++++----------- scripts/integration_test.py | 4 +- scripts/known_good/update_module_latest.py | 18 +++--- scripts/run_unit_tests.sh | 35 ++++++------ 12 files changed, 104 insertions(+), 106 deletions(-) diff --git a/.bazelrc b/.bazelrc index 2be5855993e..f2100efefb9 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,9 +17,18 @@ common --registry=https://bcr.bazel.build # Flags needed by score_baselibs and communication modules. # Do not add more! -build --@score_baselibs//score/mw/log/flags:KRemote_Logging=False -build --@score_baselibs//score/json:base_library=nlohmann -build --@score_communication//score/mw/com/flags:tracing_library=stub +common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False +common --@score_baselibs//score/json:base_library=nlohmann +common --@score_communication//score/mw/com/flags:tracing_library=stub +common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False +common --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False +common --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False +common --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False +common --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False +common --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False +common --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True +common --@score_logging//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False +common --@score_logging//score/mw/log/flags:KRemote_Logging=False # stop legacy behavior of creating __init__.py files build --incompatible_default_to_explicit_init_py @@ -29,12 +38,15 @@ build --experimental_retain_test_configuration_across_testonly #https://github.c test --test_tag_filters=-manual test --test_output=errors -build:_bl_common --host_platform=@score_bazel_platforms//:x86_64-linux +build:shared --sandbox_writable_path=/var/tmp +build:shared --host_platform=@score_bazel_platforms//:x86_64-linux -# This config is for internal module usage ONLY. -build:bl-x86_64-linux --config=_bl_common -build:bl-x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux -build:bl-x86_64-linux --extra_toolchains=@gcc_toolchain//:host_gcc_12 +build:x86_64-linux --config=shared +build:x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +build:x86_64-linux --features=-treat_warnings_as_errors # due to baselibs deprecations + +# this is deprecated, use build:x86_64-linux instead +build:_bl_common --host_platform=@score_bazel_platforms//:x86_64-linux # This config is for internal module usage ONLY. build:bl-x86_64-qnx --config=_bl_common diff --git a/.github/workflows/build_and_test_on_every_pr.yml b/.github/workflows/build_and_test_on_every_pr.yml index b0fafafe6ef..9cb19b46d57 100644 --- a/.github/workflows/build_and_test_on_every_pr.yml +++ b/.github/workflows/build_and_test_on_every_pr.yml @@ -47,10 +47,10 @@ jobs: - name: Bazel execute showcase examples run: | set -e - bazel build --config bl-x86_64-linux //feature_showcase:all_examples + bazel build --config x86_64-linux //feature_showcase:all_examples while read -r target; do - bazel run --config bl-x86_64-linux "$target" + bazel run --config x86_64-linux "$target" done < ci/showcase_targets_run.txt - name: Feature Integration Tests run: | - bazel test --config bl-x86_64-linux //feature_integration_tests/test_cases:fit + bazel test --config x86_64-linux //feature_integration_tests/test_cases:fit diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml index c68bbd2880d..6692980ee73 100644 --- a/.github/workflows/release_verification.yml +++ b/.github/workflows/release_verification.yml @@ -59,7 +59,7 @@ jobs: //:test_persistency_qemu \ - name: Bazel execute showcase examples run: | - bazel build --config bl-x86_64-linux //feature_showcase:all_examples + bazel build --config x86_64-linux //feature_showcase:all_examples release_verification: runs-on: ubuntu-latest needs: [test_target] diff --git a/.github/workflows/reusable_smoke-test.yml b/.github/workflows/reusable_smoke-test.yml index ac5326c99d9..47dbef7f005 100644 --- a/.github/workflows/reusable_smoke-test.yml +++ b/.github/workflows/reusable_smoke-test.yml @@ -138,7 +138,7 @@ jobs: fail-fast: false matrix: config: - - bl-x86_64-linux + - x86_64-linux # Add more configs here as needed # - bl-aarch64-linux # - bl-x86_64-qnx diff --git a/README.md b/README.md index 18d238158fb..a2b1b592248 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,22 @@ bazel run //:docs_combo_experimental ``` ## Working Builds ✅ -The following modules build successfully with the `bl-x86_64-linux` configuration: +The following modules build successfully with the `x86_64-linux` configuration: ### Baselibs ```bash -bazel build --config bl-x86_64-linux @score_baselibs//score/... --verbose_failures +bazel build --config x86_64-linux @score_baselibs//score/... --verbose_failures +bazel build --config x86_64-linux @score_baselibs//score/... --verbose_failures ``` ### Communication ```bash -bazel build --config bl-x86_64-linux @score_communication//score/mw/com:com --verbose_failures +bazel build --config x86_64-linux @score_communication//score/mw/com:com --verbose_failures ``` ### Persistency ```bash -bazel build --config bl-x86_64-linux \ +bazel build --config x86_64-linux \ @score_persistency//src/cpp/src/... \ @score_persistency//src/rust/... \ --verbose_failures @@ -43,18 +44,18 @@ bazel build --config bl-x86_64-linux \ ### Orchestration and `kyron` - async runtime for Rust ```bash -bazel build --config bl-x86_64-linux @score_orchestrator//src/... +bazel build --config x86_64-linux @score_orchestrator//src/... ``` ## Feature showcase examples The examples that are aiming to showcase features provided by S-CORE are located in `feature_showcase` folder. -You can run them currently for host platform using `--config bl-x86_64-linux`. +You can run them currently for host platform using `--config x86_64-linux`. Execute `bazel query //feature_showcase/...` to obtain list of targets that You can run. ```bash -bazel build --config bl-x86_64-linux @score_orchestrator//src/... --verbose_failures +bazel build --config x86_64-linux @score_orchestrator//src/... --verbose_failures ``` ## Operating system integrations @@ -146,7 +147,7 @@ bazel build @feo//... --verbose_failures ### Persistency (Full Build) ```bash -bazel build --config bl-x86_64-linux @score_persistency//src/... --verbose_failures +bazel build --config x86_64-linux @score_persistency//src/... --verbose_failures ``` ## System Dependencies diff --git a/build_config.json b/build_config.json index 85c986fea1f..c7fd8cd99a3 100644 --- a/build_config.json +++ b/build_config.json @@ -22,7 +22,7 @@ "build_targets": "-- @score_feo//... -@score_feo//:docs -@score_feo//:ide_support -@score_feo//:needs_json" }, "score_logging": { - "build_targets": "@score_logging//score/... --@score_baselibs//score/memory/shared/flags:use_typedshmd=False --@score_baselibs//score/json:base_library=nlohmann --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True" + "build_targets": "@score_logging//score/mw/log" } } } diff --git a/known_good.json b/known_good.json index 3bbe51131db..5d0bf111bf4 100644 --- a/known_good.json +++ b/known_good.json @@ -2,23 +2,23 @@ "modules": { "score_baselibs": { "repo": "https://github.com/eclipse-score/baselibs.git", - "hash": "ccfe7dc563bedc77fe6e19bd7050104e80fdf7e1" + "hash": "fe74ff32f2cb8b2c99af019e7907ad9486e70b09" }, "score_communication": { "repo": "https://github.com/eclipse-score/communication.git", - "hash": "1d3e115e953de771cfb6c780cf677cf3fe5e8bee" + "hash": "73caa2d2b6f45f806bbd30bdf8675ab1ad551387" }, "score_logging": { "repo": "https://github.com/eclipse-score/logging.git", - "hash": "cddfb10832cf384ee5c3f8553fb898f56c1d1def" + "hash": "8d14d2beec9bb3ccd7a2e24926eacd13b0ffc7d1" }, "score_persistency": { "repo": "https://github.com/eclipse-score/persistency.git", - "hash": "652f78a822dac698dcb60f80adbc3aea488ebee5" + "hash": "69356def0bd731fda9aedc8c65336d8c2ca499da" }, "score_orchestrator": { "repo": "https://github.com/eclipse-score/orchestrator.git", - "hash": "dcf5518ac78d01cc06ed8a7ffe9e476c2fa43bd6" + "hash": "18e136c34750c5db707f27f917d52efc7541e087" }, "score_kyron": { "repo": "https://github.com/eclipse-score/kyron.git", @@ -31,11 +31,11 @@ }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", - "hash": "092d229dbc671febe87ddce5c9763b1f62e2dbaf" + "hash": "8894fe5440436a8c6d9e214c97b18d619c7f7eac" }, "score_platform": { "repo": "https://github.com/eclipse-score/score.git", - "hash": "dafe356f60f725ff77941c220200e1df28965d2d" + "hash": "f4769c4b86bfe46b29b56b6c3e262c5b82db334b" }, "score_bazel_platforms": { "repo": "https://github.com/eclipse-score/bazel_platforms.git", @@ -47,12 +47,12 @@ }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "hash": "d9f95fd2fdf2df494a8d499b5f061a84f320b53b" + "hash": "a9babc30a7ab1ac43c75415b9784b2bc81ed0f9d" }, "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", - "hash": "86f77b5514e32694efed3541558041b653830380" + "hash": "496fb6dc347de414d9cbe7523204fdeb6b511197" } }, - "timestamp": "2026-01-21T08:46:20+00:00Z" + "timestamp": "2026-01-26T11:01:36+00:00Z" } diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 1cb18508730..7be01d5c79a 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -11,42 +11,42 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# Generated from known_good.json at 2026-01-21T08:46:20+00:00Z +# Generated from known_good.json at 2026-01-26T16:26:12+00:00Z # Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_baselibs") git_override( module_name = "score_baselibs", remote = "https://github.com/eclipse-score/baselibs.git", - commit = "ccfe7dc563bedc77fe6e19bd7050104e80fdf7e1", + commit = "efc061359d159244a9bd31a6f1dc74f9246c07b6", ) bazel_dep(name = "score_communication") git_override( module_name = "score_communication", remote = "https://github.com/eclipse-score/communication.git", - commit = "1d3e115e953de771cfb6c780cf677cf3fe5e8bee", + commit = "73caa2d2b6f45f806bbd30bdf8675ab1ad551387", ) bazel_dep(name = "score_logging") git_override( module_name = "score_logging", remote = "https://github.com/eclipse-score/logging.git", - commit = "cddfb10832cf384ee5c3f8553fb898f56c1d1def", + commit = "8d14d2beec9bb3ccd7a2e24926eacd13b0ffc7d1", ) bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", - commit = "652f78a822dac698dcb60f80adbc3aea488ebee5", + commit = "0037034bf853e5f955f028fab54ed319fb0441c3", ) bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "dcf5518ac78d01cc06ed8a7ffe9e476c2fa43bd6", + commit = "18e136c34750c5db707f27f917d52efc7541e087", ) bazel_dep(name = "score_kyron") @@ -67,14 +67,14 @@ bazel_dep(name = "score_tooling") git_override( module_name = "score_tooling", remote = "https://github.com/eclipse-score/tooling.git", - commit = "092d229dbc671febe87ddce5c9763b1f62e2dbaf", + commit = "8894fe5440436a8c6d9e214c97b18d619c7f7eac", ) bazel_dep(name = "score_platform") git_override( module_name = "score_platform", remote = "https://github.com/eclipse-score/score.git", - commit = "dafe356f60f725ff77941c220200e1df28965d2d", + commit = "a853a294f3fda8d40fde3ac76f60bd03fcdc6a4a", ) bazel_dep(name = "score_bazel_platforms") @@ -95,12 +95,12 @@ bazel_dep(name = "score_docs_as_code") git_override( module_name = "score_docs_as_code", remote = "https://github.com/eclipse-score/docs-as-code.git", - commit = "d9f95fd2fdf2df494a8d499b5f061a84f320b53b", + commit = "f784d4370240cc0eafce779e5c317f6bf8988fb2", ) bazel_dep(name = "score_process") git_override( module_name = "score_process", remote = "https://github.com/eclipse-score/process_description.git", - commit = "86f77b5514e32694efed3541558041b653830380", + commit = "496fb6dc347de414d9cbe7523204fdeb6b511197", ) diff --git a/score_toolchains.MODULE.bazel b/score_toolchains.MODULE.bazel index 6a0207f8424..baf7e8d538e 100644 --- a/score_toolchains.MODULE.bazel +++ b/score_toolchains.MODULE.bazel @@ -11,42 +11,30 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# QNX toolchain -bazel_dep(name = "score_toolchains_qnx", version = "0.0.6") -toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx") -toolchains_qnx.sdp( - sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", - strip_prefix = "installation", - url = "https://www.qnx.com/download/download/79858/installation.tgz", -) -use_repo(toolchains_qnx, "toolchains_qnx_sdp") -use_repo(toolchains_qnx, "toolchains_qnx_qcc") -use_repo(toolchains_qnx, "toolchains_qnx_ifs") -register_toolchains( - "@toolchains_qnx_ifs//:ifs_x86_64", - "@toolchains_qnx_ifs//:ifs_aarch64", - dev_dependency = True, -) -#gcc toolchain for baselibs -bazel_dep(name = "score_toolchains_gcc", version = "0.5", dev_dependency = False) -gcc = use_extension("@score_toolchains_gcc//extentions:gcc.bzl", "gcc", dev_dependency = False) -# Align toolchain archive with persistency module (v0.0.3) so its labels (e.g. host_gcc_12) are present. +bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.0") +gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) + +# ******************************************************************************* +# Setting default GCC (CPU:x86_64|OS:Linux|V:12.2.0|ES:posix) +# ******************************************************************************* gcc.toolchain( - url = "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/v0.0.3/x86_64-unknown-linux-gnu_gcc12.tar.gz", - sha256 = "8fa85c2a93a6bef1cf866fa658495a2416dfeec692e4246063b791abf18da083", - strip_prefix = "x86_64-unknown-linux-gnu", + name = "score_gcc_toolchain", + target_cpu = "x86_64", + target_os = "linux", + version = "12.2.0", + use_default_package = True, ) -gcc.extra_features( - features = [ - "minimal_warnings", - "treat_warnings_as_errors", - ], + +use_repo( + gcc, + "score_gcc_toolchain", ) -gcc.warning_flags( - minimal_warnings = ["-Wall", "-Wno-error=deprecated-declarations", "-Wno-error=narrowing"], - strict_warnings = ["-Wextra", "-Wpedantic"], - treat_warnings_as_errors = ["-Werror"], + + +rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") +rust.toolchain( + edition = "2021", + versions = ["1.93.0"], ) -use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc") -register_toolchains("@gcc_toolchain//:all") +use_repo(rust, "rust_toolchains") diff --git a/scripts/integration_test.py b/scripts/integration_test.py index ac1e043b56c..866876bc0ee 100755 --- a/scripts/integration_test.py +++ b/scripts/integration_test.py @@ -265,8 +265,8 @@ def main(): ) parser.add_argument( '--config', - default=os.environ.get('CONFIG', 'bl-x86_64-linux'), - help='Bazel config to use (default: bl-x86_64-linux, or from CONFIG env var)' + default=os.environ.get('CONFIG', 'x86_64-linux'), + help='Bazel config to use (default: x86_64-linux, or from CONFIG env var)' ) args = parser.parse_args() diff --git a/scripts/known_good/update_module_latest.py b/scripts/known_good/update_module_latest.py index 7d6bfd384d9..44006afe606 100755 --- a/scripts/known_good/update_module_latest.py +++ b/scripts/known_good/update_module_latest.py @@ -133,24 +133,22 @@ def main(argv: list[str]) -> int: for mod in known_good.modules.values(): try: - # Use module-specific branch if available, otherwise use command-line branch branch = mod.branch if mod.branch else args.branch if use_gh: latest = fetch_latest_commit_gh(mod.owner_repo, branch) else: latest = fetch_latest_commit(mod.owner_repo, branch, token) - - # Only reuse version if hash did not change - if latest != mod.hash: + + old_hash = mod.hash + if latest != old_hash: mod.hash = latest mod.version = None # Clear version when hash changes - - # Display format: if version exists, show "version -> hash", otherwise "hash -> hash" - if mod.version: - print(f"{mod.name}: {mod.version} -> {latest[:8]} (branch {branch})") + if mod.version: + print(f"{mod.name}: {mod.version} -> {latest[:8]} (branch {branch})") + else: + print(f"{mod.name}: {old_hash[:8]} -> {latest[:8]} (branch {branch})") else: - old_hash = known_good.modules[mod.name].hash - print(f"{mod.name}: {old_hash[:8]} -> {latest[:8]} (branch {branch})") + print(f"{mod.name}: {old_hash[:8]} (no update)") except Exception as e: # noqa: BLE001 failures += 1 print(f"ERROR {mod.name}: {e}", file=sys.stderr) diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index c82416f9f4c..7f12776f36a 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -3,7 +3,7 @@ set -uo pipefail # Integration unit test script. -CONFIG=${CONFIG:-bl-x86_64-linux} +CONFIG=${CONFIG:-x86_64-linux} LOG_DIR=${LOG_DIR:-_logs/logs_ut} SUMMARY_FILE=${SUMMARY_FILE:-_logs/ut_summary.md} mkdir -p "${LOG_DIR}" || true @@ -23,26 +23,25 @@ declare -A UT_TARGET_GROUPS=( # -@score_communication//score/mw/com/impl/configuration:config_parser_test \ # -@score_communication//score/mw/com/impl/configuration:configuration_test \ # -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test" - [persistency]="@score_persistency//:unit_tests -- \ - -@score_persistency//src/cpp/tests:test_kvs_cpp" # C++ test has linker issues with logging library + [persistency]="@score_persistency//src/rust/rust_kvs:tests" # C++ test has linker issues with logging library [orchestrator]="@score_orchestrator//src/..." # ok [kyron]="@score_kyron//:unit_tests" # ok [feo]="@score_feo//... --build_tests_only" # ok (flag required or error from docs) - [logging]="@score_logging//score/... \ - --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ - --@score_baselibs//score/json:base_library=nlohmann \ - --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ - --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ - --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ - --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ - --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ - --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True \ - --test_tag_filters=-manual \ - -- -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT \ - -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT \ - -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT \ - -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test \ - -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT " + # [logging]="@score_logging//score/... \ + # --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ + # --@score_baselibs//score/json:base_library=nlohmann \ + # --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ + # --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ + # --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ + # --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ + # --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ + # --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True \ + # --test_tag_filters=-manual \ + # -- -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT \ + # -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT \ + # -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT \ + # -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test \ + # -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT " ) # Markdown table header From 4548024d6e3b52787876d15643f5bbf09d2a263e Mon Sep 17 00:00:00 2001 From: lurtz <727209+lurtz@users.noreply.github.com> Date: Thu, 29 Jan 2026 10:10:44 +0100 Subject: [PATCH 16/55] chore: use devcontainer image v1.1.0 and fix ebclfsa workflow (#82) * chore: use devcontainer image v1.1.0 Some time passed already since creation of version 1.0 and we should eventually the use version used in the workflow. * Trigger ebclfsa workflow on workflow changes Changing the workflow could otherwise in undetected build breaks. Co-authored-by: Oliver Pajonk Signed-off-by: lurtz <727209+lurtz@users.noreply.github.com> * Add ebclfsa/.bazelversion Fixes the ebclfsa build where bazel now wants to download version 9.0.0. The specified bazel version is present in the devcontainer and will not trigger a download. --------- Signed-off-by: lurtz <727209+lurtz@users.noreply.github.com> Co-authored-by: Oliver Pajonk --- .github/workflows/build_and_test_ebclfsa.yml | 9 +++++---- ebclfsa/.bazelversion | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 ebclfsa/.bazelversion diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index b7028cd18bb..f7159ed20ae 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -16,12 +16,13 @@ name: Build for and Test on EB corbos Linux for Safety Applications on: pull_request: paths: - - 'ebclfsa/**' + - "ebclfsa/**" + - ".github/workflows/build_and_test_ebclfsa.yml" push: branches: - main release: - types: [created] + types: [created] workflow_dispatch: jobs: @@ -29,12 +30,12 @@ jobs: name: build-and-test-ebclfsa runs-on: ubuntu-latest container: - image: ghcr.io/eclipse-score/devcontainer:0.1.0 + image: ghcr.io/eclipse-score/devcontainer:v1.1.0 steps: - name: Checkout repository uses: actions/checkout@v4 - + - name: Build for EB corbos Linux for Safety Applications and run tests run: | bazel build --config=aarch64-ebclfsa //scrample_integration:run diff --git a/ebclfsa/.bazelversion b/ebclfsa/.bazelversion new file mode 100644 index 00000000000..6da4de57dc6 --- /dev/null +++ b/ebclfsa/.bazelversion @@ -0,0 +1 @@ +8.4.1 From 06f4d413588c4d690f26841c9c170d6fe968269b Mon Sep 17 00:00:00 2001 From: MaciejKaszynski <161459353+MaciejKaszynski@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:39:15 +0000 Subject: [PATCH 17/55] Adding lifecycle to reference integraion (#84) Co-authored-by: Kai Graeper --- README.md | 7 +++++++ build_config.json | 3 +++ known_good.json | 4 ++++ score_modules.MODULE.bazel | 7 +++++++ 4 files changed, 21 insertions(+) diff --git a/README.md b/README.md index a2b1b592248..796e2e38550 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,13 @@ bazel build --config x86_64-linux \ bazel build --config x86_64-linux @score_orchestrator//src/... ``` +### Lifecycle + +```bash +bazel build --config x86_64-linux @score_lifecycle_health//src/... --verbose_failures +``` + + ## Feature showcase examples The examples that are aiming to showcase features provided by S-CORE are located in `feature_showcase` folder. You can run them currently for host platform using `--config x86_64-linux`. diff --git a/build_config.json b/build_config.json index c7fd8cd99a3..7c06c59dbb6 100644 --- a/build_config.json +++ b/build_config.json @@ -23,6 +23,9 @@ }, "score_logging": { "build_targets": "@score_logging//score/mw/log" + }, + "score_lifecycle_health": { + "build_targets": "@score_lifecycle_health//src/..." } } } diff --git a/known_good.json b/known_good.json index 5d0bf111bf4..d82f02b0f60 100644 --- a/known_good.json +++ b/known_good.json @@ -52,6 +52,10 @@ "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", "hash": "496fb6dc347de414d9cbe7523204fdeb6b511197" + }, + "score_lifecycle_health": { + "repo": "https://github.com/eclipse-score/lifecycle.git", + "hash": "4a9928d74847ed9e4f346836c3a8ac7ea75f1851" } }, "timestamp": "2026-01-26T11:01:36+00:00Z" diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 7be01d5c79a..93a4fb3c0b2 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -104,3 +104,10 @@ git_override( remote = "https://github.com/eclipse-score/process_description.git", commit = "496fb6dc347de414d9cbe7523204fdeb6b511197", ) + +bazel_dep(name = "score_lifecycle_health") +git_override( + module_name = "score_lifecycle_health", + remote = "https://github.com/eclipse-score/lifecycle.git", + commit = "4a9928d74847ed9e4f346836c3a8ac7ea75f1851", +) From 99b05fb6b9ca629e1bec270e3e10b692717c0d2b Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Tue, 10 Feb 2026 14:17:31 +0100 Subject: [PATCH 18/55] Images as single module (#86) * Initial reworked structure * Move feature_showcases to showcases and deploy to x86 * Initial itf support in qnx_x86_64 image * add scrample tests via images * move ebclfsa into images * Rename macro * Make examples using CLI to help user understand content of release * add persistency itf test * Fix CLI for QNX and support x86_64 toolchain * Add cli as entrypoint * Cleanup module bazel * Fix logo * Single module test * Port EB Corbos * Move autosd * Make structure more meangfull * Fix patches * Remove autosd and EB * Align autosd and workflows * fix docs build * Fix workflows * Remove qnx_qemu as it was moved to images --------- Co-authored-by: Piotr Korkus --- .github/workflows/build_and_test_autosd.yml | 43 +- .github/workflows/build_and_test_ebclfsa.yml | 24 +- .../workflows/build_and_test_on_every_pr.yml | 56 - .github/workflows/build_and_test_qnx.yml | 69 ++ .github/workflows/test_integration.yml | 1 + MODULE.bazel | 9 - README.md | 37 + autosd/.bazelrc | 71 -- autosd/MODULE.bazel | 70 -- .../0001-example-visibility.patch | 55 - autosd/score_modules.MODULE.bazel | 94 -- autosd/score_toolchains.MODULE.bazel | 33 - ebclfsa/.bazelrc | 14 - ebclfsa/.bazelversion | 1 - ebclfsa/MODULE.bazel | 69 -- feature_showcase/BUILD | 19 - integration/.bazelrc | 47 + integration/.bazelversion | 1 + {autosd/patches => integration}/BUILD | 0 integration/MODULE.bazel | 70 ++ integration/README.md | 5 + .../bazel_common}/BUILD | 0 integration/bazel_common/bundlers.bzl | 89 ++ .../score_basic_tools.MODULE.bazel | 18 + .../score_gcc_toolchains.MODULE.bazel | 86 ++ .../bazel_common/score_modules.MODULE.bazel | 35 + .../bazel_common/score_python.MODULE.bazel | 12 + .../score_qnx_toolchains.MODULE.bazel | 25 + .../score_rust_toolchains.MODULE.bazel | 7 + .../feature_integration_tests}/BUILD | 0 .../feature_integration_tests}/README.md | 0 .../feature_integration_tests/configs}/BUILD | 8 +- .../configs}/etc/logging.json | 0 .../configs}/etc/mw_com_config.json | 0 .../configs/qemu_target_config.json | 0 .../feature_integration_tests/itf/BUILD | 7 + .../itf/test_persistency.py | 0 .../itf/test_scrample.py | 21 +- .../itf/test_ssh.py | 0 .../test_cases/BUILD | 0 .../test_cases/conftest.py | 0 .../test_cases/fit_scenario.py | 0 .../test_cases/pytest.ini | 0 .../test_cases/requirements.txt | 0 .../test_cases/requirements.txt.lock | 0 .../test_cases/test_properties.py | 0 .../test_orchestration_with_persistency.py | 0 .../persistency/test_multiple_kvs_per_app.py | 0 .../test_scenarios/rust/BUILD | 0 .../rust/src/internals/kyron/mod.rs | 0 .../src/internals/kyron/runtime_helper.rs | 0 .../test_scenarios/rust/src/internals/mod.rs | 0 .../src/internals/persistency/kvs_instance.rs | 0 .../internals/persistency/kvs_parameters.rs | 0 .../rust/src/internals/persistency/mod.rs | 0 .../test_scenarios/rust/src/main.rs | 0 .../rust/src/scenarios/basic/mod.rs | 0 .../basic/orchestration_with_persistency.rs | 0 .../test_scenarios/rust/src/scenarios/mod.rs | 0 .../rust/src/scenarios/persistency/mod.rs | 0 .../persistency/multiple_kvs_per_app.rs | 0 .../images/autosd_x86_64}/BUILD.bazel | 18 +- .../images/autosd_x86_64}/build/.gitignore | 0 .../images/autosd_x86_64}/build/README.md | 0 .../build/files/bluechi-agent-main.conf | 0 .../build/files/bluechi-agent-qm.conf | 0 .../build/files/bluechi-controller.conf | 0 .../build/files/lola-ipc-pub.service | 0 .../build/files/lola-ipc-sub.service | 0 .../autosd_x86_64}/build/files/lola-ipc-test | 0 .../build/files/lola-ipc-test.service | 0 .../images/autosd_x86_64}/build/image.aib.yml | 0 .../autosd_x86_64}/build/scripts/run_qemu | 0 .../autosd_x86_64}/build/vars-devel.yml | 0 .../images/autosd_x86_64}/build/vars.yml | 0 .../images/ebclfsa_aarch64}/BUILD | 0 .../images/ebclfsa_aarch64}/README.md | 2 +- .../docs/system_setup.drawio.png | Bin .../persistency_integration/BUILD | 0 .../persistency_integration/run_qemu.sh | 0 .../scripts/cpp_tests_persistency.sh | 0 .../scrample_integration/BUILD | 4 +- .../scrample_integration/etc/logging.json | 0 .../etc/mw_com_config.json | 0 .../scrample_integration/run_qemu.sh | 0 .../scrample_integration/src/main.cc | 0 integration/images/linux_x86_64/BUILD | 30 + integration/images/qnx_x86_64/BUILD | 93 ++ integration/images/qnx_x86_64/build/BUILD | 72 ++ .../images/qnx_x86_64}/build/init.build | 2 +- .../images/qnx_x86_64}/build/system.build | 41 +- .../images/qnx_x86_64}/configs/BUILD | 0 .../images/qnx_x86_64}/configs/dhcpcd.conf | 0 .../images/qnx_x86_64}/configs/group | 0 .../images/qnx_x86_64}/configs/hostname | 0 .../qnx_x86_64}/configs/network_capture.sh | 0 .../qnx_x86_64}/configs/network_setup.sh | 0 .../qnx_x86_64}/configs/network_setup_dhcp.sh | 0 .../images/qnx_x86_64}/configs/passwd | 0 .../images/qnx_x86_64}/configs/pci_hw.cfg | 0 .../images/qnx_x86_64}/configs/pci_server.cfg | 0 .../images/qnx_x86_64}/configs/profile | 0 .../images/qnx_x86_64}/configs/qcrypto.conf | 0 .../qnx_x86_64}/configs/ssh_host_rsa_key | 0 .../qnx_x86_64}/configs/ssh_host_rsa_key.pub | 0 .../images/qnx_x86_64}/configs/sshd_config | 0 .../images/qnx_x86_64}/configs/startup.sh | 9 +- .../baselibs/0001-RH-exception-header.patch | 0 .../baselibs/0002-RH-algorithm-header.patch | 0 .../baselibs/003-acl-fixes-for-aarch64.patch | 65 ++ integration/patches/baselibs/BUILD | 0 .../baselibs}/fix_hard_coded_amd64.patch | 0 integration/runners/docker_x86_64/BUILD | 24 + .../runners/docker_x86_64/scripts/BUILD | 1 + .../docker_x86_64/scripts/run_docker.sh | 24 + integration/runners/qemu_x86_64/BUILD | 29 + integration/runners/qemu_x86_64/scripts/BUILD | 1 + .../qemu_x86_64}/scripts/qnx_wireshark.sh | 0 .../runners/qemu_x86_64}/scripts/run_qemu.sh | 3 +- .../scripts/run_qemu_portforward.sh | 0 integration/score_starter | 111 ++ integration/scripts/qnx_credential_helper.py | 1 + integration/showcases/BUILD | 23 + integration/showcases/cli/BUILD | 26 + integration/showcases/cli/README.md | 27 + integration/showcases/cli/main.rs | 140 +++ integration/showcases/kyron/BUILD | 20 + integration/showcases/kyron/kyron.score.json | 9 + .../showcases}/kyron/main.rs | 0 .../orchestration_persistency}/BUILD | 21 +- .../orchestration_persistency/main.rs | 0 .../orch_per.score.json | 9 + integration/showcases/standalone/BUILD | 8 + qnx_qemu/.bazelversion | 1 - qnx_qemu/BUILD | 135 --- qnx_qemu/MODULE.bazel | 113 -- qnx_qemu/README.md | 1029 ----------------- qnx_qemu/test/test_qnx_qemu_bridge.sh | 509 -------- qnx_qemu/test/test_qnx_qemu_portforward.sh | 406 ------- score_modules.MODULE.bazel | 12 +- 140 files changed, 1324 insertions(+), 2790 deletions(-) delete mode 100644 .github/workflows/build_and_test_on_every_pr.yml create mode 100644 .github/workflows/build_and_test_qnx.yml delete mode 100644 autosd/.bazelrc delete mode 100644 autosd/MODULE.bazel delete mode 100644 autosd/patches/communication/0001-example-visibility.patch delete mode 100644 autosd/score_modules.MODULE.bazel delete mode 100644 autosd/score_toolchains.MODULE.bazel delete mode 100644 ebclfsa/.bazelrc delete mode 100644 ebclfsa/.bazelversion delete mode 100644 ebclfsa/MODULE.bazel delete mode 100644 feature_showcase/BUILD create mode 100644 integration/.bazelrc create mode 100644 integration/.bazelversion rename {autosd/patches => integration}/BUILD (100%) create mode 100644 integration/MODULE.bazel create mode 100644 integration/README.md rename {autosd/patches/baselibs => integration/bazel_common}/BUILD (100%) create mode 100644 integration/bazel_common/bundlers.bzl create mode 100644 integration/bazel_common/score_basic_tools.MODULE.bazel create mode 100644 integration/bazel_common/score_gcc_toolchains.MODULE.bazel create mode 100644 integration/bazel_common/score_modules.MODULE.bazel create mode 100644 integration/bazel_common/score_python.MODULE.bazel create mode 100644 integration/bazel_common/score_qnx_toolchains.MODULE.bazel create mode 100644 integration/bazel_common/score_rust_toolchains.MODULE.bazel rename {ebclfsa/patches => integration/feature_integration_tests}/BUILD (100%) rename {feature_integration_tests => integration/feature_integration_tests}/README.md (100%) rename {qnx_qemu/scrample_integration => integration/feature_integration_tests/configs}/BUILD (92%) rename {ebclfsa/scrample_integration => integration/feature_integration_tests/configs}/etc/logging.json (100%) rename {ebclfsa/scrample_integration => integration/feature_integration_tests/configs}/etc/mw_com_config.json (100%) rename qnx_qemu/target_config.json => integration/feature_integration_tests/configs/qemu_target_config.json (100%) create mode 100644 integration/feature_integration_tests/itf/BUILD rename {qnx_qemu/test => integration/feature_integration_tests}/itf/test_persistency.py (100%) rename {qnx_qemu/test => integration/feature_integration_tests}/itf/test_scrample.py (73%) rename {qnx_qemu/test => integration/feature_integration_tests}/itf/test_ssh.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/BUILD (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/conftest.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/fit_scenario.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/pytest.ini (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/requirements.txt (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/requirements.txt.lock (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/test_properties.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/tests/basic/test_orchestration_with_persistency.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_cases/tests/persistency/test_multiple_kvs_per_app.py (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/BUILD (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/kyron/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/kyron/runtime_helper.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/persistency/kvs_instance.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/internals/persistency/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/main.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/scenarios/basic/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/scenarios/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/scenarios/persistency/mod.rs (100%) rename {feature_integration_tests => integration/feature_integration_tests}/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs (100%) rename {autosd => integration/images/autosd_x86_64}/BUILD.bazel (71%) rename {autosd => integration/images/autosd_x86_64}/build/.gitignore (100%) rename {autosd => integration/images/autosd_x86_64}/build/README.md (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/bluechi-agent-main.conf (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/bluechi-agent-qm.conf (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/bluechi-controller.conf (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/lola-ipc-pub.service (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/lola-ipc-sub.service (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/lola-ipc-test (100%) rename {autosd => integration/images/autosd_x86_64}/build/files/lola-ipc-test.service (100%) rename {autosd => integration/images/autosd_x86_64}/build/image.aib.yml (100%) rename {autosd => integration/images/autosd_x86_64}/build/scripts/run_qemu (100%) rename {autosd => integration/images/autosd_x86_64}/build/vars-devel.yml (100%) rename {autosd => integration/images/autosd_x86_64}/build/vars.yml (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/BUILD (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/README.md (99%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/docs/system_setup.drawio.png (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/persistency_integration/BUILD (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/persistency_integration/run_qemu.sh (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/persistency_integration/scripts/cpp_tests_persistency.sh (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/scrample_integration/BUILD (98%) rename {qnx_qemu => integration/images/ebclfsa_aarch64}/scrample_integration/etc/logging.json (100%) rename {qnx_qemu => integration/images/ebclfsa_aarch64}/scrample_integration/etc/mw_com_config.json (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/scrample_integration/run_qemu.sh (100%) rename {ebclfsa => integration/images/ebclfsa_aarch64}/scrample_integration/src/main.cc (100%) create mode 100644 integration/images/linux_x86_64/BUILD create mode 100644 integration/images/qnx_x86_64/BUILD create mode 100644 integration/images/qnx_x86_64/build/BUILD rename {qnx_qemu => integration/images/qnx_x86_64}/build/init.build (98%) rename {qnx_qemu => integration/images/qnx_x86_64}/build/system.build (89%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/BUILD (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/dhcpcd.conf (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/group (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/hostname (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/network_capture.sh (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/network_setup.sh (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/network_setup_dhcp.sh (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/passwd (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/pci_hw.cfg (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/pci_server.cfg (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/profile (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/qcrypto.conf (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/ssh_host_rsa_key (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/ssh_host_rsa_key.pub (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/sshd_config (100%) rename {qnx_qemu => integration/images/qnx_x86_64}/configs/startup.sh (89%) rename {autosd => integration}/patches/baselibs/0001-RH-exception-header.patch (100%) rename {autosd => integration}/patches/baselibs/0002-RH-algorithm-header.patch (100%) create mode 100644 integration/patches/baselibs/003-acl-fixes-for-aarch64.patch create mode 100644 integration/patches/baselibs/BUILD rename {ebclfsa/patches => integration/patches/baselibs}/fix_hard_coded_amd64.patch (100%) create mode 100644 integration/runners/docker_x86_64/BUILD create mode 100644 integration/runners/docker_x86_64/scripts/BUILD create mode 100755 integration/runners/docker_x86_64/scripts/run_docker.sh create mode 100644 integration/runners/qemu_x86_64/BUILD create mode 100644 integration/runners/qemu_x86_64/scripts/BUILD rename {qnx_qemu => integration/runners/qemu_x86_64}/scripts/qnx_wireshark.sh (100%) rename {qnx_qemu => integration/runners/qemu_x86_64}/scripts/run_qemu.sh (95%) rename {qnx_qemu => integration/runners/qemu_x86_64}/scripts/run_qemu_portforward.sh (100%) create mode 100755 integration/score_starter create mode 120000 integration/scripts/qnx_credential_helper.py create mode 100644 integration/showcases/BUILD create mode 100644 integration/showcases/cli/BUILD create mode 100644 integration/showcases/cli/README.md create mode 100644 integration/showcases/cli/main.rs create mode 100644 integration/showcases/kyron/BUILD create mode 100644 integration/showcases/kyron/kyron.score.json rename {feature_showcase/rust => integration/showcases}/kyron/main.rs (100%) rename {feature_showcase/rust => integration/showcases/orchestration_persistency}/BUILD (74%) rename {feature_showcase/rust => integration/showcases}/orchestration_persistency/main.rs (100%) create mode 100644 integration/showcases/orchestration_persistency/orch_per.score.json create mode 100644 integration/showcases/standalone/BUILD delete mode 100644 qnx_qemu/.bazelversion delete mode 100644 qnx_qemu/BUILD delete mode 100644 qnx_qemu/MODULE.bazel delete mode 100644 qnx_qemu/README.md delete mode 100755 qnx_qemu/test/test_qnx_qemu_bridge.sh delete mode 100755 qnx_qemu/test/test_qnx_qemu_portforward.sh diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 656e549449a..46b1d470873 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -11,23 +11,22 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: Build and Test AutoSD +name: AutoSD - Build & Test on: pull_request: + types: [opened, reopened, synchronize] paths: - - 'autosd/**' - push: - branches: - - main - release: - types: [created] - workflow_dispatch: + - 'integration/**' + merge_group: + types: [checks_requested] + paths: + - 'integration/**' jobs: build: - name: build-and-test-autosd + name: x86_64 runs-on: ubuntu-latest steps: @@ -44,18 +43,18 @@ jobs: - name: Build Lola Demo run: | - bazel build --config=bl-x86_64-linux-autosd //:lola-demo - working-directory: ./autosd + bazel build --config=autosd-x86_64 //images/autosd_x86_64:lola-demo + working-directory: ./integration - name: Copy RPMs run: | set -e - mkdir -p ./build/rpms - cp bazel-out/k8-fastbuild/bin/lola-demo-1.0.0-1.x86_64.rpm ./build/rpms - cp bazel-out/k8-fastbuild/bin/lola-demo-1.0.0-1.src.rpm ./build/rpms - createrepo_c ./build/rpms/ - ls -l ./build/rpms/ - working-directory: ./autosd + mkdir -p ./images/autosd_x86_64/build/rpms + cp bazel-out/k8-fastbuild/bin/images/autosd_x86_64/lola-demo-1.0.0-1.x86_64.rpm ./images/autosd_x86_64/build/rpms + cp bazel-out/k8-fastbuild/bin/images/autosd_x86_64/lola-demo-1.0.0-1.src.rpm ./images/autosd_x86_64/build/rpms + createrepo_c ./images/autosd_x86_64/build/rpms/ + ls -l ./images/autosd_x86_64/build/rpms/ + working-directory: ./integration - name: Install AIB Tools run: | @@ -64,7 +63,7 @@ jobs: curl -o automotive-image-runner "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/automotive-image-runner" chmod +x automotive-image-runner - working-directory: ./autosd/build + working-directory: ./integration/images/autosd_x86_64/build - name: Build lola-demo.aib.yml run: | @@ -79,7 +78,7 @@ jobs: disk.qcow2 sudo chown $(id -u) disk.qcow2 - working-directory: ./autosd/build + working-directory: ./integration/images/autosd_x86_64/build - name: Enable KVM group perms run: | @@ -97,8 +96,8 @@ jobs: sleep 10 sshcmd 'bluechictl start agent-qm lola-ipc-sub.service' sleep 5 - sshcmd '/usr/bin/lola-ipc-test' - working-directory: ./autosd/build + # sshcmd '/usr/bin/lola-ipc-test' Disabled until correct exmaples deployed + working-directory: ./integration/images/autosd_x86_64/build env: SSH_PASSWORD: password @@ -106,4 +105,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: autosd10-score-reference_integration-x86_64.qcow2 - path: autosd/build/disk.qcow2 + path: integration/images/autosd_x86_64/build/disk.qcow2 diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index f7159ed20ae..1d644ab69d5 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -11,23 +11,21 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: Build for and Test on EB corbos Linux for Safety Applications +name: EB Corbos Linux for Safety Applications - Build & Test on: pull_request: + types: [opened, reopened, synchronize] paths: - - "ebclfsa/**" - - ".github/workflows/build_and_test_ebclfsa.yml" - push: - branches: - - main - release: - types: [created] - workflow_dispatch: + - 'integration/**' + merge_group: + types: [checks_requested] + paths: + - 'integration/**' jobs: build: - name: build-and-test-ebclfsa + name: aarch64 runs-on: ubuntu-latest container: image: ghcr.io/eclipse-score/devcontainer:v1.1.0 @@ -38,9 +36,8 @@ jobs: - name: Build for EB corbos Linux for Safety Applications and run tests run: | - bazel build --config=aarch64-ebclfsa //scrample_integration:run - bazel build --config=aarch64-ebclfsa //persistency_integration:run - working-directory: ./ebclfsa + bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run + working-directory: ./integration - name: Upload test logs uses: actions/upload-artifact@v5 @@ -48,4 +45,3 @@ jobs: name: test-logs path: | ebclfsa/bazel-bin/scrample_integration/*.log - ebclfsa/bazel-bin/persistency_integration/*.log diff --git a/.github/workflows/build_and_test_on_every_pr.yml b/.github/workflows/build_and_test_on_every_pr.yml deleted file mode 100644 index 9cb19b46d57..00000000000 --- a/.github/workflows/build_and_test_on_every_pr.yml +++ /dev/null @@ -1,56 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -name: Test reference integration -on: - pull_request: - types: [opened, reopened, synchronize] - merge_group: - types: [checks_requested] - -permissions: - contents: write - -jobs: - test_reference_integration: - runs-on: ubuntu-22.04 - steps: - - name: Checkout repository - uses: actions/checkout@v4.2.2 - - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.9.1 - - name: Setup QNX License - env: - SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }} - run: | - mkdir -p /opt/score_qnx/license - echo "${SCORE_QNX_LICENSE}" | base64 --decode > /opt/score_qnx/license/licenses - - name: Install qemu - run: | - sudo apt-get update - sudo apt-get install -y qemu-system - - name: Enable KVM group perms - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - name: Bazel execute showcase examples - run: | - set -e - bazel build --config x86_64-linux //feature_showcase:all_examples - while read -r target; do - bazel run --config x86_64-linux "$target" - done < ci/showcase_targets_run.txt - - name: Feature Integration Tests - run: | - bazel test --config x86_64-linux //feature_integration_tests/test_cases:fit diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml new file mode 100644 index 00000000000..a26add8f6f1 --- /dev/null +++ b/.github/workflows/build_and_test_qnx.yml @@ -0,0 +1,69 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: QNX8 - Build & Test +on: + pull_request: + types: [opened, reopened, synchronize] + paths: + - 'integration/**' + merge_group: + types: [checks_requested] + paths: + - 'integration/**' + +jobs: + qnx-build-x86_64: + name: x86_64 + runs-on: ${{ vars.REPO_RUNNER_LABELS && fromJSON(vars.REPO_RUNNER_LABELS) || 'ubuntu-latest' }} + environment: ${{ inputs.environment-name }} + permissions: + contents: read + pull-requests: read + + steps: + - name: Checkout repository (Handle all events) + uses: actions/checkout@v4.2.2 + with: + ref: ${{ github.head_ref || github.event.pull_request.head.ref || github.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + + - name: Setup Bazel with shared caching + uses: bazel-contrib/setup-bazel@0.18.0 + with: + disk-cache: ${{ inputs.bazel-disk-cache }} + repository-cache: true + bazelisk-cache: true + cache-save: ${{ github.event_name == 'push' }} + + - name: Prepare QNX license + env: + SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }} + run: | + set -euo pipefail + + LICENSE_DIR="/opt/score_qnx/license" + sudo mkdir -p "${LICENSE_DIR}" + echo "${SCORE_QNX_LICENSE}" | base64 --decode | sudo tee "${LICENSE_DIR}/licenses" >/dev/null + + - name: Build with QNX toolchain + env: + SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} + SCORE_QNX_PASSWORD: ${{ secrets.SCORE_QNX_PASSWORD }} + run: | + bazel build --config qnx-x86_64 //images/qnx_x86_64:image + working-directory: ./integration + + - name: Cleanup QNX license + if: always() + run: sudo rm -rf /opt/score_qnx \ No newline at end of file diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index f1e67e95abf..57bc156a9dd 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -23,6 +23,7 @@ on: # - cron: '30 2 * * *' # Every night at 02:30 UTC on main branch jobs: integration_test: + if: false # Disable job as now latest greatest main loop does not work uses: ./.github/workflows/reusable_smoke-test.yml secrets: inherit with: diff --git a/MODULE.bazel b/MODULE.bazel index ec3c107dd4a..74ca2448103 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,15 +33,6 @@ python.toolchain( ) use_repo(python) -pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True) -pip.parse( - hub_name = "pip_score_venv_test", - python_version = PYTHON_VERSION, - requirements_lock = "//feature_integration_tests/test_cases:requirements.txt.lock", -) - -use_repo(pip, "pip_score_venv_test") - # Special imports for certain modules # communication module dependencies diff --git a/README.md b/README.md index 796e2e38550..ad093657bba 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,43 @@ The reference integration workspace serves as a single Bazel build environment t - Test toolchain and platform support (Linux, QNX, LLVM/GCC) - Prepare for release validation workflows + +## Structure of integration folder + +Intention for each folder is described below + +### bazel_common +Used to keep a common bazel functionalities for `images` like: +- toolchain setups +- common tooling deps +- common S-CORE modules deps +- common `.bzl` extensions needed to streamline images + + +### showcases +Used to keep `S-CORE` wide **showcases** implementation to showcase S-CORE in certain deployments (images). Contains: +- proxy target bundling all `standalone` examples from all `S-CORE` repos to deploy then as single bazel target into image +- implementation of certain **showcases** that shall be deployed into images + +#### cli + +Contains a CLI tool to be used on runner that is showcasing the S-CORE functionality. It will provide superior user experience and will guide user to run examples. +How to use it in Your image, look [here](./integration/showcases/cli/README.md) + +### images +Used to keep concrete `images` for given target platform as bazel modules. Each platform shall have it's own folder with name `{platform}_{arch}` ie. `qnx_aarch64`. + +This `images` shall: + - deploy all `showcases` into image so they can be run inside + - other specific code for given `image` + +### runners +Used to keep thin logic ro reuse `runners` between images, like docker runner etc. + + + + + ## Docs To generate a full documentation of all integrated modules, run: diff --git a/autosd/.bazelrc b/autosd/.bazelrc deleted file mode 100644 index 94e9876fedf..00000000000 --- a/autosd/.bazelrc +++ /dev/null @@ -1,71 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ -common --registry=https://bcr.bazel.build - - -# Flags needed by score_baselibs and communication modules. -# Do not add more! -build --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False -build --@score_baselibs//score/mw/log/flags:KRemote_Logging=False -build --@score_baselibs//score/json:base_library=nlohmann -build --@score_communication//score/mw/com/flags:tracing_library=stub - -# stop legacy behavior of creating __init__.py files -build --incompatible_default_to_explicit_init_py -build --incompatible_strict_action_env -build --experimental_retain_test_configuration_across_testonly #https://github.com/bazelbuild/bazel/issues/6842 - -test --test_tag_filters=-manual -test --test_output=errors - -build:_bl_common --host_platform=@score_bazel_platforms//:x86_64-linux - -# This config is for internal module usage ONLY. -build:bl-x86_64-linux --config=_bl_common -build:bl-x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux -build:bl-x86_64-linux --extra_toolchains=@gcc_toolchain//:host_gcc_12 - -# This config is for internal module usage ONLY. -build:bl-x86_64-qnx --config=_bl_common -build:bl-x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx -build:bl-x86_64-qnx --extra_toolchains=@toolchains_qnx_qcc//:qcc_x86_64 - -# This config is for internal module usage ONLY. -# build --incompatible_enable_cc_toolchain_resolution -build:bl-x86_64-linux-autosd --config=_bl_common -build:bl-x86_64-linux-autosd --platforms=@score_bazel_platforms//:x86_64-linux -build:bl-x86_64-linux-autosd --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 -build:bl-x86_64-linux-autosd --force_pic - -# This config is for internal module usage ONLY. -test:bl-x86_64-linux --config=_bl_common -test:bl-x86_64-linux --build_tests_only -test:bl-x86_64-linux --test_tag_filters=-manual -test:bl-x86_64-linux --test_output=errors - - -# config from communication .bazelrc file -# unshare /dev/shm and /tmp -test --sandbox_tmpfs_path=/dev/shm -test --sandbox_tmpfs_path=/tmp - -# Java -build --java_language_version=17 -build --tool_java_language_version=17 -build --java_runtime_version=remotejdk_17 -build --tool_java_runtime_version=remotejdk_17 - -# user specific overrides (like proxy settings) -try-import %workspace%/user.bazelrc diff --git a/autosd/MODULE.bazel b/autosd/MODULE.bazel deleted file mode 100644 index 1ea1e1e1429..00000000000 --- a/autosd/MODULE.bazel +++ /dev/null @@ -1,70 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -module( - name = "os_autosd_reference_integration", - version = "0.0.1", -) - -include("//:score_modules.MODULE.bazel") -include("//:score_toolchains.MODULE.bazel") - -## Python -bazel_dep(name = "rules_python", version = "1.4.1") - -PYTHON_VERSION = "3.12" - -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - configure_coverage_tool = True, - is_default = True, - python_version = PYTHON_VERSION, -) -use_repo(python) - -pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True) -pip.parse( - hub_name = "pip_score_venv_test", - python_version = PYTHON_VERSION, - requirements_lock = "//feature_integration_tests/python_test_cases:requirements.txt.lock", -) -use_repo(pip, "pip_score_venv_test") - -# communication module dependencies -# archive_override are not forwarded by bazel_dep, so we need to redefine it here -bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") -archive_override( - module_name = "rules_boost", - strip_prefix = "rules_boost-master", - urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], -) - -# git_override are not forwarded by bazel_dep, so we need to redefine it here -bazel_dep(name = "trlc") -git_override( - module_name = "trlc", - commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release - remote = "https://github.com/bmw-software-engineering/trlc.git", -) - -# imports for the feature showcase module -bazel_dep(name = "rules_rust", version = "0.61.0") -bazel_dep(name = "score_itf", version = "0.1.0") -bazel_dep(name = "score_crates", version = "0.0.4") - -# RPM packaging support -bazel_dep(name = "rules_rpm", version = "0.1.0") -git_override( - module_name = "rules_rpm", - branch = "main", - remote = "https://github.com/bilelmoussaoui/bazel-rpm.git", -) diff --git a/autosd/patches/communication/0001-example-visibility.patch b/autosd/patches/communication/0001-example-visibility.patch deleted file mode 100644 index 8040c2872b1..00000000000 --- a/autosd/patches/communication/0001-example-visibility.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/score/mw/com/example/ipc_bridge/BUILD b/score/mw/com/example/ipc_bridge/BUILD -index 2c364e1..f797762 100644 ---- a/score/mw/com/example/ipc_bridge/BUILD -+++ b/score/mw/com/example/ipc_bridge/BUILD -@@ -29,6 +29,7 @@ cc_binary( - "@score_baselibs//score/language/futurecpp", - "@score_baselibs//score/mw/log", - ], -+ visibility = ["//visibility:public"] - ) - - cc_library( -@@ -45,6 +46,7 @@ cc_library( - "//score/mw/com", - "@score_baselibs//score/mw/log", - ], -+ visibility = ["//visibility:public"] - ) - - cc_library( -@@ -60,6 +62,7 @@ cc_library( - "//score/mw/com", - "@score_baselibs//score/language/futurecpp", - ], -+ visibility = ["//visibility:public"] - ) - - rust_library( -@@ -70,6 +73,7 @@ rust_library( - "//score/mw/com/impl/rust:mw_com", - "@crate_index//:libc", - ], -+ visibility = ["//visibility:public"] - ) - - rust_binary( -@@ -84,6 +88,7 @@ rust_binary( - "@crate_index//:clap", - "@crate_index//:futures", - ], -+ visibility = ["//visibility:public"] - ) - - cc_library( -@@ -94,4 +99,10 @@ cc_library( - ":datatype", - "//score/mw/com/impl/rust:bridge_macros", - ], -+ visibility = ["//visibility:public"] -+) -+ -+exports_files( -+ ["etc/mw_com_config.json", "etc/logging.json"], -+ visibility = ["//visibility:public"] - ) diff --git a/autosd/score_modules.MODULE.bazel b/autosd/score_modules.MODULE.bazel deleted file mode 100644 index 22a726be63c..00000000000 --- a/autosd/score_modules.MODULE.bazel +++ /dev/null @@ -1,94 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -bazel_dep(name = "score_baselibs") -single_version_override( - module_name = "score_baselibs", - version = "0.1.3", - patches = [ - "//patches/baselibs:0001-RH-exception-header.patch", - "//patches/baselibs:0002-RH-algorithm-header.patch", - ], - patch_strip = 1, -) - -bazel_dep(name = "score_communication") -single_version_override( - module_name = "score_communication", - version = "0.1.0", - patches = [ - "patches/communication/0001-example-visibility.patch", - ], - patch_strip = 1 -) - -bazel_dep(name = "score_persistency") -single_version_override( - module_name = "score_persistency", - version = "0.2.1", -) - -bazel_dep(name = "score_orchestrator") -single_version_override( - module_name = "score_orchestrator", - version = "0.0.3", -) - -bazel_dep(name = "score_tooling") -single_version_override( - module_name = "score_tooling", - version = "1.0.2", -) - -bazel_dep(name = "score_platform") -single_version_override( - module_name = "score_platform", - version = "0.5.0", -) - -bazel_dep(name = "score_bazel_platforms") -single_version_override( - module_name = "score_bazel_platforms", - version = "0.0.2", -) - -bazel_dep(name = "score_test_scenarios") -single_version_override( - module_name = "score_test_scenarios", - version = "0.3.0", -) - -bazel_dep(name = "score_docs_as_code") -single_version_override( - module_name = "score_docs_as_code", - version = "2.2.0", -) - -bazel_dep(name = "score_process") -single_version_override( - module_name = "score_process", - version = "1.3.2", -) - -bazel_dep(name = "score_feo", version = "1.0.2") -single_version_override( - module_name = "score_feo", - version = "1.0.2", -) - -bazel_dep(name = "score_kyron") -git_override( - module_name = "score_kyron", - remote = "https://github.com/eclipse-score/kyron.git", - commit = "c5837ac6612a5ebf91cd016775f2d3ee85ed6892", -) diff --git a/autosd/score_toolchains.MODULE.bazel b/autosd/score_toolchains.MODULE.bazel deleted file mode 100644 index a2aecce6354..00000000000 --- a/autosd/score_toolchains.MODULE.bazel +++ /dev/null @@ -1,33 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -bazel_dep(name = "os_autosd_toolchain", version = "0.0.1") -# override with git -git_override( - module_name = "os_autosd_toolchain", - remote = "https://github.com/odra/inc_os_autosd.git", - branch = "repo-new-structure", - strip_prefix = "toolchain" - -) -autosd_10_gcc = use_extension("@os_autosd_toolchain//autosd_10_gcc:extensions.bzl", "autosd_10_gcc_extension") -use_repo(autosd_10_gcc, "autosd_10_gcc_repo") -register_toolchains("@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64") - -autosd_9_gcc = use_extension("@os_autosd_toolchain//autosd_9_gcc:extensions.bzl", "autosd_9_gcc_extension") -use_repo(autosd_9_gcc, "autosd_9_gcc_repo") -register_toolchains("@autosd_9_gcc_repo//:gcc_toolchain_linux_x86_64") - -# Register the RPM toolchain -rpm_toolchain = use_extension("@rules_rpm//toolchains:extensions.bzl", "rpm_toolchain") -use_repo(rpm_toolchain, "rpm_toolchain") -register_toolchains("@rules_rpm//toolchains:linux_x86_64") diff --git a/ebclfsa/.bazelrc b/ebclfsa/.bazelrc deleted file mode 100644 index c9589ef9cec..00000000000 --- a/ebclfsa/.bazelrc +++ /dev/null @@ -1,14 +0,0 @@ -common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ -common --registry=https://bcr.bazel.build - -build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False -build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False -build:_common --@score_baselibs//score/json:base_library=nlohmann -build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False -build:_common --@score_communication//score/mw/com/flags:tracing_library=stub -build:_common --cxxopt=-Wno-error=mismatched-new-delete - -build:aarch64-ebclfsa --config=_common -build:aarch64-ebclfsa --extra_toolchains=@gcc_toolchain//:aarch64_gcc_13 -build:aarch64-ebclfsa --platforms=@score_toolchains_gcc//platforms:aarch64-linux -build:aarch64-ebclfsa --spawn_strategy=local diff --git a/ebclfsa/.bazelversion b/ebclfsa/.bazelversion deleted file mode 100644 index 6da4de57dc6..00000000000 --- a/ebclfsa/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -8.4.1 diff --git a/ebclfsa/MODULE.bazel b/ebclfsa/MODULE.bazel deleted file mode 100644 index 04b66a59752..00000000000 --- a/ebclfsa/MODULE.bazel +++ /dev/null @@ -1,69 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -"EB corbos Linux for Safety Applications - S-CORE Reference Integration" - -module( - name = "reference_integration_ebclfsa", - version = "0.1.0", - compatibility_level = 0, -) - -bazel_dep(name = "rules_cc", version = "0.2.1") - -bazel_dep(name = "score_toolchains_gcc", dev_dependency=True) -git_override( # Elektrobit corbos Linux for Safety Applications needs a specific toolchain - module_name = "score_toolchains_gcc", - remote = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc.git", - tag = "0.5.0-beta" # corresponds to git sha 158921ffd9aabef41a2a03bca5baeaa9f4aa9d33 -) -gcc = use_extension("@score_toolchains_gcc//extensions:gcc.bzl", "gcc", dev_dependency=True) -gcc.toolchain( - url = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz", - sha256 = "05b57bbc8d99d46df6b57f774c39a5a2664964ea7eb94147cbece08508c1f121", - strip_prefix = "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64", -) -use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc") - -bazel_dep(name = "score_docs_as_code", version = "2.2.0") # part of 0.5.0-beta release -single_version_override( - module_name = "score_docs_as_code", - version = "2.2.0", -) - -bazel_dep(name = "score_baselibs") -single_version_override( - module_name = "score_baselibs", - version = "0.2.2", # part of 0.5.0-beta release - patch_strip = 1, - patches = [ - "//patches:fix_hard_coded_amd64.patch", - ], -) -bazel_dep(name = "score_communication", version = "0.1.2") # part of 0.5.0-beta release -bazel_dep(name = "score_scrample", version = "0.1.0") # part of 0.5.0-beta release -bazel_dep(name = "score_persistency", version = "0.2.2") # part of 0.5.0-beta release - -# git_override is not forwarded by bazel_dep, so we need to redefine it here -git_override( - module_name = "trlc", - remote = "https://github.com/bmw-software-engineering/trlc.git", - commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release -) - -# archive_override is not forwarded by bazel_dep, so we need to redefine it here -archive_override( - module_name = "rules_boost", - urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], - strip_prefix = "rules_boost-master", -) diff --git a/feature_showcase/BUILD b/feature_showcase/BUILD deleted file mode 100644 index 6844e029a7d..00000000000 --- a/feature_showcase/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -filegroup( - name = "all_examples", - srcs = [ - "//feature_showcase/rust:kyron_example", - "//feature_showcase/rust:orch_per_example", - ], -) - - - -genrule( - name = "build_all", - srcs = [ - "//feature_showcase/rust:kyron_example", - "//feature_showcase/rust:orch_per_example", - ], - outs = ["done.txt"], - cmd = "echo built > $@", -) \ No newline at end of file diff --git a/integration/.bazelrc b/integration/.bazelrc new file mode 100644 index 00000000000..f03197f6ef3 --- /dev/null +++ b/integration/.bazelrc @@ -0,0 +1,47 @@ +common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ +common --registry=https://bcr.bazel.build +common --credential_helper=*.qnx.com=%workspace%/scripts/qnx_credential_helper.py +common --credential_helper_timeout="60s" + +build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False +build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False +build:_common --@score_baselibs//score/json:base_library=nlohmann +build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False +build:_common --@score_communication//score/mw/com/flags:tracing_library=stub +build:_common --cxxopt=-Wno-error=mismatched-new-delete +build:_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +build:_common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu +build:_common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix + +build:qnx-x86_64 --config=_common +build:qnx-x86_64 --noexperimental_merged_skyframe_analysis_execution +build:qnx-x86_64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 +build:qnx-x86_64 --incompatible_enable_cc_toolchain_resolution +build:qnx-x86_64 --incompatible_strict_action_env +build:qnx-x86_64 --sandbox_writable_path=/var/tmp +build:qnx-x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix +build:qnx-x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0-posix +build:qnx-x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64 +build:qnx-x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 + +build:itf-qnx-x86_64 --config=qnx-x86_64 +build:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu +build:itf-qnx-x86_64 --test_arg="--qemu" +build:itf-qnx-x86_64 --test_arg="--os=qnx" + + +build:linux-x86_64 --config=_common +build:linux-x86_64 --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix +build:linux-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix + +build:eb-aarch64 --config=_common +build:eb-aarch64 --extra_toolchains=@gcc_toolchain//:aarch64_gcc_13 +build:eb-aarch64 --platforms=@score_toolchains_gcc//platforms:aarch64-linux +build:eb-aarch64 --spawn_strategy=local + + +build:autosd-x86_64 --config=_common +build:autosd-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux +build:autosd-x86_64 --force_pic +build:autosd-x86_64 --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 +build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 diff --git a/integration/.bazelversion b/integration/.bazelversion new file mode 100644 index 00000000000..e7fdef7e2e6 --- /dev/null +++ b/integration/.bazelversion @@ -0,0 +1 @@ +8.4.2 diff --git a/autosd/patches/BUILD b/integration/BUILD similarity index 100% rename from autosd/patches/BUILD rename to integration/BUILD diff --git a/integration/MODULE.bazel b/integration/MODULE.bazel new file mode 100644 index 00000000000..3725e8e71ea --- /dev/null +++ b/integration/MODULE.bazel @@ -0,0 +1,70 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +module( + name = "score_ref_int_qnx_x86_64", + version = "0.0.1", + compatibility_level = 0, +) + +# Include common modules +include("//bazel_common:score_basic_tools.MODULE.bazel") + +# GCC toolchains +include ("//bazel_common:score_gcc_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain + +# GCC toolchains +include ("//bazel_common:score_qnx_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain + +# Rust toolchains +include ("//bazel_common:score_rust_toolchains.MODULE.bazel") + +# Python support +include("//bazel_common:score_python.MODULE.bazel") + +# Score modules +include("//bazel_common:score_modules.MODULE.bazel") + +bazel_dep(name = "score_itf", version = "0.1.0") + +bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") +archive_override( + module_name = "rules_boost", + urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], + strip_prefix = "rules_boost-master", +) + +# TRLC dependency for requirements traceability +bazel_dep(name = "trlc", version = "0.0.0") +git_override( + module_name = "trlc", + commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release + remote = "https://github.com/bmw-software-engineering/trlc.git", +) + +git_override( + module_name = "score_toolchains_qnx", + commit = "aa94b4fb566b989d1a00395c810df2cf254a0cec", + remote = "https://github.com/qorix-group/toolchains_qnx.git", +) + + +# Currently required for ifs tooling +bazel_dep(name = "score_toolchains_qnx", version = "0.0.3") +toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency=True) +toolchains_qnx.sdp( + sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", + strip_prefix = "installation", + url = "https://www.qnx.com/download/download/79858/installation.tgz", +) +use_repo(toolchains_qnx, "toolchains_qnx_sdp") +use_repo(toolchains_qnx, "toolchains_qnx_ifs") diff --git a/integration/README.md b/integration/README.md new file mode 100644 index 00000000000..d9cd3982671 --- /dev/null +++ b/integration/README.md @@ -0,0 +1,5 @@ +# Integration directory + +## Get started + +Simply run `./score_starter` and select which integration You want to run. Once running, You will be guided by our welcome cli to run selected examples. \ No newline at end of file diff --git a/autosd/patches/baselibs/BUILD b/integration/bazel_common/BUILD similarity index 100% rename from autosd/patches/baselibs/BUILD rename to integration/bazel_common/BUILD diff --git a/integration/bazel_common/bundlers.bzl b/integration/bazel_common/bundlers.bzl new file mode 100644 index 00000000000..4f769c18d2d --- /dev/null +++ b/integration/bazel_common/bundlers.bzl @@ -0,0 +1,89 @@ +load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") +load("@rules_pkg//pkg:mappings.bzl", "pkg_files") + + +def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_package_files = []): + """ + Creates a reusable bundle by chaining Bazel packaging rules: + - Collects binaries and config files into a pkg_files target, renaming them into subdirectories. + - Packs them into a tar archive using pkg_tar, optionally with additional package files and a custom package directory. + - Extracts the tar archive using a custom untar rule. + Why: + - Group related binaries and config files into a single package for distribution or deployment. + - Group files from multiple targets into one package so deploying them into image is easy, consistent and same for each image. + Args: + name: Base name for all generated targets. + bins: List of binary file labels to include in the bundle (placed in 'bin/'). + config_data: Optional list of config file labels to include (placed in 'configs/'). + package_dir: Optional directory path for the package root inside the tar archive. + other_package_files: Optional list of additional `NAME_pkg_files` to include in the tar archive that was created by other `score_pkg_bundle` targets. + + """ + + all_files_name = name + "_pkg_files" + bundle_name = name + "_pkg_tar" + all_cfg = name + "_configs" + untar_name = name + + rename_dict = {} + for s in bins: + rename_dict[s] = "bin/" + Label(s).name + + if config_data != None: + for s in config_data: + rename_dict[s] = "configs/" + Label(s).name + + config_data_arr = [] + if config_data != None: + config_data_arr = config_data + + # Step 1: pkg_files + pkg_files( + name = all_files_name, + srcs = bins + config_data_arr, + renames = rename_dict, + visibility = ["//visibility:public"], + ) + + # Step 2: pkg_tar + pkg_tar( + name = bundle_name, + srcs = [":" + all_files_name] + other_package_files, + strip_prefix = "/", + package_dir = package_dir, + visibility = ["//visibility:public"], + ) + + # Step 3: untar + untar( + name = untar_name, + src = ":" + bundle_name, + visibility = ["//visibility:public"], + ) + + # Return the main targets + return { + "all_files": ":" + all_files_name, + "tar": ":" + bundle_name, + "tree": ":" + untar_name, + } + + +def _untar_impl(ctx): + out = ctx.actions.declare_directory(ctx.label.name) + + ctx.actions.run( + inputs = [ctx.file.src], + outputs = [out], + executable = "tar", + arguments = ["-xf", ctx.file.src.path, "-C", out.path], + ) + + return [DefaultInfo(files = depset([out]))] + +untar = rule( + implementation = _untar_impl, + attrs = { + "src": attr.label(allow_single_file = True), + }, +) \ No newline at end of file diff --git a/integration/bazel_common/score_basic_tools.MODULE.bazel b/integration/bazel_common/score_basic_tools.MODULE.bazel new file mode 100644 index 00000000000..ee685dcfbb1 --- /dev/null +++ b/integration/bazel_common/score_basic_tools.MODULE.bazel @@ -0,0 +1,18 @@ +bazel_dep(name = "rules_shell", version = "0.6.0") +bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "rules_pkg", version = "1.2.0") +bazel_dep(name = "score_bazel_platforms", version = "0.0.4") +bazel_dep(name = "score_crates", version = "0.0.6") +git_override( + module_name = "score_crates", + remote = "https://github.com/eclipse-score/score-crates.git", + commit = "ff8f312cd8ac221ff7562496c7f4d6b9b5c8ebb9", +) + + +bazel_dep(name = "rules_rpm", version = "0.1.0") +git_override( + module_name = "rules_rpm", + branch = "main", + remote = "https://github.com/bilelmoussaoui/bazel-rpm.git", +) diff --git a/integration/bazel_common/score_gcc_toolchains.MODULE.bazel b/integration/bazel_common/score_gcc_toolchains.MODULE.bazel new file mode 100644 index 00000000000..5dca0559292 --- /dev/null +++ b/integration/bazel_common/score_gcc_toolchains.MODULE.bazel @@ -0,0 +1,86 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + + +bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.2") +gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) + +gcc.toolchain( + name = "score_gcc_x86_64_toolchain", + target_cpu = "x86_64", + target_os = "linux", + use_default_package = True, + version = "12.2.0", +) + +# This is how new gcc more or less shall be registered: TBD by EB +# gcc.sdp( +# name = "fastdev_sdk", +# url = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz", +# strip_prefix = "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64", +# sha256 = "05b57bbc8d99d46df6b57f774c39a5a2664964ea7eb94147cbece08508c1f121", +# build_file = "//ebclfsa_aarch64/toolchain:gcc.BUILD", +# ) +# gcc.toolchain( +# name = "score_ebclfsa_aarch64_toolchain", +# sdp_to_link = "fastdev_sdk", +# target_os = "linux", +# target_cpu = "aarch64", +# version = "12.2.0", +# extra_link_flags = [ +# "-lpthread", +# ] +# ) + +# Workaround until above is fixed +bazel_dep(name = "score_toolchains_gcc", dev_dependency=True) +git_override( # Elektrobit corbos Linux for Safety Applications needs a specific toolchain + module_name = "score_toolchains_gcc", + remote = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc.git", + tag = "0.5.0-beta" # corresponds to git sha 158921ffd9aabef41a2a03bca5baeaa9f4aa9d33 +) +eb = use_extension("@score_toolchains_gcc//extensions:gcc.bzl", "gcc", dev_dependency=True) +eb.toolchain( + url = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz", + sha256 = "05b57bbc8d99d46df6b57f774c39a5a2664964ea7eb94147cbece08508c1f121", + strip_prefix = "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64", +) + + +bazel_dep(name = "os_autosd_toolchain", version = "0.0.1") +# override with git +git_override( + module_name = "os_autosd_toolchain", + remote = "https://github.com/odra/inc_os_autosd.git", + branch = "repo-new-structure", + strip_prefix = "toolchain" + +) +autosd_10_gcc = use_extension("@os_autosd_toolchain//autosd_10_gcc:extensions.bzl", "autosd_10_gcc_extension") +use_repo(autosd_10_gcc, "autosd_10_gcc_repo") + + +autosd_9_gcc = use_extension("@os_autosd_toolchain//autosd_9_gcc:extensions.bzl", "autosd_9_gcc_extension") +use_repo(autosd_9_gcc, "autosd_9_gcc_repo") + + +# Register the RPM toolchain +rpm_toolchain = use_extension("@rules_rpm//toolchains:extensions.bzl", "rpm_toolchain") +use_repo(rpm_toolchain, "rpm_toolchain") + + +use_repo(eb, "gcc_toolchain", "gcc_toolchain_gcc") +use_repo( + gcc, + "score_gcc_x86_64_toolchain", +) \ No newline at end of file diff --git a/integration/bazel_common/score_modules.MODULE.bazel b/integration/bazel_common/score_modules.MODULE.bazel new file mode 100644 index 00000000000..9b58a3d23d6 --- /dev/null +++ b/integration/bazel_common/score_modules.MODULE.bazel @@ -0,0 +1,35 @@ +bazel_dep(name = "score_baselibs", version = "0.1.3") +bazel_dep(name = "score_communication", version = "0.1.1",) # EB needs 0.1.2 but others does not work with it +bazel_dep(name = "score_persistency", version = "0.2.1") +bazel_dep(name = "score_scrample", version = "0.1.0") +bazel_dep(name = "score_orchestrator") +git_override( + module_name = "score_orchestrator", + remote = "https://github.com/eclipse-score/orchestrator.git", + commit = "18e136c34750c5db707f27f917d52efc7541e087", +) + +bazel_dep(name = "score_kyron") +git_override( + module_name = "score_kyron", + remote = "https://github.com/eclipse-score/kyron.git", + commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", +) + +git_override( + module_name = "score_persistency", + remote = "https://github.com/eclipse-score/persistency.git", + commit = "0037034bf853e5f955f028fab54ed319fb0441c3", +) + + +single_version_override( + module_name = "score_baselibs", + version = "0.1.3", + patch_strip = 1, + patches = [ + "//patches/baselibs:003-acl-fixes-for-aarch64.patch", + "//patches/baselibs:0001-RH-exception-header.patch", + "//patches/baselibs:0002-RH-algorithm-header.patch", + ], +) \ No newline at end of file diff --git a/integration/bazel_common/score_python.MODULE.bazel b/integration/bazel_common/score_python.MODULE.bazel new file mode 100644 index 00000000000..7a8c265621f --- /dev/null +++ b/integration/bazel_common/score_python.MODULE.bazel @@ -0,0 +1,12 @@ + +bazel_dep(name = "rules_python", version = "1.0.0") + +PYTHON_VERSION = "3.12" + +python = use_extension("@rules_python//python/extensions:python.bzl", "python") +python.toolchain( + configure_coverage_tool = True, + is_default = True, + python_version = PYTHON_VERSION, +) +use_repo(python) \ No newline at end of file diff --git a/integration/bazel_common/score_qnx_toolchains.MODULE.bazel b/integration/bazel_common/score_qnx_toolchains.MODULE.bazel new file mode 100644 index 00000000000..4ff05dd7a01 --- /dev/null +++ b/integration/bazel_common/score_qnx_toolchains.MODULE.bazel @@ -0,0 +1,25 @@ + +qcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) + +qcc.toolchain( + name = "score_qcc_aarch64_toolchain", + sdp_version = "8.0.0", + target_cpu = "aarch64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) + +qcc.toolchain( + name = "score_qcc_x86_64_toolchain", + sdp_version = "8.0.0", + target_cpu = "x86_64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +use_repo( + qcc, + "score_qcc_aarch64_toolchain", + "score_qcc_x86_64_toolchain", +) diff --git a/integration/bazel_common/score_rust_toolchains.MODULE.bazel b/integration/bazel_common/score_rust_toolchains.MODULE.bazel new file mode 100644 index 00000000000..4ade3bd3007 --- /dev/null +++ b/integration/bazel_common/score_rust_toolchains.MODULE.bazel @@ -0,0 +1,7 @@ +bazel_dep(name = "rules_rust", version = "0.61.0") +bazel_dep(name = "score_toolchains_rust", version = "0.4.0", dev_dependency = True) +git_override( + module_name = "rules_rust", + remote = "https://github.com/pawelrutkaq/rules_rust.git", # To be fixed once rule_rust is in score bazel registry + commit = "293337fd6402ec3dfbeb8f2d589f38ad9124dadd", +) \ No newline at end of file diff --git a/ebclfsa/patches/BUILD b/integration/feature_integration_tests/BUILD similarity index 100% rename from ebclfsa/patches/BUILD rename to integration/feature_integration_tests/BUILD diff --git a/feature_integration_tests/README.md b/integration/feature_integration_tests/README.md similarity index 100% rename from feature_integration_tests/README.md rename to integration/feature_integration_tests/README.md diff --git a/qnx_qemu/scrample_integration/BUILD b/integration/feature_integration_tests/configs/BUILD similarity index 92% rename from qnx_qemu/scrample_integration/BUILD rename to integration/feature_integration_tests/configs/BUILD index 765f9898c5c..49587392d54 100644 --- a/qnx_qemu/scrample_integration/BUILD +++ b/integration/feature_integration_tests/configs/BUILD @@ -10,7 +10,11 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - +exports_files( + [ + "qemu_target_config.json", + ], +) exports_files([ "etc/logging.json", @@ -24,4 +28,4 @@ filegroup( "etc/mw_com_config.json", ], visibility = ["//visibility:public"], -) \ No newline at end of file +) diff --git a/ebclfsa/scrample_integration/etc/logging.json b/integration/feature_integration_tests/configs/etc/logging.json similarity index 100% rename from ebclfsa/scrample_integration/etc/logging.json rename to integration/feature_integration_tests/configs/etc/logging.json diff --git a/ebclfsa/scrample_integration/etc/mw_com_config.json b/integration/feature_integration_tests/configs/etc/mw_com_config.json similarity index 100% rename from ebclfsa/scrample_integration/etc/mw_com_config.json rename to integration/feature_integration_tests/configs/etc/mw_com_config.json diff --git a/qnx_qemu/target_config.json b/integration/feature_integration_tests/configs/qemu_target_config.json similarity index 100% rename from qnx_qemu/target_config.json rename to integration/feature_integration_tests/configs/qemu_target_config.json diff --git a/integration/feature_integration_tests/itf/BUILD b/integration/feature_integration_tests/itf/BUILD new file mode 100644 index 00000000000..c757563a0f7 --- /dev/null +++ b/integration/feature_integration_tests/itf/BUILD @@ -0,0 +1,7 @@ +exports_files( + [ + "test_ssh.py", + "test_scrample.py", + "test_persistency.py", + ], +) \ No newline at end of file diff --git a/qnx_qemu/test/itf/test_persistency.py b/integration/feature_integration_tests/itf/test_persistency.py similarity index 100% rename from qnx_qemu/test/itf/test_persistency.py rename to integration/feature_integration_tests/itf/test_persistency.py diff --git a/qnx_qemu/test/itf/test_scrample.py b/integration/feature_integration_tests/itf/test_scrample.py similarity index 73% rename from qnx_qemu/test/itf/test_scrample.py rename to integration/feature_integration_tests/itf/test_scrample.py index e9533f66455..5acf1d9ef0c 100644 --- a/qnx_qemu/test/itf/test_scrample.py +++ b/integration/feature_integration_tests/itf/test_scrample.py @@ -10,30 +10,31 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -from itf.plugins.com.ping import ping -from itf.plugins.com.ssh import execute_command_output import logging +from itf.plugins.com.ssh import execute_command_output + logger = logging.getLogger(__name__) def test_scrample_app_is_deployed(target_fixture): with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, "test -f scrample" - ) + exit_code, stdout, stderr = execute_command_output(ssh, "test -f scrample") assert exit_code == 0, "SSH command failed" def test_scrample_app_is_running(target_fixture): with target_fixture.sut.ssh() as ssh: exit_code, stdout, stderr = execute_command_output( - ssh, "./scrample -n 10 -t 100 -m send & ./scrample -n 5 -t 100 -m recv", - timeout = 30, max_exec_time = 180, - logger_in = logger, verbose = True, + ssh, + "./scrample -n 10 -t 100 -m send & ./scrample -n 5 -t 100 -m recv", + timeout=30, + max_exec_time=180, + logger_in=logger, + verbose=True, ) - logger.info (stdout) - logger.info (stderr) + logger.info(stdout) + logger.info(stderr) assert exit_code == 0, "SSH command failed" diff --git a/qnx_qemu/test/itf/test_ssh.py b/integration/feature_integration_tests/itf/test_ssh.py similarity index 100% rename from qnx_qemu/test/itf/test_ssh.py rename to integration/feature_integration_tests/itf/test_ssh.py diff --git a/feature_integration_tests/test_cases/BUILD b/integration/feature_integration_tests/test_cases/BUILD similarity index 100% rename from feature_integration_tests/test_cases/BUILD rename to integration/feature_integration_tests/test_cases/BUILD diff --git a/feature_integration_tests/test_cases/conftest.py b/integration/feature_integration_tests/test_cases/conftest.py similarity index 100% rename from feature_integration_tests/test_cases/conftest.py rename to integration/feature_integration_tests/test_cases/conftest.py diff --git a/feature_integration_tests/test_cases/fit_scenario.py b/integration/feature_integration_tests/test_cases/fit_scenario.py similarity index 100% rename from feature_integration_tests/test_cases/fit_scenario.py rename to integration/feature_integration_tests/test_cases/fit_scenario.py diff --git a/feature_integration_tests/test_cases/pytest.ini b/integration/feature_integration_tests/test_cases/pytest.ini similarity index 100% rename from feature_integration_tests/test_cases/pytest.ini rename to integration/feature_integration_tests/test_cases/pytest.ini diff --git a/feature_integration_tests/test_cases/requirements.txt b/integration/feature_integration_tests/test_cases/requirements.txt similarity index 100% rename from feature_integration_tests/test_cases/requirements.txt rename to integration/feature_integration_tests/test_cases/requirements.txt diff --git a/feature_integration_tests/test_cases/requirements.txt.lock b/integration/feature_integration_tests/test_cases/requirements.txt.lock similarity index 100% rename from feature_integration_tests/test_cases/requirements.txt.lock rename to integration/feature_integration_tests/test_cases/requirements.txt.lock diff --git a/feature_integration_tests/test_cases/test_properties.py b/integration/feature_integration_tests/test_cases/test_properties.py similarity index 100% rename from feature_integration_tests/test_cases/test_properties.py rename to integration/feature_integration_tests/test_cases/test_properties.py diff --git a/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py b/integration/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py similarity index 100% rename from feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py rename to integration/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py diff --git a/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py b/integration/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py similarity index 100% rename from feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py rename to integration/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py diff --git a/feature_integration_tests/test_scenarios/rust/BUILD b/integration/feature_integration_tests/test_scenarios/rust/BUILD similarity index 100% rename from feature_integration_tests/test_scenarios/rust/BUILD rename to integration/feature_integration_tests/test_scenarios/rust/BUILD diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/main.rs b/integration/feature_integration_tests/test_scenarios/rust/src/main.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/main.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/main.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs b/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs b/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs b/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs similarity index 100% rename from feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs rename to integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs diff --git a/autosd/BUILD.bazel b/integration/images/autosd_x86_64/BUILD.bazel similarity index 71% rename from autosd/BUILD.bazel rename to integration/images/autosd_x86_64/BUILD.bazel index 43453c4640f..82e9bd66d07 100644 --- a/autosd/BUILD.bazel +++ b/integration/images/autosd_x86_64/BUILD.bazel @@ -12,21 +12,23 @@ # ******************************************************************************* load("@rules_rpm//rpm:defs.bzl", "rpm_package") +# TODO: Shall use targets from use-cases +# Bring back files once we cleanup scrample integration soon rpm_package( name = "lola-demo", binaries = [ - "@score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp", + "@score_scrample//src:scrample", ], config_dir = "/etc/lola", - data = [ - "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json", - ], + # data = [ + # "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json", + # ], data_dir = "/usr/share/lola/examples", description = "LOLA middleware communication libraries for development including core communication, configuration components, and example client/server binaries for testing", - libraries = [ - "@score_communication//score/mw/com:com", - "@score_communication//score/mw/com:config_schema", - ], + # libraries = [ + # "@score_communication//score/mw/com:com", + # "@score_communication//score/mw/com:config_schema", + # ], summary = "LOLA Demo", version = "1.0.0", ) diff --git a/autosd/build/.gitignore b/integration/images/autosd_x86_64/build/.gitignore similarity index 100% rename from autosd/build/.gitignore rename to integration/images/autosd_x86_64/build/.gitignore diff --git a/autosd/build/README.md b/integration/images/autosd_x86_64/build/README.md similarity index 100% rename from autosd/build/README.md rename to integration/images/autosd_x86_64/build/README.md diff --git a/autosd/build/files/bluechi-agent-main.conf b/integration/images/autosd_x86_64/build/files/bluechi-agent-main.conf similarity index 100% rename from autosd/build/files/bluechi-agent-main.conf rename to integration/images/autosd_x86_64/build/files/bluechi-agent-main.conf diff --git a/autosd/build/files/bluechi-agent-qm.conf b/integration/images/autosd_x86_64/build/files/bluechi-agent-qm.conf similarity index 100% rename from autosd/build/files/bluechi-agent-qm.conf rename to integration/images/autosd_x86_64/build/files/bluechi-agent-qm.conf diff --git a/autosd/build/files/bluechi-controller.conf b/integration/images/autosd_x86_64/build/files/bluechi-controller.conf similarity index 100% rename from autosd/build/files/bluechi-controller.conf rename to integration/images/autosd_x86_64/build/files/bluechi-controller.conf diff --git a/autosd/build/files/lola-ipc-pub.service b/integration/images/autosd_x86_64/build/files/lola-ipc-pub.service similarity index 100% rename from autosd/build/files/lola-ipc-pub.service rename to integration/images/autosd_x86_64/build/files/lola-ipc-pub.service diff --git a/autosd/build/files/lola-ipc-sub.service b/integration/images/autosd_x86_64/build/files/lola-ipc-sub.service similarity index 100% rename from autosd/build/files/lola-ipc-sub.service rename to integration/images/autosd_x86_64/build/files/lola-ipc-sub.service diff --git a/autosd/build/files/lola-ipc-test b/integration/images/autosd_x86_64/build/files/lola-ipc-test similarity index 100% rename from autosd/build/files/lola-ipc-test rename to integration/images/autosd_x86_64/build/files/lola-ipc-test diff --git a/autosd/build/files/lola-ipc-test.service b/integration/images/autosd_x86_64/build/files/lola-ipc-test.service similarity index 100% rename from autosd/build/files/lola-ipc-test.service rename to integration/images/autosd_x86_64/build/files/lola-ipc-test.service diff --git a/autosd/build/image.aib.yml b/integration/images/autosd_x86_64/build/image.aib.yml similarity index 100% rename from autosd/build/image.aib.yml rename to integration/images/autosd_x86_64/build/image.aib.yml diff --git a/autosd/build/scripts/run_qemu b/integration/images/autosd_x86_64/build/scripts/run_qemu similarity index 100% rename from autosd/build/scripts/run_qemu rename to integration/images/autosd_x86_64/build/scripts/run_qemu diff --git a/autosd/build/vars-devel.yml b/integration/images/autosd_x86_64/build/vars-devel.yml similarity index 100% rename from autosd/build/vars-devel.yml rename to integration/images/autosd_x86_64/build/vars-devel.yml diff --git a/autosd/build/vars.yml b/integration/images/autosd_x86_64/build/vars.yml similarity index 100% rename from autosd/build/vars.yml rename to integration/images/autosd_x86_64/build/vars.yml diff --git a/ebclfsa/BUILD b/integration/images/ebclfsa_aarch64/BUILD similarity index 100% rename from ebclfsa/BUILD rename to integration/images/ebclfsa_aarch64/BUILD diff --git a/ebclfsa/README.md b/integration/images/ebclfsa_aarch64/README.md similarity index 99% rename from ebclfsa/README.md rename to integration/images/ebclfsa_aarch64/README.md index 992639072ee..a7b6fa45dc9 100644 --- a/ebclfsa/README.md +++ b/integration/images/ebclfsa_aarch64/README.md @@ -224,7 +224,7 @@ The demo SDK integrates the [S-CORE toolchain with two extensions](https://githu - Additional tooling for AArch64 cross-building. - Additional tool `lisa-elf-enabler`: It marks an ELF header of an application in a way that Linux for Safety Applications detects it as an HI application. - The tool is available to Bazel via `@gcc_toolchain_gcc//:elf-enabler`. + The tool is available to Bazel via `@eb_toolchain_gcc//:elf-enabler`. ### Bazel Rules for the Example Applications diff --git a/ebclfsa/docs/system_setup.drawio.png b/integration/images/ebclfsa_aarch64/docs/system_setup.drawio.png similarity index 100% rename from ebclfsa/docs/system_setup.drawio.png rename to integration/images/ebclfsa_aarch64/docs/system_setup.drawio.png diff --git a/ebclfsa/persistency_integration/BUILD b/integration/images/ebclfsa_aarch64/persistency_integration/BUILD similarity index 100% rename from ebclfsa/persistency_integration/BUILD rename to integration/images/ebclfsa_aarch64/persistency_integration/BUILD diff --git a/ebclfsa/persistency_integration/run_qemu.sh b/integration/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh similarity index 100% rename from ebclfsa/persistency_integration/run_qemu.sh rename to integration/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh diff --git a/ebclfsa/persistency_integration/scripts/cpp_tests_persistency.sh b/integration/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh similarity index 100% rename from ebclfsa/persistency_integration/scripts/cpp_tests_persistency.sh rename to integration/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh diff --git a/ebclfsa/scrample_integration/BUILD b/integration/images/ebclfsa_aarch64/scrample_integration/BUILD similarity index 98% rename from ebclfsa/scrample_integration/BUILD rename to integration/images/ebclfsa_aarch64/scrample_integration/BUILD index a8393c3dda5..84fe2cfa9fd 100644 --- a/ebclfsa/scrample_integration/BUILD +++ b/integration/images/ebclfsa_aarch64/scrample_integration/BUILD @@ -13,7 +13,7 @@ load("@score_baselibs//score/language/safecpp:toolchain_features.bzl", "COMPILER_WARNING_FEATURES") genrule( - name = "scrample_sil", + name = "scrample_sil_r", srcs = ["@score_scrample//src:scrample"], outs = ["scrample_sil"], cmd = "cp $(SRCS) $@ && \ @@ -27,7 +27,7 @@ genrule( name = "hi_app", srcs = [ ":scrample_sil_wrapper", - ":scrample_sil" + ":scrample_sil_r" ], outs = ["hi_app"], cmd = "cp $(location :scrample_sil_wrapper) $@ && \ diff --git a/qnx_qemu/scrample_integration/etc/logging.json b/integration/images/ebclfsa_aarch64/scrample_integration/etc/logging.json similarity index 100% rename from qnx_qemu/scrample_integration/etc/logging.json rename to integration/images/ebclfsa_aarch64/scrample_integration/etc/logging.json diff --git a/qnx_qemu/scrample_integration/etc/mw_com_config.json b/integration/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json similarity index 100% rename from qnx_qemu/scrample_integration/etc/mw_com_config.json rename to integration/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json diff --git a/ebclfsa/scrample_integration/run_qemu.sh b/integration/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh similarity index 100% rename from ebclfsa/scrample_integration/run_qemu.sh rename to integration/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh diff --git a/ebclfsa/scrample_integration/src/main.cc b/integration/images/ebclfsa_aarch64/scrample_integration/src/main.cc similarity index 100% rename from ebclfsa/scrample_integration/src/main.cc rename to integration/images/ebclfsa_aarch64/scrample_integration/src/main.cc diff --git a/integration/images/linux_x86_64/BUILD b/integration/images/linux_x86_64/BUILD new file mode 100644 index 00000000000..89f762468cb --- /dev/null +++ b/integration/images/linux_x86_64/BUILD @@ -0,0 +1,30 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") + +alias( + name = "image", + actual = "//showcases:showcases_all", + visibility = ["//visibility:public"], +) + +sh_binary( + name = "run", + srcs = ["//runners/docker_x86_64/scripts:run_docker.sh"], + args = [ + "$(location :image)", + ], + data = [ + ":image", + ], +) \ No newline at end of file diff --git a/integration/images/qnx_x86_64/BUILD b/integration/images/qnx_x86_64/BUILD new file mode 100644 index 00000000000..2ae1748607c --- /dev/null +++ b/integration/images/qnx_x86_64/BUILD @@ -0,0 +1,93 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") +load("@score_itf//:defs.bzl", "py_itf_test") + +alias( + name = "image", + actual = "//images/qnx_x86_64/build:init", + visibility = ["//visibility:public"], +) + +sh_binary( + name = "run", + srcs = ["//runners/qemu_x86_64/scripts:run_qemu.sh"], + args = [ + "$(location @toolchains_qnx_sdp//:host_dir)", + "$(location :image)", + ], + data = [ + ":image", + "@toolchains_qnx_sdp//:host_all", + "@toolchains_qnx_sdp//:host_dir", + ], +) + +# For now we keep this not in /feature_integration_tests but locally within images + +py_itf_test( + name = "test_ssh", + srcs = [ + "//feature_integration_tests/itf:test_ssh.py", + ], + args = [ + "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", + "--ecu=s_core_ecu_qemu", + "--qemu_image=$(location :image)", + ], + plugins = [ + "itf.plugins.base.base_plugin", + ], + data = [ + ":image", + "//feature_integration_tests/configs:qemu_target_config.json", + ], +) + +py_itf_test( + name = "test_scrample", + srcs = [ + "//feature_integration_tests/itf:test_scrample.py", + ], + args = [ + "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", + "--ecu=s_core_ecu_qemu", + "--qemu_image=$(location :image)", + ], + plugins = [ + "itf.plugins.base.base_plugin", + ], + data = [ + ":image", + "//feature_integration_tests/configs:qemu_target_config.json", + ], +) + +py_itf_test( + name = "test_persistency", + srcs = [ + "//feature_integration_tests/itf:test_persistency.py", + ], + args = [ + "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", + "--ecu=s_core_ecu_qemu", + "--qemu_image=$(location :image)", + ], + plugins = [ + "itf.plugins.base.base_plugin", + ], + data = [ + ":image", + "//feature_integration_tests/configs:qemu_target_config.json", + ], +) diff --git a/integration/images/qnx_x86_64/build/BUILD b/integration/images/qnx_x86_64/build/BUILD new file mode 100644 index 00000000000..1ec2e2d81b9 --- /dev/null +++ b/integration/images/qnx_x86_64/build/BUILD @@ -0,0 +1,72 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@score_toolchains_qnx//rules/fs:ifs.bzl", "qnx_ifs") + +filegroup( + name = "scripts", + srcs = [ + "//images/qnx_x86_64/configs:startup.sh", + ], + visibility = ["//visibility:private"], +) + +filegroup( + name = "configs", + srcs = [ + "//images/qnx_x86_64/configs:pci_server.cfg", + "//images/qnx_x86_64/configs:pci_hw.cfg", + "//images/qnx_x86_64/configs:qcrypto.conf", + "//images/qnx_x86_64/configs:passwd", + "//images/qnx_x86_64/configs:group", + "//images/qnx_x86_64/configs:sshd_config", + "//images/qnx_x86_64/configs:ssh_host_rsa_key", + "//images/qnx_x86_64/configs:ssh_host_rsa_key.pub", + "//images/qnx_x86_64/configs:hostname", + "//images/qnx_x86_64/configs:network_setup.sh", + "//images/qnx_x86_64/configs:network_capture.sh", + "//images/qnx_x86_64/configs:profile", + "//images/qnx_x86_64/configs:dhcpcd.conf", + "//images/qnx_x86_64/configs:network_setup_dhcp.sh", + ], + visibility = ["//visibility:private"], +) + +qnx_ifs( + name = "init", + build_file = "init.build", + srcs = [ + ":system.build", + ":system_dir", + ":scripts", + ":configs", + "//showcases:showcases_all", + "//feature_integration_tests/configs:etc_configs", + "@score_persistency//tests/test_scenarios/cpp:test_scenarios", + ], + ext_repo_maping = { + "BUNDLE_PATH": "$(location //showcases:showcases_all)" + }, + visibility = [ + "//visibility:public", + ], +) + +filegroup( + name = "system_dir", + srcs = [ + "system.build", + "init.build", + ], +) + diff --git a/qnx_qemu/build/init.build b/integration/images/qnx_x86_64/build/init.build similarity index 98% rename from qnx_qemu/build/init.build rename to integration/images/qnx_x86_64/build/init.build index 815de328ecc..bbec098e03d 100644 --- a/qnx_qemu/build/init.build +++ b/integration/images/qnx_x86_64/build/init.build @@ -96,4 +96,4 @@ devb-eide # Block device driver for IDE/SATA hard drive # Required for mounting QNX6 file systems from disk partitions -[+include] build/system.build +[+include] ${MAIN_BUILD_FILE_DIR}/system.build # Include additional system build configurations diff --git a/qnx_qemu/build/system.build b/integration/images/qnx_x86_64/build/system.build similarity index 89% rename from qnx_qemu/build/system.build rename to integration/images/qnx_x86_64/build/system.build index 8d039adef5d..b92e79f8f13 100644 --- a/qnx_qemu/build/system.build +++ b/integration/images/qnx_x86_64/build/system.build @@ -239,10 +239,10 @@ pci/pci_debug2.so # Enhanced PCI debugging support ### SCRIPTS ### ############################################# # System startup and initialization scripts -[perms=700] /etc/startup.sh = configs/startup.sh # Main system startup script -[perms=700] /etc/network_setup.sh = configs/network_setup.sh # Network configuration script -[perms=700] /etc/network_setup_dhcp.sh = configs/network_setup_dhcp.sh # Network configuration script -[perms=755] /etc/network_capture = configs/network_capture.sh # Network packet capture utility +[perms=700] /etc/startup.sh = ${MAIN_BUILD_FILE_DIR}/../configs/startup.sh # Main system startup script +[perms=700] /etc/network_setup.sh = ${MAIN_BUILD_FILE_DIR}/../configs/network_setup.sh # Network configuration script +[perms=700] /etc/network_setup_dhcp.sh = ${MAIN_BUILD_FILE_DIR}/../configs/network_setup_dhcp.sh # Network configuration script +[perms=755] /etc/network_capture = ${MAIN_BUILD_FILE_DIR}/../configs/network_capture.sh # Network packet capture utility ############################################# @@ -251,38 +251,39 @@ pci/pci_debug2.so # Enhanced PCI debugging support # This section defines critical configuration files that control system # behavior, hardware access, security policies, and user environment setup. -[perms=0444] pci_server.cfg = configs/pci_server.cfg # PCI server configuration -[perms=0444] pci_hw.cfg = configs/pci_hw.cfg # PCI hardware configuration -[perms=0444] qcrypto.conf = configs/qcrypto.conf # QNX cryptographic library configuration +[perms=0444] pci_server.cfg = ${MAIN_BUILD_FILE_DIR}/../configs/pci_server.cfg # PCI server configuration +[perms=0444] pci_hw.cfg = ${MAIN_BUILD_FILE_DIR}/../configs/pci_hw.cfg # PCI hardware configuration +[perms=0444] qcrypto.conf = ${MAIN_BUILD_FILE_DIR}/../configs/qcrypto.conf # QNX cryptographic library configuration # System hostname configuration -/etc/hostname = configs/hostname # System hostname definition file -/etc/profile = configs/profile +/etc/hostname = ${MAIN_BUILD_FILE_DIR}/../configs/hostname # System hostname definition file +/etc/profile = ${MAIN_BUILD_FILE_DIR}/../configs/profile # System user and group databases -/etc/passwd = configs/passwd # User account database with login information -/etc/group = configs/group # Group membership database +/etc/passwd = ${MAIN_BUILD_FILE_DIR}/../configs/passwd # User account database with login information +/etc/group = ${MAIN_BUILD_FILE_DIR}/../configs/group # Group membership database ############################################# ### SSH CONFIGURATION ### ############################################# # SSH server configuration (no static host keys - generated at runtime) -[perms=444] /var/ssh/sshd_config = configs/sshd_config # SSH daemon configuration file +[perms=444] /var/ssh/sshd_config = ${MAIN_BUILD_FILE_DIR}/../configs/sshd_config # SSH daemon configuration file -[uid=0 gid=0 perms=400] /var/ssh/ssh_host_rsa_key = configs/ssh_host_rsa_key # SSH server private key -[uid=0 gid=0 perms=400] /var/ssh/ssh_host_rsa_key.pub = configs/ssh_host_rsa_key.pub # SSH server public key +[uid=0 gid=0 perms=400] /var/ssh/ssh_host_rsa_key = ${MAIN_BUILD_FILE_DIR}/../configs/ssh_host_rsa_key # SSH server private key +[uid=0 gid=0 perms=400] /var/ssh/ssh_host_rsa_key.pub = ${MAIN_BUILD_FILE_DIR}/../configs/ssh_host_rsa_key.pub # SSH server public key # DHCP client configuration -[perms=644] /etc/dhcpcd.conf = configs/dhcpcd.conf # DHCP client configuration file +[perms=644] /etc/dhcpcd.conf = ${MAIN_BUILD_FILE_DIR}/../configs/dhcpcd.conf # DHCP client configuration file -[perms=777] /etc/logging.json = scrample_integration/etc/logging.json # DHCP client configuration file -[perms=777] /etc/mw_com_config.json = scrample_integration/etc/mw_com_config.json # DHCP client configuration file +# Communication configuration files +[perms=777] /etc/logging.json = ${MAIN_BUILD_FILE_DIR}/../../../feature_integration_tests/configs/etc/logging.json +[perms=777] /etc/mw_com_config.json = ${MAIN_BUILD_FILE_DIR}/../../../feature_integration_tests/configs/etc/mw_com_config.json +# Executable files from external repositories [perms=777] /scrample = ${SCRAMPLE_PATH} [perms=777] /cpp_tests_persistency = ${CPP_TEST_SCENARIOS_PATH} - ############################################# ### Datarouter ### ############################################# @@ -291,3 +292,7 @@ pci/pci_debug2.so # Enhanced PCI debugging support # Datarouter configuration files (relative to binary: ./etc/) [perms=644] /usr/bin/etc/logging.json = datarouter_integration/etc/logging.json [perms=644] /usr/bin/etc/log-channels.json = datarouter_integration/etc/log-channels.json + +# Common showcases bundle +[perms=777] /showcases = ${BUNDLE_PATH} + diff --git a/qnx_qemu/configs/BUILD b/integration/images/qnx_x86_64/configs/BUILD similarity index 100% rename from qnx_qemu/configs/BUILD rename to integration/images/qnx_x86_64/configs/BUILD diff --git a/qnx_qemu/configs/dhcpcd.conf b/integration/images/qnx_x86_64/configs/dhcpcd.conf similarity index 100% rename from qnx_qemu/configs/dhcpcd.conf rename to integration/images/qnx_x86_64/configs/dhcpcd.conf diff --git a/qnx_qemu/configs/group b/integration/images/qnx_x86_64/configs/group similarity index 100% rename from qnx_qemu/configs/group rename to integration/images/qnx_x86_64/configs/group diff --git a/qnx_qemu/configs/hostname b/integration/images/qnx_x86_64/configs/hostname similarity index 100% rename from qnx_qemu/configs/hostname rename to integration/images/qnx_x86_64/configs/hostname diff --git a/qnx_qemu/configs/network_capture.sh b/integration/images/qnx_x86_64/configs/network_capture.sh similarity index 100% rename from qnx_qemu/configs/network_capture.sh rename to integration/images/qnx_x86_64/configs/network_capture.sh diff --git a/qnx_qemu/configs/network_setup.sh b/integration/images/qnx_x86_64/configs/network_setup.sh similarity index 100% rename from qnx_qemu/configs/network_setup.sh rename to integration/images/qnx_x86_64/configs/network_setup.sh diff --git a/qnx_qemu/configs/network_setup_dhcp.sh b/integration/images/qnx_x86_64/configs/network_setup_dhcp.sh similarity index 100% rename from qnx_qemu/configs/network_setup_dhcp.sh rename to integration/images/qnx_x86_64/configs/network_setup_dhcp.sh diff --git a/qnx_qemu/configs/passwd b/integration/images/qnx_x86_64/configs/passwd similarity index 100% rename from qnx_qemu/configs/passwd rename to integration/images/qnx_x86_64/configs/passwd diff --git a/qnx_qemu/configs/pci_hw.cfg b/integration/images/qnx_x86_64/configs/pci_hw.cfg similarity index 100% rename from qnx_qemu/configs/pci_hw.cfg rename to integration/images/qnx_x86_64/configs/pci_hw.cfg diff --git a/qnx_qemu/configs/pci_server.cfg b/integration/images/qnx_x86_64/configs/pci_server.cfg similarity index 100% rename from qnx_qemu/configs/pci_server.cfg rename to integration/images/qnx_x86_64/configs/pci_server.cfg diff --git a/qnx_qemu/configs/profile b/integration/images/qnx_x86_64/configs/profile similarity index 100% rename from qnx_qemu/configs/profile rename to integration/images/qnx_x86_64/configs/profile diff --git a/qnx_qemu/configs/qcrypto.conf b/integration/images/qnx_x86_64/configs/qcrypto.conf similarity index 100% rename from qnx_qemu/configs/qcrypto.conf rename to integration/images/qnx_x86_64/configs/qcrypto.conf diff --git a/qnx_qemu/configs/ssh_host_rsa_key b/integration/images/qnx_x86_64/configs/ssh_host_rsa_key similarity index 100% rename from qnx_qemu/configs/ssh_host_rsa_key rename to integration/images/qnx_x86_64/configs/ssh_host_rsa_key diff --git a/qnx_qemu/configs/ssh_host_rsa_key.pub b/integration/images/qnx_x86_64/configs/ssh_host_rsa_key.pub similarity index 100% rename from qnx_qemu/configs/ssh_host_rsa_key.pub rename to integration/images/qnx_x86_64/configs/ssh_host_rsa_key.pub diff --git a/qnx_qemu/configs/sshd_config b/integration/images/qnx_x86_64/configs/sshd_config similarity index 100% rename from qnx_qemu/configs/sshd_config rename to integration/images/qnx_x86_64/configs/sshd_config diff --git a/qnx_qemu/configs/startup.sh b/integration/images/qnx_x86_64/configs/startup.sh similarity index 89% rename from qnx_qemu/configs/startup.sh rename to integration/images/qnx_x86_64/configs/startup.sh index edac716f71c..1127eaa4ad7 100644 --- a/qnx_qemu/configs/startup.sh +++ b/integration/images/qnx_x86_64/configs/startup.sh @@ -82,11 +82,4 @@ mkdir -p /tmp_ram/tmp_discovery ln -sP /tmp_ram/tmp_discovery /tmp_discovery /proc/boot/sshd -f /var/ssh/sshd_config # Start SSH daemon with specified configuration file - -echo "---> Starting datarouter" -cd /usr/bin -sleep 2 # Brief delay to allow system services to be setup (needed for QNX QEMU timing) -# start datarouter as nonroot user with pathspace ability -# pathspace ability provides the datarouter access to the `procnto` -# pathname prefix space required for mw/com message passing with mw::log frontend -on -A nonroot,allow,pathspace -u 1051:1091 ./datarouter --no_adaptive_runtime & +/showcases/bin/cli # Start the CLI application from the mounted showcases directory diff --git a/autosd/patches/baselibs/0001-RH-exception-header.patch b/integration/patches/baselibs/0001-RH-exception-header.patch similarity index 100% rename from autosd/patches/baselibs/0001-RH-exception-header.patch rename to integration/patches/baselibs/0001-RH-exception-header.patch diff --git a/autosd/patches/baselibs/0002-RH-algorithm-header.patch b/integration/patches/baselibs/0002-RH-algorithm-header.patch similarity index 100% rename from autosd/patches/baselibs/0002-RH-algorithm-header.patch rename to integration/patches/baselibs/0002-RH-algorithm-header.patch diff --git a/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch b/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch new file mode 100644 index 00000000000..95ea478477d --- /dev/null +++ b/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch @@ -0,0 +1,65 @@ +From 37a6329193e94d93fef91fc184e95e9a8b67a98b Mon Sep 17 00:00:00 2001 +From: Pawel Rutka +Date: Mon, 9 Feb 2026 14:51:53 +0100 +Subject: [PATCH] T + +Signed-off-by: Pawel Rutka +--- + MODULE.bazel | 7 +++++++ + third_party/acl/BUILD | 6 +++++- + third_party/acl/acl.BUILD | 7 ++++--- + 3 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/MODULE.bazel b/MODULE.bazel +index f7991cb..b78d618 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -64,6 +64,13 @@ deb( + visibility = ["//visibility:public"], + ) + ++deb( ++ name = "acl-deb-aarch64", ++ build = "//third_party/acl:acl.BUILD", ++ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ + deb( + name = "valgrind-deb", + build = "//third_party/valgrind:valgrind.BUILD", +diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD +index dfcac1e..c76bee3 100644 +--- a/third_party/acl/BUILD ++++ b/third_party/acl/BUILD +@@ -1,5 +1,9 @@ + alias( + name = "acl", +- actual = "@acl-deb//:acl", ++ actual = select({ ++ "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", ++ "//conditions:default": "@acl-deb//:acl", ++ }), + visibility = ["//visibility:public"], + ) ++ +diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD +index 2163068..d86c7f7 100644 +--- a/third_party/acl/acl.BUILD ++++ b/third_party/acl/acl.BUILD +@@ -1,8 +1,9 @@ + cc_library( + name = "acl", +- srcs = [ +- "usr/lib/libacl.a", +- ], ++ srcs = select({ ++ "@platforms//cpu:aarch64": ["usr/lib/aarch64-linux-gnu/libacl.a"], ++ "//conditions:default": ["usr/lib/libacl.a"], ++ }), + hdrs = [ + "usr/include/acl/libacl.h", + "usr/include/sys/acl.h", +-- +2.43.0 + diff --git a/integration/patches/baselibs/BUILD b/integration/patches/baselibs/BUILD new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ebclfsa/patches/fix_hard_coded_amd64.patch b/integration/patches/baselibs/fix_hard_coded_amd64.patch similarity index 100% rename from ebclfsa/patches/fix_hard_coded_amd64.patch rename to integration/patches/baselibs/fix_hard_coded_amd64.patch diff --git a/integration/runners/docker_x86_64/BUILD b/integration/runners/docker_x86_64/BUILD new file mode 100644 index 00000000000..17a9a3cbca7 --- /dev/null +++ b/integration/runners/docker_x86_64/BUILD @@ -0,0 +1,24 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") + +# sh_binary( +# name = "docker_x86_64", +# srcs = ["scripts/run_docker.sh"], +# args = [ +# "$(location //linux_x86_64:image)", +# ], +# data = [ +# "//linux_x86_64:image", +# ], +# ) diff --git a/integration/runners/docker_x86_64/scripts/BUILD b/integration/runners/docker_x86_64/scripts/BUILD new file mode 100644 index 00000000000..6e17fd110a5 --- /dev/null +++ b/integration/runners/docker_x86_64/scripts/BUILD @@ -0,0 +1 @@ +exports_files(["run_docker.sh"]) \ No newline at end of file diff --git a/integration/runners/docker_x86_64/scripts/run_docker.sh b/integration/runners/docker_x86_64/scripts/run_docker.sh new file mode 100755 index 00000000000..a553a0e6208 --- /dev/null +++ b/integration/runners/docker_x86_64/scripts/run_docker.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +set -euo pipefail + +OVERLAY_TREE=$1 +OVERLAY_ABS_PATH=$(realpath ${OVERLAY_TREE}) +echo "Starting docker with overlay image: ${OVERLAY_ABS_PATH}" +docker run --rm -it \ + -v "${OVERLAY_ABS_PATH}:/showcases" \ + ubuntu:22.04 \ + /showcases/bin/cli \ No newline at end of file diff --git a/integration/runners/qemu_x86_64/BUILD b/integration/runners/qemu_x86_64/BUILD new file mode 100644 index 00000000000..52ddaba0f21 --- /dev/null +++ b/integration/runners/qemu_x86_64/BUILD @@ -0,0 +1,29 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") +load("@score_itf//:defs.bzl", "py_itf_test") + + +# sh_binary( +# name = "qemu_x86_64", +# srcs = ["scripts/run_qemu.sh"], +# args = [ +# "$(location @toolchains_qnx_sdp//:host_dir)", +# "$(location //:image)", +# ], +# data = [ +# "//:image", +# "@toolchains_qnx_sdp//:host_all", +# "@toolchains_qnx_sdp//:host_dir", +# ], +# ) diff --git a/integration/runners/qemu_x86_64/scripts/BUILD b/integration/runners/qemu_x86_64/scripts/BUILD new file mode 100644 index 00000000000..1ba1d2b847b --- /dev/null +++ b/integration/runners/qemu_x86_64/scripts/BUILD @@ -0,0 +1 @@ +exports_files(["run_qemu.sh"]) \ No newline at end of file diff --git a/qnx_qemu/scripts/qnx_wireshark.sh b/integration/runners/qemu_x86_64/scripts/qnx_wireshark.sh similarity index 100% rename from qnx_qemu/scripts/qnx_wireshark.sh rename to integration/runners/qemu_x86_64/scripts/qnx_wireshark.sh diff --git a/qnx_qemu/scripts/run_qemu.sh b/integration/runners/qemu_x86_64/scripts/run_qemu.sh similarity index 95% rename from qnx_qemu/scripts/run_qemu.sh rename to integration/runners/qemu_x86_64/scripts/run_qemu.sh index a23f117b538..9f741d3c017 100755 --- a/qnx_qemu/scripts/run_qemu.sh +++ b/integration/runners/qemu_x86_64/scripts/run_qemu.sh @@ -18,10 +18,9 @@ set -euo pipefail QNX_HOST=$1 IFS_IMAGE=$2 - +echo "Starting QEMU with IFS image: ${IFS_IMAGE}" qemu-system-x86_64 \ -smp 2 \ - --enable-kvm \ -cpu Cascadelake-Server-v5 \ -m 1G \ -pidfile /tmp/qemu.pid \ diff --git a/qnx_qemu/scripts/run_qemu_portforward.sh b/integration/runners/qemu_x86_64/scripts/run_qemu_portforward.sh similarity index 100% rename from qnx_qemu/scripts/run_qemu_portforward.sh rename to integration/runners/qemu_x86_64/scripts/run_qemu_portforward.sh diff --git a/integration/score_starter b/integration/score_starter new file mode 100755 index 00000000000..88cd23f03d5 --- /dev/null +++ b/integration/score_starter @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +import os +import sys +import termios +import tty +import subprocess +import argparse + +# ================== CONFIG ================== +# Each entry: (description, command, name) +mEntries = [ + ("Run QNX x86_64 QEMU", "bazel run --config qnx-x86_64 //images/qnx_x86_64:run", "qnx-x86_64"), + ("Run Linux x86_64 Docker", "bazel run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), + ("Run Elektrobit Corbos aarch64 QEMU", + "bazel build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), + ("Build Autosd x86_64 RPM", + "bazel build --config autosd-x86_64 //images/autosd_x86_64:lola-demo", "autosd-x86_64"), + ("Exit", "exit 0", "exit"), +] + +# ================== INTERNAL ================== +mSelected = 0 +mCount = len(mEntries) + + +def clear(): + os.system("clear") + + +def draw_menu(): + clear() + print("Use ↑ ↓ to navigate, Enter to run, q to quit\n") + for i, (desc, _, _) in enumerate(mEntries): + if i == mSelected: + # inverse video + print(f" \033[7m {desc} \033[0m") + else: + print(f" {desc}") + + +def run_entry(entry): + desc, cmd, _ = entry + clear() + print(f"▶ {desc}\n") + + if cmd.startswith("exit"): + sys.exit(0) + + # Run command in user's shell + result = subprocess.call(cmd, shell=True) + sys.exit(result) + + +def read_key(): + fd = sys.stdin.fileno() + old = termios.tcgetattr(fd) + try: + tty.setraw(fd) + ch1 = sys.stdin.read(1) + if ch1 == "\x1b": + ch2 = sys.stdin.read(1) + ch3 = sys.stdin.read(1) + return ch1 + ch2 + ch3 + return ch1 + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old) + + +def interactive_loop(): + global mSelected + while True: + draw_menu() + key = read_key() + + if key == "\x1b[A": # Up + mSelected = (mSelected - 1) % mCount + elif key == "\x1b[B": # Down + mSelected = (mSelected + 1) % mCount + elif key in ("\r", "\n"): # Enter + run_entry(mEntries[mSelected]) + elif key == "q": + sys.exit(0) + + +# ================== MAIN ================== +def main(): + parser = argparse.ArgumentParser( + description="Interactive build/run menu script", + epilog="Use -r NAME to run a specific entry directly." + ) + parser.add_argument( + "-r", "--run", + help="Run a specific menu entry by name", + choices=[name for _, _, name in mEntries] + ) + + args = parser.parse_args() + + if args.run: + # Find the entry by name and run it + entry = next((e for e in mEntries if e[2] == args.run), None) + if entry is None: + print(f"Unknown entry: {args.run}") + sys.exit(1) + run_entry(entry) + else: + interactive_loop() + + +if __name__ == "__main__": + main() diff --git a/integration/scripts/qnx_credential_helper.py b/integration/scripts/qnx_credential_helper.py new file mode 120000 index 00000000000..6b0b73f578a --- /dev/null +++ b/integration/scripts/qnx_credential_helper.py @@ -0,0 +1 @@ +../../.github/tools/qnx_credential_helper.py \ No newline at end of file diff --git a/integration/showcases/BUILD b/integration/showcases/BUILD new file mode 100644 index 00000000000..3c85d9bee00 --- /dev/null +++ b/integration/showcases/BUILD @@ -0,0 +1,23 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +load("//bazel_common:bundlers.bzl", "score_pkg_bundle") + +score_pkg_bundle( + name = "showcases_all", + # package_dir = "", + bins = ["//showcases/cli" ], + other_package_files = ["//showcases/standalone:standalone_pkg_files", "//showcases/kyron:kyron_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files"], + +) + + diff --git a/integration/showcases/cli/BUILD b/integration/showcases/cli/BUILD new file mode 100644 index 00000000000..d94be0f2956 --- /dev/null +++ b/integration/showcases/cli/BUILD @@ -0,0 +1,26 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@rules_rust//rust:defs.bzl", "rust_binary") + +rust_binary( + name = "cli", + srcs = ["main.rs"], + deps = [ + "@score_crates//:cliclack", + "@score_crates//:serde", + "@score_crates//:serde_json", + "@score_crates//:anyhow", + ], + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/integration/showcases/cli/README.md b/integration/showcases/cli/README.md new file mode 100644 index 00000000000..2ce3b2696d4 --- /dev/null +++ b/integration/showcases/cli/README.md @@ -0,0 +1,27 @@ +# CLI + +CLI written in rust to provide user experience in runners. + +## Abilities + +### Auto detect examples + +When run, it will auto detect all examples in image and provide to user `multiselect` choice to run examples. +To make this work each example shall deploy configuration file `name.score.json` which below layout. + +```json +{ + "name": "Name of example", + "description": "Extensive description", + "path": "exec_path", + "args": [ + // args to be used when running + ], + "env": { + // env to be used when running + } +} + +``` + +You can customize where to look for examples using env `SCORE_CLI_INIT_DIR`. \ No newline at end of file diff --git a/integration/showcases/cli/main.rs b/integration/showcases/cli/main.rs new file mode 100644 index 00000000000..22aae6d6150 --- /dev/null +++ b/integration/showcases/cli/main.rs @@ -0,0 +1,140 @@ +use anyhow::{Context, Result}; +use serde::Deserialize; +use std::{ + collections::HashMap, + env, fs, + path::Path, + process::Command, +}; + +use cliclack::{clear_screen, intro, multiselect, outro, confirm}; + +#[derive(Debug, Deserialize)] +struct ScoreConfig { + name: String, + description: String, + path: String, + args: Vec, + env: HashMap, +} + +fn print_banner() { + let color_code = "\x1b[38;5;99m"; + let reset_code = "\x1b[0m"; + + let banner = r#" + ███████╗ ██████╗ ██████╗ ██████╗ ███████╗ + ██╔════╝ ██╔════╝██╔═══██╗██╔══██╗██╔════╝ + ███████╗█████╗██║ ██║ ██║██████╔╝█████╗ + ╚════██║╚════╝██║ ██║ ██║██╔══██╗██╔══╝ + ███████║ ╚██████╗╚██████╔╝██║ ██║███████╗ + ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ +"#; + + println!("{}{}{}", color_code, banner, reset_code); +} + +fn pause_for_enter() -> Result<()> { + confirm("Press Enter to select examples to run...") + .initial_value(true) + .interact()?; + Ok(()) +} + +fn main() -> Result<()> { + print_banner(); + intro("WELCOME TO SHOWCASE ENTRYPOINT")?; + pause_for_enter()?; + + clear_screen()?; + + let root_dir = env::var("SCORE_CLI_INIT_DIR") + .unwrap_or_else(|_| "/showcases".to_string()); + + let mut configs = Vec::new(); + visit_dir(Path::new(&root_dir), &mut configs)?; + + if configs.is_empty() { + anyhow::bail!("No *.score.json files found under {}", root_dir); + } + + // Create options for multiselect + let options: Vec<(usize, String, String)> = configs + .iter() + .enumerate() + .map(|(i, c)| (i, c.name.clone(), c.description.clone())) + .collect(); + + let selected: Vec = multiselect("Select examples to run:") + .items(&options) + .interact()?; + + if selected.is_empty() { + outro("No examples selected. Goodbye!")?; + return Ok(()); + } + + for index in selected { + run_score(&configs[index])?; + } + + outro("All done!")?; + + Ok(()) +} + +fn visit_dir(dir: &Path, configs: &mut Vec) -> Result<()> { + for entry in fs::read_dir(dir) + .with_context(|| format!("Failed to read directory {:?}", dir))? + { + let entry = entry?; + let path = entry.path(); + + if path.is_symlink() { + continue; + } + + if path.is_dir() { + visit_dir(&path, configs)?; + continue; + } + + if is_score_file(&path) { + let content = fs::read_to_string(&path) + .with_context(|| format!("Failed reading {:?}", path))?; + let config: ScoreConfig = serde_json::from_str(&content) + .with_context(|| format!("Invalid JSON in {:?}", path))?; + configs.push(config); + } + } + Ok(()) +} + +fn is_score_file(path: &Path) -> bool { + path.file_name() + .and_then(|n| n.to_str()) + .map(|n| n.ends_with(".score.json")) + .unwrap_or(false) +} + +fn run_score(config: &ScoreConfig) -> Result<()> { + println!("▶ Running: {}", config.name); + + let mut cmd = Command::new(&config.path); + cmd.args(&config.args); + cmd.envs(&config.env); + + let status = cmd + .status() + .with_context(|| format!("Failed to execute {}", config.path))?; + + if !status.success() { + anyhow::bail!( + "Command `{}` exited with status {}", + config.path, + status + ); + } + + Ok(()) +} \ No newline at end of file diff --git a/integration/showcases/kyron/BUILD b/integration/showcases/kyron/BUILD new file mode 100644 index 00000000000..8cf41fc43e5 --- /dev/null +++ b/integration/showcases/kyron/BUILD @@ -0,0 +1,20 @@ +load("@rules_rust//rust:defs.bzl", "rust_binary") +load("//bazel_common:bundlers.bzl", "score_pkg_bundle") + +rust_binary( + name = "kyron_example", + srcs = ["main.rs"], + deps = [ + "@score_kyron//src/kyron:libkyron", + "@score_kyron//src/kyron-foundation:libkyron_foundation", + "@score_crates//:tracing_subscriber", + ], + visibility = ["//visibility:public"], +) + + +score_pkg_bundle( + name = "kyron", + bins = [":kyron_example"], + config_data = ["//showcases/kyron:kyron.score.json"], +) diff --git a/integration/showcases/kyron/kyron.score.json b/integration/showcases/kyron/kyron.score.json new file mode 100644 index 00000000000..f076b2a4519 --- /dev/null +++ b/integration/showcases/kyron/kyron.score.json @@ -0,0 +1,9 @@ +{ + "name": "Kyron example", + "description": "Example for channel communication using safe async runtime - Kyron", + "path": "/showcases/bin/kyron_example", + "args": [ + ], + "env": { + } +} \ No newline at end of file diff --git a/feature_showcase/rust/kyron/main.rs b/integration/showcases/kyron/main.rs similarity index 100% rename from feature_showcase/rust/kyron/main.rs rename to integration/showcases/kyron/main.rs diff --git a/feature_showcase/rust/BUILD b/integration/showcases/orchestration_persistency/BUILD similarity index 74% rename from feature_showcase/rust/BUILD rename to integration/showcases/orchestration_persistency/BUILD index e1e4566ab0d..16abb3ed3e9 100644 --- a/feature_showcase/rust/BUILD +++ b/integration/showcases/orchestration_persistency/BUILD @@ -12,21 +12,11 @@ # ******************************************************************************* load("@rules_rust//rust:defs.bzl", "rust_binary") - -rust_binary( - name = "kyron_example", - srcs = glob(["kyron/**/*.rs"]), - deps = [ - "@score_kyron//src/kyron:libkyron", - "@score_kyron//src/kyron-foundation:libkyron_foundation", - "@score_crates//:tracing_subscriber", - ], - visibility = ["//visibility:public"], -) +load("//bazel_common:bundlers.bzl", "score_pkg_bundle") rust_binary( name = "orch_per_example", - srcs = glob(["orchestration_persistency/**/*.rs"]), + srcs = ["main.rs"], deps = [ "@score_kyron//src/kyron:libkyron", "@score_kyron//src/kyron-foundation:libkyron_foundation", @@ -36,3 +26,10 @@ rust_binary( ], visibility = ["//visibility:public"], ) + +score_pkg_bundle( + name = "orch_per", + bins = [":orch_per_example"], + config_data = ["//showcases/orchestration_persistency:orch_per.score.json"], +) + diff --git a/feature_showcase/rust/orchestration_persistency/main.rs b/integration/showcases/orchestration_persistency/main.rs similarity index 100% rename from feature_showcase/rust/orchestration_persistency/main.rs rename to integration/showcases/orchestration_persistency/main.rs diff --git a/integration/showcases/orchestration_persistency/orch_per.score.json b/integration/showcases/orchestration_persistency/orch_per.score.json new file mode 100644 index 00000000000..587af7cc865 --- /dev/null +++ b/integration/showcases/orchestration_persistency/orch_per.score.json @@ -0,0 +1,9 @@ +{ + "name": "Orchestration persistency - Kyron example", + "description": "Example for running orchestration graph with Kyron runtime and saving the state to disk", + "path": "/showcases/bin/orch_per_example", + "args": [ + ], + "env": { + } +} \ No newline at end of file diff --git a/integration/showcases/standalone/BUILD b/integration/showcases/standalone/BUILD new file mode 100644 index 00000000000..5b4746fb264 --- /dev/null +++ b/integration/showcases/standalone/BUILD @@ -0,0 +1,8 @@ +load("//bazel_common:bundlers.bzl", "score_pkg_bundle") + + +score_pkg_bundle( + name = "standalone", + package_dir = "standalone", + bins = ["@score_scrample//src:scrample"], +) diff --git a/qnx_qemu/.bazelversion b/qnx_qemu/.bazelversion deleted file mode 100644 index 8104cabd36f..00000000000 --- a/qnx_qemu/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -8.1.0 diff --git a/qnx_qemu/BUILD b/qnx_qemu/BUILD deleted file mode 100644 index 0ee32b983b3..00000000000 --- a/qnx_qemu/BUILD +++ /dev/null @@ -1,135 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -load("@rules_shell//shell:sh_binary.bzl", "sh_binary") -load("@score_itf//:defs.bzl", "py_itf_test") - - -sh_binary( - name = "run_qemu", - srcs = ["scripts/run_qemu.sh"], - args = [ - "$(location @toolchains_qnx_sdp//:host_dir)", - "$(location //build:init)", - ], - data = [ - "//build:init", - "@toolchains_qnx_sdp//:host_all", - "@toolchains_qnx_sdp//:host_dir", - ], -) - -sh_binary( - name = "run_qemu_portforward", - srcs = ["scripts/run_qemu_portforward.sh"], - args = [ - "$(location @toolchains_qnx_sdp//:host_dir)", - "$(location //build:init)", - ], - data = [ - "//build:init", - "@toolchains_qnx_sdp//:host_all", - "@toolchains_qnx_sdp//:host_dir", - ], -) - - -sh_binary( - name = "test_qemu_bridge", - srcs = ["test/test_qnx_qemu_bridge.sh"], - args = [ - "$(location @toolchains_qnx_sdp//:host_dir)", - "$(location //build:init)", - "--timeout=90", - "--ssh-port=2222", - "--boot-wait=15", - ], - data = [ - "//build:init", - "@toolchains_qnx_sdp//:host_all", - "@toolchains_qnx_sdp//:host_dir", - ], -) - -sh_binary( - name = "test_qemu_portforward", - srcs = ["test/test_qnx_qemu_portforward.sh"], - args = [ - "$(location @toolchains_qnx_sdp//:host_dir)", - "$(location //build:init)", - "--timeout=90", - "--ssh-port=2222", - "--boot-wait=15", - ], - data = [ - "//build:init", - "@toolchains_qnx_sdp//:host_all", - "@toolchains_qnx_sdp//:host_dir", - ], -) - -py_itf_test( - name = "test_ssh_qemu", - srcs = [ - "test/itf/test_ssh.py", - ], - args = [ - "--target_config=$(location target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location //build:init)", - ], - plugins = [ - "itf.plugins.base.base_plugin", - ], - data = [ - "//build:init", - "target_config.json", - ], -) - -py_itf_test( - name = "test_scrample_qemu", - srcs = [ - "test/itf/test_scrample.py", - ], - args = [ - "--target_config=$(location target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location //build:init)", - ], - plugins = [ - "itf.plugins.base.base_plugin", - ], - data = [ - "//build:init", - "target_config.json", - ], -) - -py_itf_test( - name = "test_persistency_qemu", - srcs = [ - "test/itf/test_persistency.py", - ], - args = [ - "--target_config=$(location target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location //build:init)", - ], - plugins = [ - "itf.plugins.base.base_plugin", - ], - data = [ - "//build:init", - "target_config.json", - ], -) diff --git a/qnx_qemu/MODULE.bazel b/qnx_qemu/MODULE.bazel deleted file mode 100644 index 5fa697079ba..00000000000 --- a/qnx_qemu/MODULE.bazel +++ /dev/null @@ -1,113 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -module( - name = "score_ri_qnx_qemu", - version = "0.0.1", - compatibility_level = 0, -) - -############################################################################### -# -# Shell dependency -# -############################################################################### -bazel_dep(name = "rules_shell", version = "0.6.0") - -############################################################################### -# -# Python version -# -############################################################################### -bazel_dep(name = "rules_python", version = "1.0.0") - -PYTHON_VERSION = "3.12" - -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - configure_coverage_tool = True, - is_default = True, - python_version = PYTHON_VERSION, -) -use_repo(python) - -############################################################################### -# -# GCC Toolchains -# -############################################################################### -# Configure the host toolchain. -bazel_dep(name = "score_toolchains_gcc", version = "0.5", dev_dependency=True) -gcc = use_extension("@score_toolchains_gcc//extentions:gcc.bzl", "gcc", dev_dependency=True) -gcc.toolchain( - url = "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/0.0.1/x86_64-unknown-linux-gnu_gcc12.tar.gz", - sha256 = "457f5f20f57528033cb840d708b507050d711ae93e009388847e113b11bf3600", - strip_prefix = "x86_64-unknown-linux-gnu", -) -gcc.extra_features( - features = [ - "minimal_warnings", - "treat_warnings_as_errors", - ], -) -gcc.warning_flags( - minimal_warnings = ["-Wall", "-Wno-error=deprecated-declarations", "-Wno-error=narrowing"], - strict_warnings = ["-Wextra", "-Wpedantic"], -) -use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc") - -register_toolchains("@gcc_toolchain//:all") - -# Configure target toolchain for QNX build. -bazel_dep(name = "score_toolchains_qnx", version = "0.0.3") -toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx") -toolchains_qnx.sdp( - sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", - strip_prefix = "installation", - url = "https://www.qnx.com/download/download/79858/installation.tgz", -) -use_repo(toolchains_qnx, "toolchains_qnx_sdp") -use_repo(toolchains_qnx, "toolchains_qnx_qcc") -use_repo(toolchains_qnx, "toolchains_qnx_ifs") - -register_toolchains("@toolchains_qnx_qcc//:qcc_x86_64") -register_toolchains("@toolchains_qnx_ifs//:ifs_x86_64") - -############################################################################### -# -# Other dependencies -# -############################################################################### -bazel_dep(name = "rules_cc", version = "0.1.1") -bazel_dep(name = "score_itf", version = "0.1.0") -bazel_dep(name = "score_baselibs", version = "0.1.3") - -bazel_dep(name = "score_communication", version = "0.1.1") - -bazel_dep(name = "score_scrample", version = "0.1.0") - -bazel_dep(name = "score_persistency", version = "0.2.1") - -bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") -archive_override( - module_name = "rules_boost", - urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], - strip_prefix = "rules_boost-master", -) - -# TRLC dependency for requirements traceability -bazel_dep(name = "trlc", version = "0.0.0") -git_override( - module_name = "trlc", - commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release - remote = "https://github.com/bmw-software-engineering/trlc.git", -) \ No newline at end of file diff --git a/qnx_qemu/README.md b/qnx_qemu/README.md deleted file mode 100644 index 39a7e8d2732..00000000000 --- a/qnx_qemu/README.md +++ /dev/null @@ -1,1029 +0,0 @@ -# QNX QEMU x86 Minimal Image - -## Overview - -This project provides a minimal QNX 8.0 image designed to run on x86_64 QEMU virtual machines. It's specifically configured for the Eclipse SCORE (Safety Critical Object-Oriented Real-time Embedded) project, offering a lightweight yet functional QNX environment suitable for development, testing, and demonstration purposes. - -## Quick Start Guide - -### 1. Prerequisites - -Before starting, ensure the following tools are available on your Linux host: - -- **Bazel** -- **QEMU** (with `qemu-bridge-helper` installed at `/usr/lib/qemu/qemu-bridge-helper`) -- Valid **QNX SDP 8.0 license** from . See this YT video for more info - -### 2. Installation/ Configuration - -- **Clone the integration & toolchain repos** - -```bash -git clone https://github.com/eclipse-score/reference_integration.git -git clone https://github.com/eclipse-score/toolchains_qnx.git -cd reference_integration/qnx_qemu -``` - -Toolchain repo contains the Bazel rules and credential helper used to download and register the QNX SDP toolchain. - -- **Provide QNX download credentials** - -You can pass credentials via environment variables. - -```bash -export SCORE_QNX_USER="" -export SCORE_QNX_PASSWORD="" -``` - -- **Download QNX Software Center for Linux** - -**Using GUI:** - -Download **QNX Software Center 2.0.4 Build 202501021438 - Linux Hosts** from the [QNX Software Center page](https://www.qnx.com/download/group.html?programid=29178), then install it. - -**Using CLI:** - -URL to installer must be determined manually: - -- Go to [QNX page] and log in using "SIGN IN". - -- Go to [QNX Software Center page]. - -- Scroll down and click the link labeled `QNX Software Center Build - Linux Hosts`. - -- Right-click "Download Now" button and copy the installer URL. - -- Verify installer checksum after download! - -```bash -# Create directory. -mkdir ~/.qnx -# Log-in and download installer. -curl -v --cookie-jar ~/.qnx/myqnxcookies.auth --form "userlogin=$SCORE_QNX_USER" --form "password=$SCORE_QNX_PASSWORD" https://www.qnx.com/account/login.html -o login_response.html -curl -v -L --cookie ~/.qnx/myqnxcookies.auth installer_URL > qnx-setup-lin.run -# Verify checksum. -sha256sum qnx-setup-lin.run -# Make the installer executable. -chmod +x ./qnx-setup-lin.run -# Run installer. -~/qnx-setup-lin.run force-override disable-auto-start agree-to-license-terms ~/qnxinstall -``` - -- **Download QNX SDP 8.0** - -**Using GUI:** - -Using **QNX Software Center - Linux Hosts** we previously installed , install **QNX Software Development Platform 8.0**. - -**Using CLI:** - -```bash -cd ~/qnxinstall/qnxsoftwarecenter -./qnxsoftwarecenter_clt -syncLicenseKeys -myqnx.user="$SCORE_QNX_USER" -myqnx.password="$SCORE_QNX_PASSWORD" -addLicenseKey license_key -listLicenseKeys -./qnxsoftwarecenter_clt -mirrorBaseline="qnx800" -myqnx.user="$SCORE_QNX_USER" -myqnx.password="$SCORE_QNX_PASSWORD" -./qnxsoftwarecenter_clt -cleanInstall -destination ~/qnx800 -installBaseline com.qnx.qnx800 -myqnx.user="$SCORE_QNX_USER" -myqnx.password="$SCORE_QNX_PASSWORD" -cd - > /dev/null -``` - -This contains the toolchains and `license` folder required for activation. -check this QNX link for more info - -- **Source SDP environment** - -```bash -source ~/qnx800/qnxsdp-env.sh -#The commands below confirm the environment was sourced successfully. -echo "$QNX_HOST" "$QNX_TARGET" -``` - -- **Register QNX license** - -```bash -sudo mkdir -p /opt/score_qnx/license -sudo cp ~/.qnx/license/licenses /opt/score_qnx/license/licenses -sudo chmod 644 /opt/score_qnx/license/licenses -``` - -OR we can use symbolic linking - -```bash -sudo install -d -m 755 /opt/score_qnx/license -LIC_SRC="$(readlink -f "$HOME/.qnx/license/licenses")" -sudo ln -sfn "$LIC_SRC" /opt/score_qnx/license/licenses -chmod 644 "$LIC_SRC" -``` - -- **Configure QEMU networking** - -to allow QEMU bridge helper to create TAP devices and to make sure **TUN** is available: - -Give qemu-bridge-helper the required capabilities. - -Make sure that bridge virbr0 is installed for successful QEMU startup - -```bash -sudo apt update -sudo apt install -y libvirt-daemon-system qemu-kvm -sudo systemctl enable --now libvirtd -sudo virsh net-define /usr/share/libvirt/networks/default.xml || true -sudo virsh net-autostart default -sudo virsh net-start default -``` - -Create /etc/qemu if it doesn’t exist. - -```bash -sudo install -d -m 755 /etc/qemu -echo "allow virbr0" | sudo tee /etc/qemu/bridge.conf -``` - -On Debian/Ubuntu (most common path): - -```bash -sudo setcap cap_net_admin,cap_net_raw+ep /usr/lib/qemu/qemu-bridge-helper -``` - -Verify: - -```bash -getcap /usr/lib/qemu/qemu-bridge-helper -# or -getcap /usr/libexec/qemu-bridge-helper -``` - -You should see: - -```bash -/usr/lib/qemu/qemu-bridge-helper = cap_net_admin,cap_net_raw+ep -``` - -Enable TUN device - -Make sure the TUN kernel module is loaded: - -```bash -sudo modprobe tun -``` - -Check that the device exists: - -```bash -ls -l /dev/net/tun -``` - -If successful, you’ll see: - -```bash -crw-rw-rw- 1 root root 10, 200 ... /dev/net/tun -``` - -### 3. Build & run the QNX image on qemu - -Run Bazel with the credential helper: - -```bash -bazel build --config=x86_64-qnx \ - --credential_helper=*.qnx.com=$(pwd)/../toolchains_qnx/tools/qnx_credential_helper.py \ - //build:init -``` - -- First run downloads ~1.6 GiB of QNX SDP - -- Resulting IFS: `bazel-bin/build/init.ifs` - -at this stage Build shall succeed. - -- **Run QNX in QEMU** - -verify bridge virbr0 is up and running - -```bash -ip link show virbr0 -``` - -- QEMU can use KVM for near-native performance. The wrapper below auto-enables **KVM** when available and falls back to **TCG** with a visible warning if /dev/kvm isn’t accessible - -```bash -sudo tee /usr/local/bin/qemu-system-x86_64 >/dev/null <<'EOF' -#!/usr/bin/env bash -# Smart QEMU shim: auto-enable KVM when possible; warn & fall back otherwise. -set -euo pipefail -REAL="${QEMU_BIN:-/usr/bin/qemu-system-x86_64}" - -have_kvm() { - [[ -e /dev/kvm && -r /dev/kvm && -w /dev/kvm ]] || return 1 - [[ -d /sys/module/kvm ]] && { [[ -d /sys/module/kvm_intel || -d /sys/module/kvm_amd ]] ; } || true -} - -args=("$@") -want_kvm=false -for a in "${args[@]}"; do - [[ "$a" == "--enable-kvm" ]] && want_kvm=true -done - -if have_kvm; then - $want_kvm || args+=(--enable-kvm) -else - # Strip any --enable-kvm and warn - filtered=() - for a in "${args[@]}"; do - [[ "$a" == "--enable-kvm" ]] && continue - filtered+=("$a") - done - args=("${filtered[@]}") - echo "Warning: KVM not available: /dev/kvm missing or not accessible; using software emulation (TCG)." >&2 - sleep 2 # fixed 2s pause so the warning is visible -fi - -exec "$REAL" "${args[@]}" -EOF -``` - -make the script executable - -```bash -sudo chmod +x /usr/local/bin/qemu-system-x86_64 -``` - -Tip: ensure /usr/local/bin comes before /usr/bin so the wrapper is used: - -```bash -export PATH=/usr/local/bin:$PATH -hash -r -``` - -- Run QEMU - -```bash -bazel run --config=x86_64-qnx //:run_qemu -``` - -## Features - -### Core System Components - -- **QNX 8.0 Neutrino RTOS** - Real-time operating system with SMP support -- **x86_64 Architecture** - Optimized for modern 64-bit Intel/AMD processors -- **Multiboot Support** - Compatible with GRUB and other multiboot loaders -- **56MB Image Size** - Compact footprint while maintaining essential functionality -- **Host: Ubuntu 24.04** - Developed and tested on Ubuntu 24.04 as host machine - -### Networking Capabilities - -- **VirtIO Network Driver** - High-performance virtualized networking -- **Bridge Networking** - Direct network access with configurable IP -- **Port Forwarding** - Alternative NAT-based networking mode -- **SSH Server** - Remote access with passwordless authentication -- **DHCP Client** - Automatic IP configuration with dhcpcd -- **Network Packet Capture** - tcpdump integration with Wireshark support -- **ICMP Support** - Ping connectivity for network testing -- **SFTP Server** - Secure file transfer capabilities - -### Development Tools - -- **Toybox Utilities** - Comprehensive set of Unix command-line tools -- **Shell Environment** - Korn shell (ksh) with standard Unix tools -- **SSH Client/Server** - Full SSH stack for remote development -- **OpenSSL** - Cryptographic libraries and tools -- **File System Support** - QNX6 and DOS file systems - -### Storage and I/O - -- **RAM Disk** - 10MB temporary storage with 512KB cache -- **IDE/SATA Support** - Block device access for persistent storage -- **Serial Console** - 115200 baud serial interface for debugging -- **PCI Hardware Support** - Comprehensive PCI device management - -### Security Features - -- **User Management** - Root and regular user accounts -- **SSH Key Authentication** - RSA host keys pre-configured -- **File Permissions** - Standard Unix-style permissions -- **Chroot Environment** - SSH privilege separation - -## Directory Structure - -```text -qnx_qemu/ -├── README.md # This documentation file -├── BUILD # Bazel build configuration with multiple run targets -├── MODULE.bazel # Bazel module configuration -├── .bazelrc # Bazel configuration file -│ -├── build/ # Image build definitions -│ ├── BUILD # Build targets for QNX image creation -│ ├── init.build # IFS (Image FileSystem) definition -│ └── system.build # System content definition (libraries, tools, configs) -│ -├── configs/ # Configuration files and scripts -│ ├── BUILD # Build configuration for config files -│ ├── startup.sh # Main system startup script -│ ├── network_setup.sh # Standard network configuration -│ ├── network_setup_dhcp.sh # DHCP-based network configuration -│ ├── network_capture.sh # Network packet capture utility -│ ├── dhcpcd.conf # DHCP client configuration -│ ├── sshd_config # SSH daemon configuration (passwordless) -│ ├── ssh_host_rsa_key # SSH server private key -│ ├── ssh_host_rsa_key.pub # SSH server public key -│ ├── pci_server.cfg # PCI bus server configuration -│ ├── pci_hw.cfg # PCI hardware configuration -│ ├── qcrypto.conf # Cryptographic library configuration -│ ├── passwd # User account database -│ ├── group # Group membership database -│ ├── hostname # System hostname definition -│ └── profile # Shell environment configuration -│ -├── scripts/ # Utility scripts -│ ├── run_qemu.sh # QEMU launcher with bridge networking -│ ├── run_qemu_portforward.sh # QEMU launcher with port forwarding -│ └── qnx_wireshark.sh # Wireshark integration for network analysis -│ -└── test/ # Testing framework - ├── test_qnx_qemu_bridge.sh # Bridge networking integration tests - └── test_qnx_qemu_portforward.sh # Port forwarding integration tests -``` - -### Key Files Explained - -- **`init.build`** - Defines the bootable image structure, kernel parameters, and essential boot-time utilities -- **`system.build`** - Specifies all system libraries, tools, and configuration files for the running system -- **`startup.sh`** - Orchestrates system service initialization (logging, PCI, networking, SSH) -- **`network_setup.sh`** - Configures network interfaces with static IP addressing -- **`network_setup_dhcp.sh`** - Configures network interfaces with DHCP -- **`network_capture.sh`** - Network packet capture tool with Wireshark integration -- **`run_qemu.sh`** - Launches QEMU with bridge networking for direct IP access -- **`run_qemu_portforward.sh`** - Launches QEMU with port forwarding (NAT networking) -- **`qnx_wireshark.sh`** - Host-side script for Wireshark network analysis integration -- **`test_qnx_qemu_bridge.sh`** - Automated testing for bridge networking mode -- **`test_qnx_qemu_portforward.sh`** - Automated testing for port forwarding mode - -## Building the Image - -### Prerequisites - -- Bazel build system -- QNX SDP (Software Development Platform) toolchain -- Linux host system with KVM support - -### Build Commands - -```bash -# Build the QNX image -bazel build --config=x86_64-qnx //build:init - -# Build and run QEMU with bridge networking -bazel run --config=x86_64-qnx //:run_qemu - -# Build and run QEMU with port forwarding -bazel run --config=x86_64-qnx //:run_qemu_portforward - -# Run integration tests for bridge networking -bazel run --config=x86_64-qnx //:test_qemu_bridge - -# Run integration tests for port forwarding -bazel run --config=x86_64-qnx //:test_qemu_portforward - -# Run ITF tests for ssh -bazel test --config=qemu-integration //:test_ssh_qemu --test_output=streamed -``` - -In order to provide credentials for qnx.com pass to bazel command: - -```bash ---credential_helper=*.qnx.com=/tools/qnx_credential_helper.py -``` - -See more in [toolchains_qnx README](https://github.com/eclipse-score/toolchains_qnx?tab=readme-ov-file#using-pre-packaged-qnx-80-sdp). - -## Running the System - -### Using Bazel (Recommended) - -#### Bridge Networking Mode - -```bash -# Start the QNX system with bridge networking (direct IP access) -bazel run --config=x86_64-qnx //:run_qemu -``` - -This mode provides: - -- Direct IP access to QNX system -- Ping connectivity from host -- SSH access via direct IP e.g.: `ssh root@192.168.122.100` - -#### Port Forwarding Mode - -```bash -# Start the QNX system with port forwarding (NAT networking) -bazel run --config=x86_64-qnx //:run_qemu_portforward -``` - -This mode provides: - -- SSH access via port forwarding: `ssh -p 2222 root@localhost` -- HTTP port forwarding: `localhost:8080` → `guest:80` -- HTTPS port forwarding: `localhost:8443` → `guest:443` -- Packet capture port: `localhost:9999` → `guest:9999` - -### Manual QEMU Execution - -#### Bridge Networking - -```bash -qemu-system-x86_64 \ - -smp 2 \ - --enable-kvm \ - -cpu Cascadelake-Server-v5 \ - -m 1G \ - -nographic \ - -kernel path/to/ifs_image \ - -serial mon:stdio \ - -object rng-random,filename=/dev/urandom,id=rng0 \ - -netdev bridge,id=net0,br=virbr0 \ - -device virtio-net-pci,netdev=net0 \ - -device virtio-rng-pci,rng=rng0 -``` - -#### Port Forwarding - -```bash -qemu-system-x86_64 \ - -smp 2 \ - --enable-kvm \ - -cpu Cascadelake-Server-v5 \ - -m 1G \ - -nographic \ - -kernel path/to/ifs_image \ - -serial mon:stdio \ - -object rng-random,filename=/dev/urandom,id=rng0 \ - -netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80,hostfwd=tcp::8443-:443,hostfwd=tcp::9999-:9999 \ - -device virtio-net-pci,netdev=net0 \ - -device virtio-rng-pci,rng=rng0 -``` - -### QEMU Parameters Explained - -- **`-smp 2`** - Enable 2 CPU cores for SMP support -- **`--enable-kvm`** - Use hardware virtualization for better performance -- **`-cpu Cascadelake-Server-v5`** - Emulate modern Intel CPU features for older Ubuntu versions change that to `-cpu host` in case of errors -- **`-m 1G`** - Allocate 1GB of RAM -- **`-nographic`** - Disable graphical display (console-only) -- **`-netdev bridge`** - Connect to host bridge network for direct IP access -- **`-device virtio-net-pci`** - Use VirtIO network driver for optimal performance -- **`-device virtio-rng-pci`** - Provide hardware random number generation - -## Network Configuration - -### Default Network Settings - -#### Bridge Network Configuration - -- **IP Address**: DHCP client for QNX SDP 8.0 is dhcpcd. It also provides the IPv4 Link Local addressing and IPv6 Router Solicitation functionality that was previously provided by autoipd -- **Subnet Mask**: `255.255.255.0` -- **Network Interface**: `vtnet0` (VirtIO network) -- **SSH Port**: `22` - -#### Port Forward Network Configuration - -- **IP Address**: `10.0.2.15` (QEMU user networking) -- **Subnet Mask**: `255.255.255.0` -- **Network Interface**: `vtnet0` (VirtIO network) -- **SSH Port**: `22` (forwarded to host port `2222`) - -### Changing the IP Address - -To modify the default IP address, edit the network configuration: - -1. **Edit network setup script**: - - ```bash - vim configs/network_setup.sh - ``` - -2. **Example on modify the IP configuration line**: - - ```bash - # Change this line to your desired IP - ifconfig vtnet0 192.168.122.100 netmask 255.255.255.0 - - # Example: Change to 192.168.1.50 - ifconfig vtnet0 192.168.1.50 netmask 255.255.255.0 - ``` - -3. **Update test script IP** (if using tests): - - ```bash - vim test/test_qnx_qemu_bridge.sh - ``` - - Change the default IP in the bridge test script: - - ```bash - QNX_IP=${QNX_IP:-192.168.1.50} # Update default IP - ``` - -4. **Rebuild the image**: - - ```bash - bazel build --config=x86_64-qnx //build:init - ``` - -### Network Bridge Setup (Host) - -For direct IP access, ensure your host has a bridge network configured: - -```bash -# Create bridge (if not exists) -sudo ip link add name virbr0 type bridge -sudo ip link set virbr0 up -sudo ip addr add 192.168.122.1/24 dev virbr0 - -# Enable IP forwarding -echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward -``` - -In case of failed to parse default acl file /etc/qemu/bridge.conf' - -1. Check acl of `/etc/qemu/bridge.conf` -2. If file does not exist; create that file and add the following line in it -`allow virbr0` -3. Run qemu with Sudo as debug option in case of failure with acl - -In case of error "Operation not permitted" for `qemu-bridge-helper` run - -```bash -sudo chmod u+s /usr/lib/qemu/qemu-bridge-helper -``` - -## User Accounts and Access - -### Available Users - -| Username | UID | GID | Home Directory | Shell | Password | -|----------|-----|-----|----------------|-------|----------| -| root | 0 | 0 | / | /bin/sh | None (passwordless) | -| qnxuser | 1000 | 1000 | / | /bin/sh | None (passwordless) | -| sshd | 15 | 6 | / | /bin/false | N/A (service account) | - -### SSH Access - -The system is configured for passwordless SSH access: - -#### SSH via Bridge Network - -```bash -# Connect via bridge network (DHCP or fallback IP) -ssh root@192.168.122.100 # If using fallback IP -# OR check actual DHCP-assigned IP first: -# ssh root@ - -# Connect as regular user -ssh qnxuser@192.168.122.100 # If using fallback IP -``` - -#### SSH via Port Forwarding - -```bash -# Connect via port forwarding (recommended for NAT networking) -ssh -p 2222 root@localhost - -# Connect as regular user via port forwarding -ssh -p 2222 qnxuser@localhost -``` - -**Note**: No password is required. The system accepts empty passwords for simplicity in development environments. - -## Testing - -### Automated Test Suite - -The project includes comprehensive test suites for both networking modes that validate: - -- System boot and initialization -- Network connectivity (ping tests for bridge mode) -- SSH server functionality -- System service status -- File system operations -- Network-specific features - -### Running Tests - -#### Bridge Networking Tests - -```bash -# Run bridge networking test suite -bazel run --config=x86_64-qnx //:test_qemu_bridge - -# Run with custom parameters -bazel run --config=x86_64-qnx //:test_qemu_bridge -- --timeout=120 --boot-wait=20 --qnx-ip=192.168.1.50 -``` - -#### Port Forwarding Tests - -```bash -# Run port forwarding test suite -bazel run --config=x86_64-qnx //:test_qemu_portforward - -# Run with custom parameters -bazel run --config=x86_64-qnx //:test_qemu_portforward -- --timeout=120 --boot-wait=20 -``` - -### Test Script Options - -#### Bridge Networking Test Options - -```bash -./test_qnx_qemu_bridge.sh [options] - -Options: - --timeout=N Boot timeout in seconds (default: 120) - --ssh-port=N SSH port for testing (default: 2222) - --ssh-user=USER SSH user for testing (default: root) - --boot-wait=N Additional wait after boot (default: 15) - --qnx-ip=IP QNX system IP for ping test (default: 192.168.122.100) - --no-ssh Skip SSH connectivity test - --no-ping Skip ping connectivity test - --help Show help message -``` - -#### Port Forwarding Test Options - -```bash -./test_qnx_qemu_portforward.sh [options] - -Options: - --timeout=N Boot timeout in seconds (default: 120) - --ssh-port=N SSH port for testing (default: 2222) - --ssh-user=USER SSH user for testing (default: root) - --boot-wait=N Additional wait after boot (default: 15) - --no-ssh Skip SSH connectivity test - --help Show help message - -Note: Port forwarding mode does not support ping tests due to NAT networking. -``` - -### Expected Test Output - -```text -============================================================ -QNX QEMU Integration Test -============================================================ -QNX Host: /path/to/qnx/host -IFS Image: /path/to/ifs/image -Timeout: 90s -QNX IP: 192.168.122.100 -SSH Port: 2222 -SSH User: root -Ping Test: Enabled -Boot Wait: 15s - -1. Starting QEMU with bridge networking... -✓ QEMU started (PID: 12345) -✓ Bridge networking: 192.168.122.100 (for ping test) -✓ SSH port forwarding: localhost:2222 -> guest:22 - -2. Waiting for boot completion (timeout: 90s)... -Waiting for hostname confirmation: 'Hostname set to: Qnx_S-core' -✓ Boot completion detected: Found hostname confirmation -✓ System fully booted and hostname configured - -3. Waiting for system stabilization (15s)... -✓ Stabilization wait completed - -4. Testing ping connectivity to QNX system... -Testing ping to 192.168.122.100... -✓ Ping test successful - QNX system is reachable at 192.168.122.100 -Ping statistics: -PING 192.168.122.100 (192.168.122.100) 56(84) bytes of data. -64 bytes from 192.168.122.100: icmp_seq=1 ttl=64 time=0.234 ms -64 bytes from 192.168.122.100: icmp_seq=2 ttl=64 time=0.187 ms -64 bytes from 192.168.122.100: icmp_seq=3 ttl=64 time=0.198 ms - -5. Testing system functionality... -✓ QEMU process is still running -✓ Found system indicator: qnx -✓ Found system indicator: Welcome -✓ Found system indicator: startup -✓ System functionality indicators found (3) - -6. Testing SSH connectivity... -Testing SSH port connectivity on localhost:2222... -✓ SSH port 2222 is open on localhost -Testing direct SSH connection to QNX system... -Attempting SSH connection to root@192.168.122.100... -✓ SSH connection to 192.168.122.100 successful -✓ Checked /tmp/hostname contents - -7. Final system status... -✓ QEMU process is running (PID: 12345) - -Recent system output: ----------------------------------------- ----> Starting sshd -Hostname set to: Qnx_S-core -# ----------------------------------------- - -============================================================ -✓ ALL TESTS PASSED -QNX QEMU integration is working correctly! -QEMU is running on PID: 12345 -QNX system IP: 192.168.122.100 (pingable) -SSH port forwarding: localhost:2222 -> guest:22 -============================================================ -``` - -### Test Failure Scenarios - -If tests fail, check: - -1. **Boot Timeout**: Increase `--timeout` value -2. **Network Issues**: Verify bridge setup and IP configuration -3. **SSH Problems**: Check SSH daemon startup and port forwarding -4. **Host Permissions**: Ensure user can access KVM and bridge networking - -## System Capabilities - -### Available Commands - -The system includes a comprehensive set of Unix-like utilities through Toybox: - -**File Operations**: `ls`, `cp`, `mv`, `rm`, `cat`, `grep`, `find`, `chmod`, `chown` -**Text Processing**: `awk`, `sed`, `sort`, `cut`, `tr`, `wc`, `head`, `tail` -**System Info**: `ps` (pidin), `uname`, `whoami`, `id`, `hostname` -**Network Tools**: `ifconfig`, `ssh`, `scp`, `ping` (through system), `tcpdump` -**Network Analysis**: `network_capture` - Packet capture with Wireshark integration -**Compression**: `gzip`, `gunzip`, `tar`, `bzip2` -**Development**: `openssl`, `hexdump`, `od`, `strings` - -### System Services - -- **System Logger** (`slogger2`) - Centralized logging with 4KB buffer -- **PCI Server** - Hardware device management -- **SSH Daemon** - Remote access service -- **File System Event Manager** - File change notifications -- **Message Queues** - POSIX IPC support -- **Random Number Generator** - Entropy service -- **Network Stack** - TCP/IP with VirtIO drivers - -### File Systems - -- **Root File System** - Image File System (IFS) in memory -- **QNX6 File System** - On RAM disk (`/tmp_ram`) -- **DOS File System** - For compatibility -- **Pseudo File Systems** - `/proc`, `/dev`, `/tmp` - -## Network Trace Collection - -### Network Analysis Overview - -The QNX system includes comprehensive network packet capture capabilities with Wireshark integration. This enables real-time analysis of network traffic for debugging, security analysis, and performance monitoring. - -### Packet Capture Methods - -#### 1. Direct Capture on QNX System - -Access the QNX system and use the built-in capture tool: - -```bash -# SSH into QNX system -ssh -p 2222 root@localhost - -# Start packet capture (saves to file) -network_capture start - -# Capture with filter (e.g., SSH traffic only) -network_capture start "tcp port 22" - -# Check capture status -network_capture status - -# List captured files -network_capture list - -# Stop capture -network_capture stop -``` - -#### 2. Real-time Streaming to Wireshark - -Stream packets directly to Wireshark running on the host system: - -```bash -# On QNX system: Start packet streaming -network_capture stream - -# On host system: Launch Wireshark with remote capture -# Method 1: Use integration script (recommended) -./scripts/qnx_wireshark.sh wireshark - -# Method 2: Manual Wireshark configuration -# 1. Open Wireshark -# 2. Go to Capture -> Options -> Manage Interfaces -# 3. Add remote interface: TCP@localhost:9999 -# 4. Start capture -``` - -### Host Integration Script - -The `scripts/qnx_wireshark.sh` script provides seamless integration: - -```bash -# Launch Wireshark with live QNX capture -./scripts/qnx_wireshark.sh wireshark - -# Start streaming (manual Wireshark setup) -./scripts/qnx_wireshark.sh stream - -# Download saved capture files -./scripts/qnx_wireshark.sh list -./scripts/qnx_wireshark.sh download capture_20250129_143022.pcap - -# Check QNX capture status -./scripts/qnx_wireshark.sh status - -# Stop all captures -./scripts/qnx_wireshark.sh stop -``` - -### Network Filtering Examples - -Common packet filters for targeted analysis: - -```bash -# SSH traffic analysis -network_capture start "tcp port 22" - -# ICMP/ping analysis -network_capture start "icmp" - -# All TCP traffic -network_capture start "tcp" - -# Traffic to/from gateway -network_capture start "host 10.0.2.2" - -# HTTP/HTTPS traffic -network_capture start "tcp port 80 or tcp port 443" - -# DNS queries -network_capture start "udp port 53" -``` - -### Port Forwarding Configuration - -The system is configured with port forwarding for network analysis: - -- **SSH**: `localhost:2222` → `guest:22` -- **HTTP**: `localhost:8080` → `guest:80` -- **HTTPS**: `localhost:8443` → `guest:443` -- **Packet Stream**: `localhost:9999` → `guest:9999` - -### Wireshark Analysis Workflow - -1. **Start QNX System**: - - ```bash - bazel run --config=x86_64-qnx //:run_qemu_portforward - ``` - -2. **Launch Live Capture**: - - ```bash - ./scripts/qnx_wireshark.sh wireshark "tcp" - ``` - -3. **Generate Traffic**: - - - SSH connections: `ssh -p 2222 root@localhost` - - Network tests: `ping` from within QNX - - Application traffic through port forwarding - -4. **Analyze in Wireshark**: - - Real-time packet inspection - - Protocol analysis - - Network performance metrics - - Security analysis - -### Saved Capture Analysis - -For offline analysis of saved captures: - -```bash -# List available captures -./scripts/qnx_wireshark.sh list - -# Download specific capture -./scripts/qnx_wireshark.sh download capture_20250129_143022.pcap - -# Open in Wireshark -wireshark capture_20250129_143022.pcap -``` - -### Troubleshooting Network Capture - -**Connection Issues**: - -- Verify SSH connectivity: `ssh -p 2222 root@localhost` -- Check port forwarding: `netstat -tlnp | grep 9999` -- Ensure QNX system is running: `./scripts/qnx_wireshark.sh status` - -**Wireshark Integration**: - -- Install Wireshark: `sudo apt install wireshark` (Ubuntu/Debian) -- Add user to wireshark group: `sudo usermod -a -G wireshark $USER` -- Verify remote capture support in Wireshark - -**Packet Loss**: - -- Reduce capture load with specific filters -- Use file-based capture for high-throughput analysis -- Monitor system resources on QNX - -### Network Security Considerations - -- Packet captures may contain sensitive data -- Use filters to limit captured data scope -- Secure transfer of capture files from QNX system -- Regular cleanup of capture files in `/tmp_ram/var/capture` - -## Troubleshooting - -### Common Issues - -1. **System Won't Boot** - - Check QNX SDP toolchain installation - - Verify image file permissions - - Ensure KVM is available and accessible - -2. **Network Connectivity Issues** - - Verify bridge network configuration on host - - Check IP address conflicts - - Ensure firewall allows bridge traffic - -3. **SSH Connection Refused** - - Wait for full system boot (look for "Hostname set to: Qnx_S-core") - - Check SSH daemon startup in console output - - Verify port forwarding configuration - -4. **Performance Issues** - - Enable KVM acceleration (`--enable-kvm`) - - Increase memory allocation (`-m 2G`) - - Use VirtIO drivers for I/O - -### Debug Information - -- **Boot Messages**: Monitor serial console for startup progress -- **System Logs**: Use `slog2info` within the system -- **Process List**: Use `pidin` to see running processes -- **Network Status**: Use `ifconfig` to check interface configuration - -### Host Requirements - -- **Linux Distribution**: Ubuntu 20.04+ or equivalent -- **Virtualization**: KVM support enabled -- **Memory**: Minimum 4GB host RAM (1GB allocated to guest) -- **Network**: Bridge networking capability -- **Privileges**: Access to `/dev/kvm` and bridge creation - -## Development and Customization - -### Adding New Software - -1. **Edit system.build**: Add new binaries and libraries -2. **Update dependencies**: Include required shared libraries -3. **Rebuild image**: `bazel build --config=x86_64-qnx //build:init` - -### Modifying Services - -1. **Edit startup.sh**: Modify service startup sequence -2. **Add configuration files**: Place in `configs/` directory -3. **Update BUILD file**: Include new configuration files - -### Security Considerations - -This image is configured for development convenience with: - -- Passwordless SSH access -- Root login enabled -- Relaxed security policies - -For production use, implement: - -- Strong authentication mechanisms -- User privilege restrictions -- Network access controls -- Audit logging - -## Contributing - -This project is part of the Eclipse SCORE initiative. Contributions should follow Eclipse Foundation guidelines and maintain compatibility with the SCORE architecture. - -## License - -This project is licensed under the Apache License 2.0. See the LICENSE file for details. - ---- - -**Eclipse SCORE** - Safety Critical Object-Oriented Real-time Embedded Systems diff --git a/qnx_qemu/test/test_qnx_qemu_bridge.sh b/qnx_qemu/test/test_qnx_qemu_bridge.sh deleted file mode 100755 index f7b8468fd00..00000000000 --- a/qnx_qemu/test/test_qnx_qemu_bridge.sh +++ /dev/null @@ -1,509 +0,0 @@ -#!/bin/bash - -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -set -euo pipefail - -# QNX QEMU Bridge Network Test Script -# Tests QNX QEMU image with bridge networking and fixed IP - -# Default configuration -TIMEOUT=${TIMEOUT:-120} -SSH_PORT=${SSH_PORT:-2222} -SSH_USER=${SSH_USER:-root} -BOOT_WAIT=${BOOT_WAIT:-15} -QNX_IP=${QNX_IP:-192.168.122.100} -QNX_HOST="" -IFS_IMAGE="" - -# Parse command line arguments -usage() { - echo "Usage: $0 [options]" - echo "Options:" - echo " --timeout=N Boot timeout in seconds (default: 120)" - echo " --ssh-port=N SSH port for testing (default: 2222)" - echo " --ssh-user=USER SSH user for testing (default: root)" - echo " --boot-wait=N Additional wait after boot (default: 15)" - echo " --qnx-ip=IP QNX system IP for ping test (default: 192.168.122.100)" - echo " --no-ssh Skip SSH connectivity test" - echo " --no-ping Skip ping connectivity test" - echo " --help Show this help" - echo "" - echo "Note: This test uses bridge networking with fixed IP" - exit 1 -} - -# Parse arguments -TEST_SSH=true -TEST_PING=true -while [[ $# -gt 0 ]]; do - case $1 in - --timeout=*) - TIMEOUT="${1#*=}" - shift - ;; - --ssh-port=*) - SSH_PORT="${1#*=}" - shift - ;; - --ssh-user=*) - SSH_USER="${1#*=}" - shift - ;; - --boot-wait=*) - BOOT_WAIT="${1#*=}" - shift - ;; - --qnx-ip=*) - QNX_IP="${1#*=}" - shift - ;; - --no-ssh) - TEST_SSH=false - shift - ;; - --no-ping) - TEST_PING=false - shift - ;; - --help) - usage - ;; - -*) - echo "Unknown option: $1" - usage - ;; - *) - if [ -z "$QNX_HOST" ]; then - QNX_HOST="$1" - elif [ -z "$IFS_IMAGE" ]; then - IFS_IMAGE="$1" - else - echo "Too many arguments" - usage - fi - shift - ;; - esac -done - -# Validate required arguments -if [ -z "$QNX_HOST" ] || [ -z "$IFS_IMAGE" ]; then - echo "Error: Missing required arguments" - usage -fi - -# Validate files exist -if [ ! -d "$QNX_HOST" ]; then - echo "Error: QNX host directory not found: $QNX_HOST" - exit 1 -fi - -if [ ! -f "$IFS_IMAGE" ]; then - echo "Error: IFS image not found: $IFS_IMAGE" - exit 1 -fi - -# Global variables -QEMU_PID="" -OUTPUT_LOG="/tmp/qnx_qemu_bridge_test_$$.log" - -echo "============================================================" -echo "QNX QEMU Bridge Network Test" -echo "============================================================" -echo "QNX Host: $QNX_HOST" -echo "IFS Image: $IFS_IMAGE" -echo "Timeout: ${TIMEOUT}s" -echo "QNX IP: $QNX_IP (bridge network)" -if [ "$TEST_SSH" = true ]; then - echo "SSH Test: Enabled (direct connection)" - echo "SSH User: $SSH_USER" -else - echo "SSH Test: Disabled" -fi -if [ "$TEST_PING" = true ]; then - echo "Ping Test: Enabled" -else - echo "Ping Test: Disabled" -fi -echo "Boot Wait: ${BOOT_WAIT}s" -echo "Network Mode: Bridge (virbr0)" -echo "" - -# Cleanup function -cleanup() { - echo "" - echo "Cleaning up..." - - # Kill QEMU process - if [ -n "$QEMU_PID" ] && kill -0 "$QEMU_PID" 2>/dev/null; then - echo "Terminating QEMU process (PID: $QEMU_PID)" - kill "$QEMU_PID" 2>/dev/null || true - sleep 3 - if kill -0 "$QEMU_PID" 2>/dev/null; then - echo "Force killing QEMU process" - kill -9 "$QEMU_PID" 2>/dev/null || true - fi - fi - - # Clean up files - rm -f "/tmp/qemu.pid" "$OUTPUT_LOG" 2>/dev/null || true - - echo "Cleanup completed" -} - -# Set trap for cleanup -trap cleanup EXIT INT TERM - -# Function to start QEMU with bridge networking -start_qemu() { - echo "1. Starting QEMU with bridge networking..." - - # Start QEMU in background with bridge networking only (no port forwarding) - qemu-system-x86_64 \ - -smp 2 \ - --enable-kvm \ - -cpu Cascadelake-Server-v5 \ - -m 1G \ - -pidfile /tmp/qemu.pid \ - -nographic \ - -kernel "$IFS_IMAGE" \ - -serial mon:stdio \ - -object rng-random,filename=/dev/urandom,id=rng0 \ - -device virtio-rng-pci,rng=rng0 \ - -netdev bridge,id=net0,br=virbr0 \ - -device virtio-net-pci,netdev=net0 \ - > "$OUTPUT_LOG" 2>&1 & - - QEMU_PID=$! - echo "✓ QEMU started (PID: $QEMU_PID)" - echo "✓ Bridge networking enabled (DHCP with fallback: $QNX_IP)" - echo "✓ Direct network access via bridge interface" -} - -# Function to wait for boot completion -wait_for_boot() { - echo "" - echo "2. Waiting for boot completion (timeout: ${TIMEOUT}s)..." - - local start_time=$(date +%s) - local boot_complete=false - - # Look specifically for hostname confirmation message - local hostname_pattern="Hostname set to: Qnx_S-core" - - echo "Waiting for hostname confirmation: '$hostname_pattern'" - - while [ $(($(date +%s) - start_time)) -lt "$TIMEOUT" ]; do - # Check if QEMU process is still running - if ! kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✗ QEMU process terminated unexpectedly" - echo "Last output:" - tail -20 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - return 1 - fi - - # Check for hostname confirmation message - if grep -q "$hostname_pattern" "$OUTPUT_LOG" 2>/dev/null; then - echo "✓ Boot completion detected: Found hostname confirmation" - boot_complete=true - break - fi - - # Show progress every 10 seconds - local elapsed=$(($(date +%s) - start_time)) - if [ $((elapsed % 10)) -eq 0 ] && [ $elapsed -gt 0 ]; then - echo " ... still waiting (${elapsed}s elapsed)" - fi - - sleep 2 - done - - if [ "$boot_complete" = true ]; then - echo "✓ System fully booted and hostname configured" - return 0 - else - echo "✗ Boot timeout reached - hostname confirmation not found" - echo "Recent QEMU output:" - echo "----------------------------------------" - tail -20 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - echo "----------------------------------------" - return 1 - fi -} - -# Function to wait additional time for system stabilization -wait_for_stabilization() { - if [ "$BOOT_WAIT" -gt 0 ]; then - echo "" - echo "3. Waiting for system stabilization (${BOOT_WAIT}s)..." - sleep "$BOOT_WAIT" - echo "✓ Stabilization wait completed" - fi -} - -# Function to detect actual QNX IP address -detect_qnx_ip() { - echo "" - echo "4. Detecting QNX system IP address..." - - local detected_ip="" - local dhcp_status="" - - # Try to get DHCP status from the system - local dhcp_pattern="DHCP_SUCCESS\|DHCP_FAILED_STATIC_FALLBACK" - local dhcp_wait=30 - local dhcp_start=$(date +%s) - - echo "Waiting for network configuration to complete..." - - while [ $(($(date +%s) - dhcp_start)) -lt "$dhcp_wait" ]; do - if grep -q "$dhcp_pattern" "$OUTPUT_LOG" 2>/dev/null; then - dhcp_status=$(grep "$dhcp_pattern" "$OUTPUT_LOG" | tail -1) - echo "✓ Network configuration detected: $dhcp_status" - break - fi - sleep 2 - echo " ... waiting for network setup" - done - - # Try to extract IP from DHCP status in logs - local ip_pattern="IP address set to: [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" - if grep -q "$ip_pattern" "$OUTPUT_LOG" 2>/dev/null; then - detected_ip=$(grep "$ip_pattern" "$OUTPUT_LOG" | tail -1 | sed 's/.*IP address set to: \([0-9.]*\).*/\1/') - if [ -n "$detected_ip" ] && [ "$detected_ip" != "0.0.0.0" ]; then - echo "✓ Detected QNX IP address from logs: $detected_ip" - QNX_IP="$detected_ip" - return 0 - fi - fi - - # If we couldn't detect IP from logs, use the fallback IP - echo "⚠ Could not detect actual IP from logs, using fallback: $QNX_IP" - echo " (System may be using DHCP or static fallback)" - - return 0 -} - -# Function to test ping connectivity -test_ping_connectivity() { - if [ "$TEST_PING" != true ]; then - echo "" - echo "5. Ping test skipped (disabled)" - return 0 - fi - - echo "" - echo "5. Testing ping connectivity to QNX system..." - - # Test ping connectivity to the QNX system - echo "Testing ping to $QNX_IP..." - - if command -v ping >/dev/null 2>&1; then - # Try ping with different approaches (some systems use different flags) - local ping_success=false - - # Try standard ping (3 packets) - if ping -c 3 -W 5 "$QNX_IP" >/dev/null 2>&1; then - ping_success=true - elif ping -c 3 -w 5 "$QNX_IP" >/dev/null 2>&1; then - ping_success=true - fi - - if [ "$ping_success" = true ]; then - echo "✓ Ping test successful - QNX system is reachable at $QNX_IP" - - # Show ping statistics - echo "Ping statistics:" - ping -c 3 "$QNX_IP" 2>/dev/null || echo " (statistics not available)" - else - echo "✗ Ping test failed - QNX system not reachable at $QNX_IP" - echo "This could indicate:" - echo " - Bridge networking not properly configured" - echo " - QNX network setup failed or still in progress" - echo " - Host firewall blocking ICMP" - echo " - IP address detection was incorrect" - return 1 - fi - else - echo "⚠ Ping command not available, skipping ping test" - fi - - return 0 -} - -# Function to test system functionality -test_system_functionality() { - echo "" - echo "6. Testing system functionality..." - - # Check if QEMU is still running - if ! kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✗ QEMU process is not running" - return 1 - fi - echo "✓ QEMU process is still running" - - # Check for system indicators in output - local system_indicators=( - "qnx" - "Welcome" - "shell" - "startup" - ) - - local found_indicators=0 - for indicator in "${system_indicators[@]}"; do - if grep -i -q "$indicator" "$OUTPUT_LOG" 2>/dev/null; then - echo "✓ Found system indicator: $indicator" - ((found_indicators++)) - fi - done - - if [ "$found_indicators" -gt 0 ]; then - echo "✓ System functionality indicators found ($found_indicators)" - return 0 - else - echo "✗ No system functionality indicators found" - return 1 - fi -} - -# Function to test SSH connectivity -test_ssh_connectivity() { - if [ "$TEST_SSH" != true ]; then - echo "" - echo "7. SSH test skipped (disabled)" - return 0 - fi - - echo "" - echo "7. Testing SSH connectivity..." - - # Test direct SSH connection to QNX system IP without key authentication - echo "Testing direct SSH connection to QNX system..." - if command -v ssh >/dev/null 2>&1; then - echo "Attempting SSH connection to $SSH_USER@$QNX_IP..." - - # Try SSH connection with password authentication (no keys, empty password) - if timeout 15 ssh -o ConnectTimeout=10 \ - -o StrictHostKeyChecking=no \ - -o UserKnownHostsFile=/dev/null \ - -o PreferredAuthentications=password \ - -o PubkeyAuthentication=no \ - -o PasswordAuthentication=yes \ - -o BatchMode=yes \ - "$SSH_USER@$QNX_IP" \ - "echo 'SSH connection successful'; hostname 2>/dev/null || echo 'hostname command not available'; ifconfig vtnet0 2>/dev/null | grep 'inet ' || echo 'Network info not available'" 2>/dev/null; then - echo "✓ SSH connection to $QNX_IP successful" - echo "✓ Executed remote commands successfully" - else - echo "✗ SSH connection to $QNX_IP failed" - echo "This could indicate:" - echo " - SSH daemon not yet started" - echo " - Network connectivity issues" - echo " - SSH authentication problems" - echo " - Firewall blocking SSH port" - return 1 - fi - else - echo "⚠ SSH client not available, skipping SSH connection test" - fi - - return 0 -} - -# Function to show final system status -show_system_status() { - echo "" - echo "8. Final system status..." - - if kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✓ QEMU process is running (PID: $QEMU_PID)" - else - echo "✗ QEMU process is not running" - fi - - echo "" - echo "Recent system output:" - echo "----------------------------------------" - tail -15 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - echo "----------------------------------------" -} - -# Main execution -main() { - local all_tests_passed=true - - # Start QEMU - if ! start_qemu; then - echo "✗ Failed to start QEMU" - return 1 - fi - - # Wait for boot - if ! wait_for_boot; then - echo "✗ Boot test failed" - all_tests_passed=false - fi - - # Wait for stabilization - wait_for_stabilization - - # Detect actual QNX IP address - if ! detect_qnx_ip; then - echo "✗ IP detection failed" - all_tests_passed=false - fi - - # Test ping connectivity - if ! test_ping_connectivity; then - echo "✗ Ping connectivity test failed" - all_tests_passed=false - fi - - # Test system functionality - if ! test_system_functionality; then - echo "✗ System functionality test failed" - all_tests_passed=false - fi - - # Test SSH connectivity - if ! test_ssh_connectivity; then - echo "✗ SSH connectivity test failed" - all_tests_passed=false - fi - - # Show final status - show_system_status - - # Results - echo "" - echo "============================================================" - if [ "$all_tests_passed" = true ]; then - echo "✓ ALL TESTS PASSED" - echo "QNX QEMU bridge network integration is working correctly!" - echo "QEMU is running on PID: $QEMU_PID" - echo "QNX system IP: $QNX_IP (detected via bridge networking)" - echo "SSH access: ssh $SSH_USER@$QNX_IP (direct bridge connection)" - return 0 - else - echo "✗ SOME TESTS FAILED" - echo "Check the output above for details." - return 1 - fi -} - -# Run main function -main "$@" diff --git a/qnx_qemu/test/test_qnx_qemu_portforward.sh b/qnx_qemu/test/test_qnx_qemu_portforward.sh deleted file mode 100755 index 5309ae808fb..00000000000 --- a/qnx_qemu/test/test_qnx_qemu_portforward.sh +++ /dev/null @@ -1,406 +0,0 @@ -#!/bin/bash -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -set -euo pipefail - -# QNX QEMU Port Forwarding Test Script -# Tests QNX QEMU image with port forwarding (NAT networking) - -# Default configuration -TIMEOUT=${TIMEOUT:-120} -SSH_PORT=${SSH_PORT:-2222} -SSH_USER=${SSH_USER:-root} -BOOT_WAIT=${BOOT_WAIT:-15} -QNX_HOST="" -IFS_IMAGE="" - -# Parse command line arguments -usage() { - echo "Usage: $0 [options]" - echo "Options:" - echo " --timeout=N Boot timeout in seconds (default: 120)" - echo " --ssh-port=N SSH port for testing (default: 2222)" - echo " --ssh-user=USER SSH user for testing (default: root)" - echo " --boot-wait=N Additional wait after boot (default: 15)" - echo " --no-ssh Skip SSH connectivity test" - echo " --help Show this help" - echo "" - echo "Note: This test uses port forwarding (NAT networking) - no ping test available" - exit 1 -} - -# Parse arguments -TEST_SSH=true -while [[ $# -gt 0 ]]; do - case $1 in - --timeout=*) - TIMEOUT="${1#*=}" - shift - ;; - --ssh-port=*) - SSH_PORT="${1#*=}" - shift - ;; - --ssh-user=*) - SSH_USER="${1#*=}" - shift - ;; - --boot-wait=*) - BOOT_WAIT="${1#*=}" - shift - ;; - --no-ssh) - TEST_SSH=false - shift - ;; - --help) - usage - ;; - -*) - echo "Unknown option: $1" - usage - ;; - *) - if [ -z "$QNX_HOST" ]; then - QNX_HOST="$1" - elif [ -z "$IFS_IMAGE" ]; then - IFS_IMAGE="$1" - else - echo "Too many arguments" - usage - fi - shift - ;; - esac -done - -# Validate required arguments -if [ -z "$QNX_HOST" ] || [ -z "$IFS_IMAGE" ]; then - echo "Error: Missing required arguments" - usage -fi - -# Validate files exist -if [ ! -d "$QNX_HOST" ]; then - echo "Error: QNX host directory not found: $QNX_HOST" - exit 1 -fi - -if [ ! -f "$IFS_IMAGE" ]; then - echo "Error: IFS image not found: $IFS_IMAGE" - exit 1 -fi - -# Global variables -QEMU_PID="" -OUTPUT_LOG="/tmp/qnx_qemu_portforward_test_$$.log" - -echo "============================================================" -echo "QNX QEMU Port Forwarding Test" -echo "============================================================" -echo "QNX Host: $QNX_HOST" -echo "IFS Image: $IFS_IMAGE" -echo "Timeout: ${TIMEOUT}s" -echo "SSH Port: $SSH_PORT (forwarded from localhost)" -echo "SSH User: $SSH_USER" -if [ "$TEST_SSH" = true ]; then - echo "SSH Test: Enabled" -else - echo "SSH Test: Disabled" -fi -echo "Boot Wait: ${BOOT_WAIT}s" -echo "Network Mode: Port Forwarding (NAT)" -echo "" - -# Cleanup function -cleanup() { - echo "" - echo "Cleaning up..." - - # Kill QEMU process - if [ -n "$QEMU_PID" ] && kill -0 "$QEMU_PID" 2>/dev/null; then - echo "Terminating QEMU process (PID: $QEMU_PID)" - kill "$QEMU_PID" 2>/dev/null || true - sleep 3 - if kill -0 "$QEMU_PID" 2>/dev/null; then - echo "Force killing QEMU process" - kill -9 "$QEMU_PID" 2>/dev/null || true - fi - fi - - # Clean up files - rm -f "/tmp/qemu.pid" "$OUTPUT_LOG" 2>/dev/null || true - - echo "Cleanup completed" -} - -# Set trap for cleanup -trap cleanup EXIT INT TERM - -# Function to start QEMU with port forwarding -start_qemu() { - echo "1. Starting QEMU with port forwarding..." - - # Start QEMU in background with port forwarding (NAT networking) - qemu-system-x86_64 \ - -smp 2 \ - --enable-kvm \ - -cpu Cascadelake-Server-v5 \ - -m 1G \ - -pidfile /tmp/qemu.pid \ - -nographic \ - -kernel "$IFS_IMAGE" \ - -serial mon:stdio \ - -object rng-random,filename=/dev/urandom,id=rng0 \ - -device virtio-rng-pci,rng=rng0 \ - -netdev user,id=net0,hostfwd=tcp::${SSH_PORT}-:22,hostfwd=tcp::8080-:80,hostfwd=tcp::8443-:443,hostfwd=tcp::9999-:9999 \ - -device virtio-net-pci,netdev=net0 \ - > "$OUTPUT_LOG" 2>&1 & - - QEMU_PID=$! - echo "✓ QEMU started (PID: $QEMU_PID)" - echo "✓ Port forwarding: SSH($SSH_PORT->22), HTTP(8080->80), HTTPS(8443->443), Capture(9999->9999)" - echo "✓ Guest uses NAT networking (10.0.2.x subnet)" -} - -# Function to wait for boot completion -wait_for_boot() { - echo "" - echo "2. Waiting for boot completion (timeout: ${TIMEOUT}s)..." - - local start_time=$(date +%s) - local boot_complete=false - - # Look specifically for hostname confirmation message - local hostname_pattern="Hostname set to: Qnx_S-core" - - echo "Waiting for hostname confirmation: '$hostname_pattern'" - - while [ $(($(date +%s) - start_time)) -lt "$TIMEOUT" ]; do - # Check if QEMU process is still running - if ! kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✗ QEMU process terminated unexpectedly" - echo "Last output:" - tail -20 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - return 1 - fi - - # Check for hostname confirmation message - if grep -q "$hostname_pattern" "$OUTPUT_LOG" 2>/dev/null; then - echo "✓ Boot completion detected: Found hostname confirmation" - boot_complete=true - break - fi - - # Show progress every 10 seconds - local elapsed=$(($(date +%s) - start_time)) - if [ $((elapsed % 10)) -eq 0 ] && [ $elapsed -gt 0 ]; then - echo " ... still waiting (${elapsed}s elapsed)" - fi - - sleep 2 - done - - if [ "$boot_complete" = true ]; then - echo "✓ System fully booted and hostname configured" - return 0 - else - echo "✗ Boot timeout reached - hostname confirmation not found" - echo "Recent QEMU output:" - echo "----------------------------------------" - tail -20 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - echo "----------------------------------------" - return 1 - fi -} - -# Function to wait additional time for system stabilization -wait_for_stabilization() { - if [ "$BOOT_WAIT" -gt 0 ]; then - echo "" - echo "3. Waiting for system stabilization (${BOOT_WAIT}s)..." - sleep "$BOOT_WAIT" - echo "✓ Stabilization wait completed" - fi -} - -# Function to test system functionality -test_system_functionality() { - echo "" - echo "4. Testing system functionality..." - - # Check if QEMU is still running - if ! kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✗ QEMU process is not running" - return 1 - fi - echo "✓ QEMU process is still running" - - # Check for system indicators in output - local system_indicators=( - "qnx" - "Welcome" - "shell" - "startup" - ) - - local found_indicators=0 - for indicator in "${system_indicators[@]}"; do - if grep -i -q "$indicator" "$OUTPUT_LOG" 2>/dev/null; then - echo "✓ Found system indicator: $indicator" - ((found_indicators++)) - fi - done - - if [ "$found_indicators" -gt 0 ]; then - echo "✓ System functionality indicators found ($found_indicators)" - return 0 - else - echo "✗ No system functionality indicators found" - return 1 - fi -} - -# Function to test SSH connectivity -test_ssh_connectivity() { - if [ "$TEST_SSH" != true ]; then - echo "" - echo "5. SSH test skipped (disabled)" - return 0 - fi - - echo "" - echo "5. Testing SSH connectivity via port forwarding..." - - # Test if SSH port is open on localhost (port forwarding) - echo "Testing SSH port connectivity on localhost:$SSH_PORT..." - if command -v nc >/dev/null 2>&1; then - if nc -z -w5 localhost "$SSH_PORT"; then - echo "✓ SSH port $SSH_PORT is open on localhost" - else - echo "✗ SSH port $SSH_PORT is not accessible on localhost" - return 1 - fi - elif command -v telnet >/dev/null 2>&1; then - if timeout 5 telnet localhost "$SSH_PORT" /dev/null 2>&1; then - echo "✓ SSH port $SSH_PORT is open on localhost" - else - echo "✗ SSH port $SSH_PORT is not accessible on localhost" - return 1 - fi - else - echo "⚠ No network testing tools available (nc or telnet)" - echo "Skipping port connectivity test" - fi - - # Test SSH connection via port forwarding - echo "Testing SSH connection via port forwarding..." - if command -v ssh >/dev/null 2>&1; then - echo "Attempting SSH connection to $SSH_USER@localhost:$SSH_PORT..." - - # Try SSH connection with password authentication (no keys, empty password) - if timeout 15 ssh -o ConnectTimeout=10 \ - -o StrictHostKeyChecking=no \ - -o UserKnownHostsFile=/dev/null \ - -o PreferredAuthentications=password \ - -o PubkeyAuthentication=no \ - -o PasswordAuthentication=yes \ - -o BatchMode=yes \ - -p "$SSH_PORT" \ - "$SSH_USER@localhost" \ - "echo 'SSH connection successful via port forwarding'; hostname 2>/dev/null || echo 'hostname command not available'; ifconfig vtnet0 2>/dev/null | grep 'inet ' || echo 'Network info not available'" 2>/dev/null; then - echo "✓ SSH connection via port forwarding successful" - echo "✓ Retrieved system information from guest" - else - echo "✗ SSH connection via port forwarding failed" - return 1 - fi - else - echo "⚠ SSH client not available, skipping SSH connection test" - fi - - return 0 -} - -# Function to show final system status -show_system_status() { - echo "" - echo "6. Final system status..." - - if kill -0 "$QEMU_PID" 2>/dev/null; then - echo "✓ QEMU process is running (PID: $QEMU_PID)" - else - echo "✗ QEMU process is not running" - fi - - echo "" - echo "Recent system output:" - echo "----------------------------------------" - tail -15 "$OUTPUT_LOG" 2>/dev/null || echo "No output available" - echo "----------------------------------------" -} - -# Main execution -main() { - local all_tests_passed=true - - # Start QEMU - if ! start_qemu; then - echo "✗ Failed to start QEMU" - return 1 - fi - - # Wait for boot - if ! wait_for_boot; then - echo "✗ Boot test failed" - all_tests_passed=false - fi - - # Wait for stabilization - wait_for_stabilization - - # Test system functionality - if ! test_system_functionality; then - echo "✗ System functionality test failed" - all_tests_passed=false - fi - - # Test SSH connectivity - if ! test_ssh_connectivity; then - echo "✗ SSH connectivity test failed" - all_tests_passed=false - fi - - # Show final status - show_system_status - - # Results - echo "" - echo "============================================================" - if [ "$all_tests_passed" = true ]; then - echo "✓ ALL TESTS PASSED" - echo "QNX QEMU port forwarding integration is working correctly!" - echo "QEMU is running on PID: $QEMU_PID" - echo "SSH access: ssh -p $SSH_PORT $SSH_USER@localhost" - echo "Network mode: Port forwarding (NAT) - guest uses 10.0.2.x subnet" - return 0 - else - echo "✗ SOME TESTS FAILED" - echo "Check the output above for details." - return 1 - fi -} - -# Run main function -main "$@" diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 93a4fb3c0b2..47c2b5a11a6 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -11,14 +11,14 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# Generated from known_good.json at 2026-01-26T16:26:12+00:00Z +# Generated from known_good.json at 2026-01-26T11:01:36+00:00Z # Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_baselibs") git_override( module_name = "score_baselibs", remote = "https://github.com/eclipse-score/baselibs.git", - commit = "efc061359d159244a9bd31a6f1dc74f9246c07b6", + commit = "fe74ff32f2cb8b2c99af019e7907ad9486e70b09", ) bazel_dep(name = "score_communication") @@ -39,7 +39,7 @@ bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", - commit = "0037034bf853e5f955f028fab54ed319fb0441c3", + commit = "69356def0bd731fda9aedc8c65336d8c2ca499da", ) bazel_dep(name = "score_orchestrator") @@ -67,14 +67,14 @@ bazel_dep(name = "score_tooling") git_override( module_name = "score_tooling", remote = "https://github.com/eclipse-score/tooling.git", - commit = "8894fe5440436a8c6d9e214c97b18d619c7f7eac", + commit = "fe54d6aa717eb695298a4f0ca938f19e7fd18051", ) bazel_dep(name = "score_platform") git_override( module_name = "score_platform", remote = "https://github.com/eclipse-score/score.git", - commit = "a853a294f3fda8d40fde3ac76f60bd03fcdc6a4a", + commit = "6ef2b8c740eb538d9b9b44fabd3dea5e0a888da6", ) bazel_dep(name = "score_bazel_platforms") @@ -95,7 +95,7 @@ bazel_dep(name = "score_docs_as_code") git_override( module_name = "score_docs_as_code", remote = "https://github.com/eclipse-score/docs-as-code.git", - commit = "f784d4370240cc0eafce779e5c317f6bf8988fb2", + commit = "e8622001d597ebc12244f006dde2e0a58c203ef0", ) bazel_dep(name = "score_process") From 5d9b8220f8ed995da7bdc214b65d9c499a719914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Gr=C3=A4per?= <160226396+kgraeper@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:41:37 +0100 Subject: [PATCH 19/55] make latest mains working for 0.6 (#87) --- .bazelrc | 3 +- .../workflows/reusable_integration-build.yml | 2 +- .github/workflows/reusable_smoke-test.yml | 58 ++++-------- .github/workflows/test_integration.yml | 1 - MODULE.bazel | 6 +- README.md | 23 ++++- build_config.json | 5 +- integration/MODULE.bazel | 2 - .../bazel_common/score_modules.MODULE.bazel | 1 + known_good.json | 30 ++++--- score_modules.MODULE.bazel | 33 ++++--- score_toolchains.MODULE.bazel | 36 ++++++-- scripts/integration_test.py | 4 +- scripts/publish_integration_summary.py | 88 +++++++++++++++++++ scripts/run_unit_tests.sh | 2 +- 15 files changed, 206 insertions(+), 88 deletions(-) create mode 100644 scripts/publish_integration_summary.py diff --git a/.bazelrc b/.bazelrc index f2100efefb9..ddd24a4ed9d 100644 --- a/.bazelrc +++ b/.bazelrc @@ -25,9 +25,7 @@ common --@score_logging//score/datarouter/build_configuration_flags:persistent_l common --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False common --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False common --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False -common --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False common --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True -common --@score_logging//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False common --@score_logging//score/mw/log/flags:KRemote_Logging=False # stop legacy behavior of creating __init__.py files @@ -43,6 +41,7 @@ build:shared --host_platform=@score_bazel_platforms//:x86_64-linux build:x86_64-linux --config=shared build:x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +build:x86_64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu build:x86_64-linux --features=-treat_warnings_as_errors # due to baselibs deprecations # this is deprecated, use build:x86_64-linux instead diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml index 48f33a2e0e9..5aa65f613c3 100644 --- a/.github/workflows/reusable_integration-build.yml +++ b/.github/workflows/reusable_integration-build.yml @@ -65,7 +65,7 @@ on: description: 'Optional configuration for the integration test.' required: false type: string - default: 'bl-x86_64-linux' + default: 'x86_64-linux' repo_runner_labels: description: 'Runner label(s) for the job; single label or JSON string/array.' required: false diff --git a/.github/workflows/reusable_smoke-test.yml b/.github/workflows/reusable_smoke-test.yml index 47dbef7f005..ec9b7ac8c22 100644 --- a/.github/workflows/reusable_smoke-test.yml +++ b/.github/workflows/reusable_smoke-test.yml @@ -139,12 +139,12 @@ jobs: matrix: config: - x86_64-linux + # - arm64-linux # Add more configs here as needed - # - bl-aarch64-linux - # - bl-x86_64-qnx + # - arm64-qnx8_0 + # - x86_64-qnx8_0 uses: ./.github/workflows/reusable_integration-build.yml - secrets: - REPO_READ_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} + secrets: inherit with: known_good: ${{ needs.preparation.outputs.known_good_updated }} config: ${{ matrix.config }} @@ -157,6 +157,12 @@ jobs: needs: [integration-test, docs] if: always() steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 + with: + repository: ${{ env.REFERENCE_INTEGRATION_REPO }} + ref: ${{ inputs.target_branch }} + token: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} # get all artefacts from integration-test job with name bazel-build-logs-* - name: Download Integration Test Artifacts uses: actions/download-artifact@v4 @@ -166,41 +172,9 @@ jobs: merge-multiple: true - name: Publish Integration Test Summary run: | - { - echo '## Overall Status' - echo - if [ "${{ needs.integration-test.result }}" == "success" ]; then - echo '- Integration Test: ✅ **SUCCESS**' - else - echo '- Integration Test: ❌ **FAILURE**' - fi - - if [ "${{ needs.docs.result }}" == "success" ]; then - echo '- Documentation Generation: ✅ **SUCCESS**' - else - echo '- Documentation Generation: ❌ **FAILURE**' - fi - - echo - echo '---' - echo - echo '## Integration Test Summary' - echo - - # Process each build_summary.md file from different configs - for summary_file in _logs/integration_test_logs/*/build_summary.md; do - if [ -f "$summary_file" ]; then - config_name=$(basename $(dirname "$summary_file")) - echo "### Configuration: $config_name" - echo - cat "$summary_file" - echo - fi - done - - # If no summary files found, check direct path - if [ -f _logs/integration_test_logs/build_summary.md ]; then - cat _logs/integration_test_logs/build_summary.md - echo - fi - } >> "$GITHUB_STEP_SUMMARY" \ No newline at end of file + ls -l _logs/integration_test_logs || true + python3 scripts/publish_integration_summary.py \ + --integration-result "${{ needs.integration-test.result }}" \ + --docs-result "${{ needs.docs.result }}" \ + --logs-dir "_logs/integration_test_logs" \ + >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index 57bc156a9dd..f1e67e95abf 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -23,7 +23,6 @@ on: # - cron: '30 2 * * *' # Every night at 02:30 UTC on main branch jobs: integration_test: - if: false # Disable job as now latest greatest main loop does not work uses: ./.github/workflows/reusable_smoke-test.yml secrets: inherit with: diff --git a/MODULE.bazel b/MODULE.bazel index 74ca2448103..2b7e74e2761 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -21,7 +21,7 @@ include("//:score_modules.MODULE.bazel") include("//:score_toolchains.MODULE.bazel") ## Python -bazel_dep(name = "rules_python", version = "1.5.1") +bazel_dep(name = "rules_python", version = "1.8.3") PYTHON_VERSION = "3.12" @@ -56,3 +56,7 @@ git_override( bazel_dep(name = "rules_rust", version = "0.67.0") bazel_dep(name = "score_itf", version = "0.1.0") bazel_dep(name = "score_crates", version = "0.0.6") +single_version_override( + module_name = "score_crates", + version = "0.0.6", +) diff --git a/README.md b/README.md index ad093657bba..8a1e2712c03 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,9 @@ The reference integration workspace serves as a single Bazel build environment t ## Structure of integration folder +> [!NOTE] +> For more details about the integration folder structure and deployment showcases, see [integration/README.md](integration/README.md). + Intention for each folder is described below ### bazel_common @@ -145,10 +148,28 @@ In case of doubt, choose the first. 1. Switch to local path overrides, using the VSCode Task (`Terminal`->`Run Task...`) "Switch Bazel modules to `local_path_overrides`". Note that you can switch back to `git_overrides` (the default) using the task "Switch Bazel modules to `git_overrides`" -2. Run VSCode Task "<Name>: Generate workspace", e.g. "Gita: Generate workspace". + **Command line:** + ```bash + python3 scripts/known_good/update_module_from_known_good.py --override-type local_path + ``` + +2. Update workspace metadata from known good, using the VSCode Task "Update workspace metadata from known good". + This will generate the `.gita-workspace.csv` file based on `known_good.json`. + + **Command line:** + ```bash + python3 scripts/known_good/known_good_to_workspace_metadata.py + ``` + +3. Run VSCode Task "<Name>: Generate workspace", e.g. "Gita: Generate workspace". This will clone all modules using the chosen workspace manager. The modules will be in sub-directories starting with `score_`. Note that the usage of different workspace managers is mutually exclusive. + + **Command line:** + ```bash + gita clone --preserve-path --from-file .gita-workspace.csv + ``` When you now run Bazel, it will use the local working copies of all modules and not download them from git remotes. You can make local changes to each module, which will be directly reflected in the next Bazel run. diff --git a/build_config.json b/build_config.json index 7c06c59dbb6..0c9c0e7005c 100644 --- a/build_config.json +++ b/build_config.json @@ -3,6 +3,9 @@ "score_baselibs": { "build_targets": "@score_baselibs//score/..." }, + "score_baselibs_rust": { + "build_targets": "@score_baselibs_rust//src/..." + }, "score_communication": { "build_targets": "@score_communication//score/mw/com:com" }, @@ -19,7 +22,7 @@ "build_targets": "@score_test_scenarios//test_scenarios_rust:test_scenarios_rust @score_test_scenarios//test_scenarios_cpp:test_scenarios_cpp" }, "score_feo": { - "build_targets": "-- @score_feo//... -@score_feo//:docs -@score_feo//:ide_support -@score_feo//:needs_json" + "build_targets": "-- @score_feo//feo/... @score_feo//feo-com/... @score_feo//feo-cpp-build/... @score_feo//feo-cpp-macros/... -@score_feo//feo:libfeo_rust -@score_feo//feo:libfeo_recording_rust -@score_feo//feo-com:libfeo_com_rust -@score_feo//examples/rust/..." }, "score_logging": { "build_targets": "@score_logging//score/mw/log" diff --git a/integration/MODULE.bazel b/integration/MODULE.bazel index 3725e8e71ea..7a2349a8630 100644 --- a/integration/MODULE.bazel +++ b/integration/MODULE.bazel @@ -34,8 +34,6 @@ include("//bazel_common:score_python.MODULE.bazel") # Score modules include("//bazel_common:score_modules.MODULE.bazel") -bazel_dep(name = "score_itf", version = "0.1.0") - bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") archive_override( module_name = "rules_boost", diff --git a/integration/bazel_common/score_modules.MODULE.bazel b/integration/bazel_common/score_modules.MODULE.bazel index 9b58a3d23d6..6c8022d1af3 100644 --- a/integration/bazel_common/score_modules.MODULE.bazel +++ b/integration/bazel_common/score_modules.MODULE.bazel @@ -2,6 +2,7 @@ bazel_dep(name = "score_baselibs", version = "0.1.3") bazel_dep(name = "score_communication", version = "0.1.1",) # EB needs 0.1.2 but others does not work with it bazel_dep(name = "score_persistency", version = "0.2.1") bazel_dep(name = "score_scrample", version = "0.1.0") +bazel_dep(name = "score_itf", version = "0.1.0") bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", diff --git a/known_good.json b/known_good.json index d82f02b0f60..8aefbcce54a 100644 --- a/known_good.json +++ b/known_good.json @@ -2,27 +2,31 @@ "modules": { "score_baselibs": { "repo": "https://github.com/eclipse-score/baselibs.git", - "hash": "fe74ff32f2cb8b2c99af019e7907ad9486e70b09" + "hash": "ffd1c812213c66a436ed982632f6942528b58be8" + }, + "score_baselibs_rust": { + "repo": "https://github.com/eclipse-score/baselibs_rust.git", + "hash": "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c" }, "score_communication": { "repo": "https://github.com/eclipse-score/communication.git", - "hash": "73caa2d2b6f45f806bbd30bdf8675ab1ad551387" + "hash": "0c0ea032995eaa766f5bdcec031bc02ee10d4587" }, "score_logging": { "repo": "https://github.com/eclipse-score/logging.git", - "hash": "8d14d2beec9bb3ccd7a2e24926eacd13b0ffc7d1" + "hash": "2b3e56cf12cf582d0c0a235cad3d1d9b9fc1e494" }, "score_persistency": { "repo": "https://github.com/eclipse-score/persistency.git", - "hash": "69356def0bd731fda9aedc8c65336d8c2ca499da" + "hash": "9c1f0c1b1cd9b49621ecf4f9d541ded100fe2c08" }, "score_orchestrator": { "repo": "https://github.com/eclipse-score/orchestrator.git", - "hash": "18e136c34750c5db707f27f917d52efc7541e087" + "hash": "fd6e21820a361b0c5ab69553f01bd68174d89ffd" }, "score_kyron": { "repo": "https://github.com/eclipse-score/kyron.git", - "hash": "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81" + "hash": "d146401db4557d840850a7b5fc21b0f4fc8aac20" }, "score_feo": { "repo": "https://github.com/eclipse-score/feo.git", @@ -31,15 +35,15 @@ }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", - "hash": "8894fe5440436a8c6d9e214c97b18d619c7f7eac" + "hash": "17671026150db4b4cc1b35e48af81b97e13685e5" }, "score_platform": { "repo": "https://github.com/eclipse-score/score.git", - "hash": "f4769c4b86bfe46b29b56b6c3e262c5b82db334b" + "hash": "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e" }, "score_bazel_platforms": { "repo": "https://github.com/eclipse-score/bazel_platforms.git", - "hash": "2286de89c35d5660ad183906a6f010b33fcac8db" + "hash": "3ac1b805ba42b58a13f8960f947b7866c8bcf26c" }, "score_test_scenarios": { "repo": "https://github.com/eclipse-score/testing_tools.git", @@ -47,16 +51,16 @@ }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "hash": "a9babc30a7ab1ac43c75415b9784b2bc81ed0f9d" + "hash": "ba006429268e6bd9b856088f7a4217742ed09025" }, "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", - "hash": "496fb6dc347de414d9cbe7523204fdeb6b511197" + "hash": "6c772cf05a493218a5ac6071361bf0b66c5427b2" }, "score_lifecycle_health": { "repo": "https://github.com/eclipse-score/lifecycle.git", - "hash": "4a9928d74847ed9e4f346836c3a8ac7ea75f1851" + "hash": "297808cf7c0013e08a0982133a0add1d9b1a9d9e" } }, - "timestamp": "2026-01-26T11:01:36+00:00Z" + "timestamp": "2026-02-10T21:12:42+00:00Z" } diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 47c2b5a11a6..8c2d99b2e0d 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -11,49 +11,56 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# Generated from known_good.json at 2026-01-26T11:01:36+00:00Z +# Generated from known_good.json at 2026-02-10T21:12:42+00:00Z # Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_baselibs") git_override( module_name = "score_baselibs", remote = "https://github.com/eclipse-score/baselibs.git", - commit = "fe74ff32f2cb8b2c99af019e7907ad9486e70b09", + commit = "ffd1c812213c66a436ed982632f6942528b58be8", +) + +bazel_dep(name = "score_baselibs_rust") +git_override( + module_name = "score_baselibs_rust", + remote = "https://github.com/eclipse-score/baselibs_rust.git", + commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", ) bazel_dep(name = "score_communication") git_override( module_name = "score_communication", remote = "https://github.com/eclipse-score/communication.git", - commit = "73caa2d2b6f45f806bbd30bdf8675ab1ad551387", + commit = "0c0ea032995eaa766f5bdcec031bc02ee10d4587", ) bazel_dep(name = "score_logging") git_override( module_name = "score_logging", remote = "https://github.com/eclipse-score/logging.git", - commit = "8d14d2beec9bb3ccd7a2e24926eacd13b0ffc7d1", + commit = "2b3e56cf12cf582d0c0a235cad3d1d9b9fc1e494", ) bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", - commit = "69356def0bd731fda9aedc8c65336d8c2ca499da", + commit = "9c1f0c1b1cd9b49621ecf4f9d541ded100fe2c08", ) bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "18e136c34750c5db707f27f917d52efc7541e087", + commit = "fd6e21820a361b0c5ab69553f01bd68174d89ffd", ) bazel_dep(name = "score_kyron") git_override( module_name = "score_kyron", remote = "https://github.com/eclipse-score/kyron.git", - commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", + commit = "d146401db4557d840850a7b5fc21b0f4fc8aac20", ) bazel_dep(name = "score_feo") @@ -67,21 +74,21 @@ bazel_dep(name = "score_tooling") git_override( module_name = "score_tooling", remote = "https://github.com/eclipse-score/tooling.git", - commit = "fe54d6aa717eb695298a4f0ca938f19e7fd18051", + commit = "17671026150db4b4cc1b35e48af81b97e13685e5", ) bazel_dep(name = "score_platform") git_override( module_name = "score_platform", remote = "https://github.com/eclipse-score/score.git", - commit = "6ef2b8c740eb538d9b9b44fabd3dea5e0a888da6", + commit = "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e", ) bazel_dep(name = "score_bazel_platforms") git_override( module_name = "score_bazel_platforms", remote = "https://github.com/eclipse-score/bazel_platforms.git", - commit = "2286de89c35d5660ad183906a6f010b33fcac8db", + commit = "3ac1b805ba42b58a13f8960f947b7866c8bcf26c", ) bazel_dep(name = "score_test_scenarios") @@ -95,19 +102,19 @@ bazel_dep(name = "score_docs_as_code") git_override( module_name = "score_docs_as_code", remote = "https://github.com/eclipse-score/docs-as-code.git", - commit = "e8622001d597ebc12244f006dde2e0a58c203ef0", + commit = "ba006429268e6bd9b856088f7a4217742ed09025", ) bazel_dep(name = "score_process") git_override( module_name = "score_process", remote = "https://github.com/eclipse-score/process_description.git", - commit = "496fb6dc347de414d9cbe7523204fdeb6b511197", + commit = "6c772cf05a493218a5ac6071361bf0b66c5427b2", ) bazel_dep(name = "score_lifecycle_health") git_override( module_name = "score_lifecycle_health", remote = "https://github.com/eclipse-score/lifecycle.git", - commit = "4a9928d74847ed9e4f346836c3a8ac7ea75f1851", + commit = "297808cf7c0013e08a0982133a0add1d9b1a9d9e", ) diff --git a/score_toolchains.MODULE.bazel b/score_toolchains.MODULE.bazel index baf7e8d538e..f3a27898f49 100644 --- a/score_toolchains.MODULE.bazel +++ b/score_toolchains.MODULE.bazel @@ -25,16 +25,36 @@ gcc.toolchain( version = "12.2.0", use_default_package = True, ) - +gcc.toolchain( + name = "score_gcc_aarch64_toolchain", + target_cpu = "aarch64", + target_os = "linux", + use_default_package = True, + version = "12.2.0", +) +gcc.toolchain( + name = "score_qcc_x86_64_toolchain", + sdp_version = "8.0.0", + target_cpu = "x86_64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +gcc.toolchain( + name = "score_qcc_aarch64_toolchain", + sdp_version = "8.0.0", + target_cpu = "aarch64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) use_repo( gcc, - "score_gcc_toolchain", + "score_gcc_aarch64_toolchain", + "score_gcc_x86_64_toolchain", + "score_qcc_aarch64_toolchain", + "score_qcc_x86_64_toolchain", ) -rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") -rust.toolchain( - edition = "2021", - versions = ["1.93.0"], -) -use_repo(rust, "rust_toolchains") +bazel_dep(name = "score_toolchains_rust", version = "0.4.0", dev_dependency = True) diff --git a/scripts/integration_test.py b/scripts/integration_test.py index 866876bc0ee..6ec2aca8619 100755 --- a/scripts/integration_test.py +++ b/scripts/integration_test.py @@ -274,7 +274,7 @@ def main(): # Configuration config = args.config log_dir = Path(os.environ.get('LOG_DIR', '_logs/logs')) - summary_file = Path(os.environ.get('SUMMARY_FILE', '_logs/build_summary.md')) + summary_file = Path(os.environ.get('SUMMARY_FILE', f'_logs/build_summary-{config}.md')) known_good_file = args.known_good if not known_good_file: @@ -326,7 +326,7 @@ def main(): # Build each group for group_name, module_config in BUILD_TARGET_GROUPS.items(): - log_file = log_dir / f"{group_name}.log" + log_file = log_dir / f"{group_name}-{config}.log" exit_code, duration = build_group(group_name, module_config.build_targets, config, log_file) diff --git a/scripts/publish_integration_summary.py b/scripts/publish_integration_summary.py new file mode 100644 index 00000000000..c67d9bdd869 --- /dev/null +++ b/scripts/publish_integration_summary.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +import argparse +import os +import sys + + +def format_status(result: str) -> str: + status_map = { + "success": "✅ **SUCCESS**", + "failure": "❌ **FAILURE**", + "cancelled": "⚪ **CANCELLED**", + "skipped": "⚪ **SKIPPED**", + "": "⚪ **UNKNOWN**", + } + return status_map.get(result, "⚪ **UNKNOWN**") + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Publish integration test summary.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=( + "Examples:\n" + " python3 scripts/publish_integration_summary.py \\\n" + " --integration-result success \\\n" + " --docs-result failure \\\n" + " --logs-dir _logs/integration_test_logs\n" + " python3 scripts/publish_integration_summary.py \\\n" + " --integration-result success \\\n" + " --docs-result success" + ), + ) + parser.add_argument( + "--integration-result", + default="", + choices=["success", "failure", "cancelled", "skipped"], + help="Integration test result.", + ) + parser.add_argument( + "--docs-result", + default="", + choices=["success", "failure", "cancelled", "skipped"], + help="Documentation result.", + ) + parser.add_argument( + "--logs-dir", + default="_logs", + help="Directory containing build_summary.md files.", + ) + args = parser.parse_args() + + integration_result = args.integration_result + docs_result = args.docs_result + logs_dir = args.logs_dir + + out = sys.stdout + + out.write("## Overall Status\n\n") + + out.write(f"- Integration Test: {format_status(integration_result)}\n") + out.write(f"- Documentation Generation: {format_status(docs_result)}\n") + + out.write("\n---\n\n") + out.write("## Integration Test Summary\n\n") + + summaries = [] + if os.path.isdir(logs_dir): + for root, _, files in os.walk(logs_dir): + for name in files: + if name.startswith("build_summary-") and name.endswith(".md"): + summaries.append(os.path.join(root, name)) + + if not summaries: + out.write(f"No build_summary-*.md files found in '{logs_dir}'.\n\n") + return 0 + for summary_file in sorted(summaries): + filename = os.path.basename(summary_file) + config_name = filename[len("build_summary-") : -len(".md")] + out.write(f"### Configuration: {config_name}\n\n") + with open(summary_file, "r", encoding="utf-8", errors="replace") as handle: + out.write(handle.read()) + out.write("\n\n") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index 7f12776f36a..542fe8c9285 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -26,7 +26,7 @@ declare -A UT_TARGET_GROUPS=( [persistency]="@score_persistency//src/rust/rust_kvs:tests" # C++ test has linker issues with logging library [orchestrator]="@score_orchestrator//src/..." # ok [kyron]="@score_kyron//:unit_tests" # ok - [feo]="@score_feo//... --build_tests_only" # ok (flag required or error from docs) + [feo]="--build_tests_only -- @score_feo//... -@score_feo//:format.check_Rust_with_rustfmt" # ok (flag required or error from docs) # [logging]="@score_logging//score/... \ # --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ # --@score_baselibs//score/json:base_library=nlohmann \ From edceccad02887702c65b531382a5b73d297cdd3e Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Wed, 11 Feb 2026 16:01:22 +0100 Subject: [PATCH 20/55] Integrate simple lifecycle examples (#89) * Integrate simple lifecycle examples * Update to allow more custom layout * Make QEMU close on ctrl+c * Make CLI examples support more scenarios * Tune settings and reuse cache * USe latest modules versions * Use special signal --- .gitignore | 1 + integration/MODULE.bazel | 9 +- integration/bazel_common/bundlers.bzl | 18 ++- .../score_basic_tools.MODULE.bazel | 7 + .../bazel_common/score_modules.MODULE.bazel | 9 +- .../images/qnx_x86_64/build/system.build | 4 +- .../docker_x86_64/scripts/run_docker.sh | 2 +- .../runners/qemu_x86_64/scripts/run_qemu.sh | 9 +- integration/score_starter | 9 +- integration/showcases/BUILD | 7 +- integration/showcases/cli/README.md | 25 +++- integration/showcases/cli/main.rs | 87 +++++++++---- integration/showcases/kyron/kyron.score.json | 16 ++- .../orch_per.score.json | 16 ++- integration/showcases/simple_lifecycle/BUILD | 48 +++++++ .../showcases/simple_lifecycle/configs/BUILD | 5 + .../simple_lifecycle/configs/hm_demo.json | 103 +++++++++++++++ .../simple_lifecycle/configs/lm_demo.json | 122 ++++++++++++++++++ .../configs/supervised_app_demo.json | 14 ++ .../simple_lifecycle.score.json | 24 ++++ 20 files changed, 469 insertions(+), 66 deletions(-) create mode 100644 integration/showcases/simple_lifecycle/BUILD create mode 100644 integration/showcases/simple_lifecycle/configs/BUILD create mode 100644 integration/showcases/simple_lifecycle/configs/hm_demo.json create mode 100644 integration/showcases/simple_lifecycle/configs/lm_demo.json create mode 100644 integration/showcases/simple_lifecycle/configs/supervised_app_demo.json create mode 100644 integration/showcases/simple_lifecycle/simple_lifecycle.score.json diff --git a/.gitignore b/.gitignore index fc5e8eb6a8c..379315e0cc6 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ __pycache__/ /score_*/ /.gita/ /.gita-workspace.csv +integration/build diff --git a/integration/MODULE.bazel b/integration/MODULE.bazel index 7a2349a8630..66edd21e049 100644 --- a/integration/MODULE.bazel +++ b/integration/MODULE.bazel @@ -49,15 +49,8 @@ git_override( remote = "https://github.com/bmw-software-engineering/trlc.git", ) -git_override( - module_name = "score_toolchains_qnx", - commit = "aa94b4fb566b989d1a00395c810df2cf254a0cec", - remote = "https://github.com/qorix-group/toolchains_qnx.git", -) - - # Currently required for ifs tooling -bazel_dep(name = "score_toolchains_qnx", version = "0.0.3") +bazel_dep(name = "score_toolchains_qnx", version = "0.0.7") toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency=True) toolchains_qnx.sdp( sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", diff --git a/integration/bazel_common/bundlers.bzl b/integration/bazel_common/bundlers.bzl index 4f769c18d2d..31d8be3239d 100644 --- a/integration/bazel_common/bundlers.bzl +++ b/integration/bazel_common/bundlers.bzl @@ -2,7 +2,7 @@ load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") load("@rules_pkg//pkg:mappings.bzl", "pkg_files") -def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_package_files = []): +def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_package_files = [], custom_layout = {}): """ Creates a reusable bundle by chaining Bazel packaging rules: - Collects binaries and config files into a pkg_files target, renaming them into subdirectories. @@ -17,7 +17,12 @@ def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_pa config_data: Optional list of config file labels to include (placed in 'configs/'). package_dir: Optional directory path for the package root inside the tar archive. other_package_files: Optional list of additional `NAME_pkg_files` to include in the tar archive that was created by other `score_pkg_bundle` targets. - + custom_layout: Optional dict mapping labels -> destination path inside the package. All destination will be prefixed with "data/NAME/". + Example: + custom_layout = { + "//app:data.txt": "resources/data.txt", + "//lib:helper.sh": "scripts/helper.sh", + } """ all_files_name = name + "_pkg_files" @@ -37,10 +42,17 @@ def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_pa if config_data != None: config_data_arr = config_data + + if custom_layout == None: + custom_layout = {} + + for label, dst in custom_layout.items(): + rename_dict[label] = "data/" + name + "/" + dst + # Step 1: pkg_files pkg_files( name = all_files_name, - srcs = bins + config_data_arr, + srcs = bins + config_data_arr + list(custom_layout.keys()), renames = rename_dict, visibility = ["//visibility:public"], ) diff --git a/integration/bazel_common/score_basic_tools.MODULE.bazel b/integration/bazel_common/score_basic_tools.MODULE.bazel index ee685dcfbb1..765853afd05 100644 --- a/integration/bazel_common/score_basic_tools.MODULE.bazel +++ b/integration/bazel_common/score_basic_tools.MODULE.bazel @@ -16,3 +16,10 @@ git_override( branch = "main", remote = "https://github.com/bilelmoussaoui/bazel-rpm.git", ) + +bazel_dep(name = "flatbuffers", version = "25.9.23") +git_override( + module_name = "flatbuffers", + commit = "187240970746d00bbd26b0f5873ed54d2477f9f3", + remote = "https://github.com/google/flatbuffers.git", +) diff --git a/integration/bazel_common/score_modules.MODULE.bazel b/integration/bazel_common/score_modules.MODULE.bazel index 6c8022d1af3..1d665001d35 100644 --- a/integration/bazel_common/score_modules.MODULE.bazel +++ b/integration/bazel_common/score_modules.MODULE.bazel @@ -33,4 +33,11 @@ single_version_override( "//patches/baselibs:0001-RH-exception-header.patch", "//patches/baselibs:0002-RH-algorithm-header.patch", ], -) \ No newline at end of file +) + +bazel_dep(name = "score_lifecycle_health") +git_override( + module_name = "score_lifecycle_health", + commit = "84303c2e48c7e8e2481752170efe82d0afd45f1e", + remote = "https://github.com/eclipse-score/lifecycle.git", +) diff --git a/integration/images/qnx_x86_64/build/system.build b/integration/images/qnx_x86_64/build/system.build index b92e79f8f13..7e19b56bebf 100644 --- a/integration/images/qnx_x86_64/build/system.build +++ b/integration/images/qnx_x86_64/build/system.build @@ -164,8 +164,7 @@ toybox # Minimal Unix utilities collection (re [type=link] zcat=toybox # Display contents of compressed files [type=link] nc=toybox # Netcat for network connections and packet streaming [type=link] netcat=toybox # Netcat alias for network connections - - +[type=link] pkill=slay # Process killer Linux compatibility layer ############################################# ### Tools ### ############################################# @@ -198,6 +197,7 @@ hostname route dhcpcd # DHCP client daemon for automatic network configuration tcpdump # Network packet capture tool for Wireshark analysis +slay /usr/lib/ssh/sftp-server=${QNX_TARGET}/${PROCESSOR}/usr/libexec/sftp-server # File transfer server to enable scp ############################################# diff --git a/integration/runners/docker_x86_64/scripts/run_docker.sh b/integration/runners/docker_x86_64/scripts/run_docker.sh index a553a0e6208..a96b5f31096 100755 --- a/integration/runners/docker_x86_64/scripts/run_docker.sh +++ b/integration/runners/docker_x86_64/scripts/run_docker.sh @@ -21,4 +21,4 @@ echo "Starting docker with overlay image: ${OVERLAY_ABS_PATH}" docker run --rm -it \ -v "${OVERLAY_ABS_PATH}:/showcases" \ ubuntu:22.04 \ - /showcases/bin/cli \ No newline at end of file + bash -c "/showcases/bin/cli; exec bash" diff --git a/integration/runners/qemu_x86_64/scripts/run_qemu.sh b/integration/runners/qemu_x86_64/scripts/run_qemu.sh index 9f741d3c017..403e6f62b08 100755 --- a/integration/runners/qemu_x86_64/scripts/run_qemu.sh +++ b/integration/runners/qemu_x86_64/scripts/run_qemu.sh @@ -20,13 +20,16 @@ QNX_HOST=$1 IFS_IMAGE=$2 echo "Starting QEMU with IFS image: ${IFS_IMAGE}" qemu-system-x86_64 \ + -enable-kvm \ -smp 2 \ - -cpu Cascadelake-Server-v5 \ + -cpu host\ -m 1G \ -pidfile /tmp/qemu.pid \ -nographic \ -kernel "${IFS_IMAGE}" \ - -serial mon:stdio \ + -chardev stdio,id=char0,signal=on,mux=on \ + -mon chardev=char0,mode=readline \ + -serial chardev:char0 \ -object rng-random,filename=/dev/urandom,id=rng0 \ -netdev bridge,id=net0,br=virbr0 -device virtio-net-pci,netdev=net0 \ - -device virtio-rng-pci,rng=rng0 \ No newline at end of file + -device virtio-rng-pci,rng=rng0 diff --git a/integration/score_starter b/integration/score_starter index 88cd23f03d5..91779a779d7 100755 --- a/integration/score_starter +++ b/integration/score_starter @@ -9,12 +9,12 @@ import argparse # ================== CONFIG ================== # Each entry: (description, command, name) mEntries = [ - ("Run QNX x86_64 QEMU", "bazel run --config qnx-x86_64 //images/qnx_x86_64:run", "qnx-x86_64"), - ("Run Linux x86_64 Docker", "bazel run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), + ("Run QNX x86_64 QEMU", "bazel --output_base=build/qnx-x86_64 run --config qnx-x86_64 //images/qnx_x86_64:run", "qnx-x86_64"), + ("Run Linux x86_64 Docker", "bazel --output_user_root=build/linux-x86_64 run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), ("Run Elektrobit Corbos aarch64 QEMU", - "bazel build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), + "bazel --output_user_root=build/eb-aarch64 build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), ("Build Autosd x86_64 RPM", - "bazel build --config autosd-x86_64 //images/autosd_x86_64:lola-demo", "autosd-x86_64"), + "bazel --output_user_root=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:lola-demo", "autosd-x86_64"), ("Exit", "exit 0", "exit"), ] @@ -47,6 +47,7 @@ def run_entry(entry): sys.exit(0) # Run command in user's shell + print("Running ", cmd) result = subprocess.call(cmd, shell=True) sys.exit(result) diff --git a/integration/showcases/BUILD b/integration/showcases/BUILD index 3c85d9bee00..ef1f3d7a062 100644 --- a/integration/showcases/BUILD +++ b/integration/showcases/BUILD @@ -16,7 +16,12 @@ score_pkg_bundle( name = "showcases_all", # package_dir = "", bins = ["//showcases/cli" ], - other_package_files = ["//showcases/standalone:standalone_pkg_files", "//showcases/kyron:kyron_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files"], + other_package_files = [ + "//showcases/standalone:standalone_pkg_files", + "//showcases/kyron:kyron_pkg_files", + "//showcases/orchestration_persistency:orch_per_pkg_files", + "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", + ], ) diff --git a/integration/showcases/cli/README.md b/integration/showcases/cli/README.md index 2ce3b2696d4..99c1c69a0e4 100644 --- a/integration/showcases/cli/README.md +++ b/integration/showcases/cli/README.md @@ -13,15 +13,26 @@ To make this work each example shall deploy configuration file `name.score.json` { "name": "Name of example", "description": "Extensive description", - "path": "exec_path", - "args": [ - // args to be used when running - ], - "env": { - // env to be used when running - } + "apps": [ + { + "path": "exec_path", + "args": [ + // args to be used when running + ], + "env": { + // env to be used when running + }, + "delay": "number" // Optional delay between two consecutive apps + }, + { + // ... + } + ] + } +Each example can run multiple executables, providing additional `apps` configs. This will be started one after another but not blocking each-other. + ``` You can customize where to look for examples using env `SCORE_CLI_INIT_DIR`. \ No newline at end of file diff --git a/integration/showcases/cli/main.rs b/integration/showcases/cli/main.rs index 22aae6d6150..cb95f4302db 100644 --- a/integration/showcases/cli/main.rs +++ b/integration/showcases/cli/main.rs @@ -4,18 +4,27 @@ use std::{ collections::HashMap, env, fs, path::Path, - process::Command, }; use cliclack::{clear_screen, intro, multiselect, outro, confirm}; +use std::time::Duration; +use std::process::Command; +use std::process::Child; -#[derive(Debug, Deserialize)] -struct ScoreConfig { - name: String, - description: String, +#[derive(Debug, Deserialize, Clone)] +struct AppConfig { path: String, + dir: Option, args: Vec, env: HashMap, + delay: Option, // delay in seconds before running the next app +} + +#[derive(Debug, Deserialize, Clone)] +struct ScoreConfig { + name: String, + description: String, + apps: Vec, } fn print_banner() { @@ -65,7 +74,7 @@ fn main() -> Result<()> { .map(|(i, c)| (i, c.name.clone(), c.description.clone())) .collect(); - let selected: Vec = multiselect("Select examples to run:") + let selected: Vec = multiselect("Select examples to run (use space to select (multiselect supported), enter to run examples):") .items(&options) .interact()?; @@ -118,23 +127,53 @@ fn is_score_file(path: &Path) -> bool { } fn run_score(config: &ScoreConfig) -> Result<()> { - println!("▶ Running: {}", config.name); - - let mut cmd = Command::new(&config.path); - cmd.args(&config.args); - cmd.envs(&config.env); - - let status = cmd - .status() - .with_context(|| format!("Failed to execute {}", config.path))?; - - if !status.success() { - anyhow::bail!( - "Command `{}` exited with status {}", - config.path, - status - ); + println!("▶ Running example: {}", config.name); + + let mut children: Vec<(usize, String, Child)> = Vec::new(); + + let now = std::time::Instant::now(); + println!("{:?} Starting example '{}'", now.elapsed(), config.name); + for (i, app) in config.apps.iter().enumerate() { + let app = app.clone(); // Clone for ownership + + if let Some(delay_secs) = app.delay { + if delay_secs > 0 { + println!("{:?} App {}: waiting {} seconds before start...", now.elapsed(), i + 1, delay_secs); + std::thread::sleep(Duration::from_secs(delay_secs)); + } + } + + println!("{:?} App {}: starting {}", now.elapsed(), i + 1, app.path); + + let mut cmd = Command::new(&app.path); + cmd.args(&app.args); + cmd.envs(&app.env); + if let Some(ref dir) = app.dir { + cmd.current_dir(dir); + } + + let child = cmd + .spawn() + .with_context(|| format!("Failed to start app {}: {}", i + 1, app.path))?; + + println!("App {}: spawned command {:?}", i + 1, cmd); + + children.push((i + 1, app.path.clone(), child)); } - + + // Wait for all children + for (i, path, mut child) in children { + let status = child + .wait() + .with_context(|| format!("Failed to wait for app {}: {}", i, path))?; + + if !status.success() { + // anyhow::bail!("App {}: command `{}` exited with status {}", i, path, status); + } + + println!("App {}: finished {}", i, path); + } + + println!("✅ Example '{}' finished successfully.", config.name); Ok(()) -} \ No newline at end of file +} diff --git a/integration/showcases/kyron/kyron.score.json b/integration/showcases/kyron/kyron.score.json index f076b2a4519..910ce37f77c 100644 --- a/integration/showcases/kyron/kyron.score.json +++ b/integration/showcases/kyron/kyron.score.json @@ -1,9 +1,13 @@ { "name": "Kyron example", "description": "Example for channel communication using safe async runtime - Kyron", - "path": "/showcases/bin/kyron_example", - "args": [ - ], - "env": { - } -} \ No newline at end of file + "apps":[ + { + "path": "/showcases/bin/kyron_example", + "args": [ + ], + "env": { + } + } + ] +} diff --git a/integration/showcases/orchestration_persistency/orch_per.score.json b/integration/showcases/orchestration_persistency/orch_per.score.json index 587af7cc865..70fdab837c3 100644 --- a/integration/showcases/orchestration_persistency/orch_per.score.json +++ b/integration/showcases/orchestration_persistency/orch_per.score.json @@ -1,9 +1,13 @@ { "name": "Orchestration persistency - Kyron example", "description": "Example for running orchestration graph with Kyron runtime and saving the state to disk", - "path": "/showcases/bin/orch_per_example", - "args": [ - ], - "env": { - } -} \ No newline at end of file + "apps":[ + { + "path": "/showcases/bin/orch_per_example", + "args": [ + ], + "env": { + } + } + ] +} diff --git a/integration/showcases/simple_lifecycle/BUILD b/integration/showcases/simple_lifecycle/BUILD new file mode 100644 index 00000000000..fd17ee51a0a --- /dev/null +++ b/integration/showcases/simple_lifecycle/BUILD @@ -0,0 +1,48 @@ +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("//bazel_common:bundlers.bzl", "score_pkg_bundle") + +score_pkg_bundle( + name = "simple_lifecycle", + bins = [ + "@score_lifecycle_health//src/launch_manager_daemon:launch_manager", + "@score_lifecycle_health//examples/cpp_supervised_app", + "@score_lifecycle_health//examples/control_application:control_daemon", + ], + config_data = [ + "//showcases/simple_lifecycle:simple_lifecycle.score.json", + ], + + custom_layout = { + ":lm_demo.bin": "etc/lm_demo.bin", + ":hm_demo.bin": "etc/hm_demo.bin", + ":supervised_app_demo.bin": "etc/supervised_app_demo.bin", + }, +) + +genrule( + name = "lm_demo.bin", + srcs = ["@score_lifecycle_health//src/launch_manager_daemon:lm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:lm_demo.json"], + outs = ["lm_demo.bin"], + tools = ["@flatbuffers//:flatc"], + cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv lm_demo.bin $(location lm_demo.bin)", + visibility = ["//visibility:public"], +) + +genrule( + name = "hm_demo.bin", + srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:hm_demo.json"], + outs = ["hm_demo.bin"], + tools = ["@flatbuffers//:flatc"], + cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv hm_demo.bin $(location hm_demo.bin)", + visibility = ["//visibility:public"], +) + +genrule( + name = "supervised_app_demo.bin", + srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:supervised_app_demo.json"], + outs = ["supervised_app_demo.bin"], + tools = ["@flatbuffers//:flatc"], + cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv supervised_app_demo.bin $(location supervised_app_demo.bin)", + visibility = ["//visibility:public"], +) + diff --git a/integration/showcases/simple_lifecycle/configs/BUILD b/integration/showcases/simple_lifecycle/configs/BUILD new file mode 100644 index 00000000000..397d72d65a5 --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/BUILD @@ -0,0 +1,5 @@ +exports_files([ + "hm_demo.json", + "lm_demo.json", + "supervised_app_demo.json" +]) \ No newline at end of file diff --git a/integration/showcases/simple_lifecycle/configs/hm_demo.json b/integration/showcases/simple_lifecycle/configs/hm_demo.json new file mode 100644 index 00000000000..7828a444570 --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/hm_demo.json @@ -0,0 +1,103 @@ +{ + "versionMajor": 8, + "versionMinor": 0, + "process": [ + { + "index": 0, + "shortName": "demo_application0", + "identifier": "demo_app0_MainPG", + "processType": "REGULAR_PROCESS", + "refProcessGroupStates": [ + { + "identifier": "MainPG/Startup" + } + ], + "processExecutionErrors": [ + { + "processExecutionError": 1 + } + ] + } + ], + "hmMonitorInterface": [ + { + "instanceSpecifier": "demo/demo_application0/Port1", + "processShortName": "demo_application0", + "portPrototype": "Port1", + "interfacePath": "demo_application_0_MainPG", + "refProcessIndex": 0, + "permittedUid": 0 + } + ], + "hmSupervisionCheckpoint": [ + { + "shortName": "Checkpoint0_1", + "checkpointId": 1, + "refInterfaceIndex": 0 + } + ], + "hmAliveSupervision": [ + { + "ruleContextKey": "AliveSupervision0", + "refCheckPointIndex": 0, + "aliveReferenceCycle": 200.0, + "minAliveIndications": 1, + "maxAliveIndications": 4, + "isMinCheckDisabled": false, + "isMaxCheckDisabled": false, + "failedSupervisionCyclesTolerance": 1, + "refProcessIndex": 0, + "refProcessGroupStates": [ + { + "identifier": "MainPG/Startup" + } + ] + } + ], + "hmDeadlineSupervision": [], + "hmLogicalSupervision": [], + "hmLocalSupervision": [ + { + "ruleContextKey": "LocalSupervision0", + "infoRefInterfacePath": "demo_application_0", + "hmRefAliveSupervision": [ + { + "refAliveSupervisionIdx": 0 + } + ], + "hmRefDeadlineSupervision": [], + "hmRefLogicalSupervision": [] + } + ], + "hmGlobalSupervision": [ + { + "ruleContextKey": "GlobalSupervision_MainPG", + "isSeverityCritical": false, + "localSupervision": [ + { + "refLocalSupervisionIndex": 0 + } + ], + "refProcesses": [ + { + "index": 0 + } + ], + "refProcessGroupStates": [ + { + "identifier": "MainPG/Startup" + } + ] + } + ], + "hmRecoveryNotification": [ + { + "shortName": "RecoveryNotification_MainPG", + "recoveryNotificationTimeout": 4000.0, + "processGroupMetaModelIdentifier": "MainPG/Recovery", + "refGlobalSupervisionIndex": 0, + "instanceSpecifier": "", + "shouldFireWatchdog": false + } + ] +} diff --git a/integration/showcases/simple_lifecycle/configs/lm_demo.json b/integration/showcases/simple_lifecycle/configs/lm_demo.json new file mode 100644 index 00000000000..cb7ef56a8a7 --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/lm_demo.json @@ -0,0 +1,122 @@ +{ + "versionMajor": 7, + "versionMinor": 0, + "Process": [ + { + "identifier": "control_daemon", + "uid": 0, + "gid": 0, + "path": "/showcases/bin/control_daemon", + "functionClusterAffiliation": "STATE_MANAGEMENT", + "numberOfRestartAttempts": 0, + "executable_reportingBehavior": "ReportsExecutionState", + "sgids": [], + "startupConfig": [ + { + "executionError": "1", + "schedulingPolicy": "SCHED_OTHER", + "schedulingPriority": "1", + "identifier": "control_daemon_startup_config", + "enterTimeoutValue": 1000, + "exitTimeoutValue": 1000, + "terminationBehavior": "ProcessIsNotSelfTerminating", + "executionDependency": [], + "processGroupStateDependency": [ + { + "stateMachine_name": "MainPG", + "stateName": "MainPG/Startup" + }, + { + "stateMachine_name": "MainPG", + "stateName": "MainPG/Recovery" + } + ], + "environmentVariable": [ + { + "key": "LD_LIBRARY_PATH", + "value": "/opt/lib" + }, + { + "key": "PROCESSIDENTIFIER", + "value": "control_daemon" + } + ], + "processArgument": [] + } + ] + }, + { + "identifier": "demo_app0_MainPG", + "uid": 0, + "gid": 0, + "path": "/showcases/bin/cpp_supervised_app", + "numberOfRestartAttempts": 0, + "executable_reportingBehavior": "ReportsExecutionState", + "sgids": [], + "startupConfig": [ + { + "executionError": "1", + "schedulingPolicy": "SCHED_OTHER", + "schedulingPriority": "1", + "identifier": "demo_app_startup_config_0", + "enterTimeoutValue": 2000, + "exitTimeoutValue": 2000, + "terminationBehavior": "ProcessIsNotSelfTerminating", + "executionDependency": [ + { + "stateName": "Running", + "targetProcess_identifier": "/healthmonitorApp/healthmonitor" + } + ], + "processGroupStateDependency": [ + { + "stateMachine_name": "MainPG", + "stateName": "MainPG/Startup" + } + ], + "environmentVariable": [ + { + "key": "LD_LIBRARY_PATH", + "value": "/usr/lib/" + }, + { + "key": "PROCESSIDENTIFIER", + "value": "MainPG_app0" + }, + { + "key": "CONFIG_PATH", + "value": "/showcases/data/simple_lifecycle/etc/supervised_app_demo.bin" + }, + { + "key": "IDENTIFIER", + "value": "demo/demo_application0/Port1" + } + ], + "processArgument": [ + { + "argument": "-sdemo/demo_application0/Port1" + } + ] + } + ] + } + ], + "ModeGroup": [ + { + "identifier": "MainPG", + "initialMode_name": "Off", + "recoveryMode_name": "MainPG/Recovery", + "modeDeclaration": [ + { + "identifier": "MainPG/Off" + }, + { + "identifier": "MainPG/Startup" + }, + { + "identifier": "MainPG/Recovery" + } + ] + } + ] +} diff --git a/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json b/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json new file mode 100644 index 00000000000..3880ea91660 --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json @@ -0,0 +1,14 @@ +{ + "versionMajor": 8, + "versionMinor": 0, + "process": [], + "hmMonitorInterface": [ + { + "instanceSpecifier": "demo/demo_application0/Port1", + "processShortName": "demo_application0", + "portPrototype": "Port1", + "interfacePath": "demo_application_0_MainPG", + "refProcessIndex":0 + } + ] +} diff --git a/integration/showcases/simple_lifecycle/simple_lifecycle.score.json b/integration/showcases/simple_lifecycle/simple_lifecycle.score.json new file mode 100644 index 00000000000..4adfd429bdd --- /dev/null +++ b/integration/showcases/simple_lifecycle/simple_lifecycle.score.json @@ -0,0 +1,24 @@ +{ + "name": "Simple Health and lifecycle management example", + "description": "Example runs two applications and monitors if they are healthy. When some application is malfunctioning, this will be recorded. Examples takes ~15s", + "apps": [ + { + "path": "/showcases/bin/launch_manager", + "dir": "/showcases/data/simple_lifecycle", + "args": [], + "env": {} + }, + { + "path": "pkill", + "args": ["-f", "cpp_supervised_app", "-SIGUSR1"], + "env": {}, + "delay": 5 + }, + { + "path": "pkill", + "args": ["-f", "launch_manager"], + "env": {}, + "delay": 2 + } + ] +} From aae57818bec59911c980b85a7545f29b5de2104a Mon Sep 17 00:00:00 2001 From: Andrey Babanin Date: Wed, 11 Feb 2026 16:33:45 +0100 Subject: [PATCH 21/55] Update patches for baselibs and remove deprecated feature flag (#95) --- .bazelrc | 1 - .../baselibs/0001-RH-exception-header.patch | 12 -- .../baselibs/0001-fixes-for-aarch64.patch | 189 ++++++++++++++++++ .../baselibs/0002-RH-algorithm-header.patch | 36 ---- .../baselibs/003-acl-fixes-for-aarch64.patch | 65 ------ .../baselibs/fix_hard_coded_amd64.patch | 32 --- score_modules.MODULE.bazel | 4 + 7 files changed, 193 insertions(+), 146 deletions(-) delete mode 100644 integration/patches/baselibs/0001-RH-exception-header.patch create mode 100644 integration/patches/baselibs/0001-fixes-for-aarch64.patch delete mode 100644 integration/patches/baselibs/0002-RH-algorithm-header.patch delete mode 100644 integration/patches/baselibs/003-acl-fixes-for-aarch64.patch delete mode 100644 integration/patches/baselibs/fix_hard_coded_amd64.patch diff --git a/.bazelrc b/.bazelrc index ddd24a4ed9d..fdcf72c6a50 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,7 +17,6 @@ common --registry=https://bcr.bazel.build # Flags needed by score_baselibs and communication modules. # Do not add more! -common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False common --@score_baselibs//score/json:base_library=nlohmann common --@score_communication//score/mw/com/flags:tracing_library=stub common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False diff --git a/integration/patches/baselibs/0001-RH-exception-header.patch b/integration/patches/baselibs/0001-RH-exception-header.patch deleted file mode 100644 index d48191eab2d..00000000000 --- a/integration/patches/baselibs/0001-RH-exception-header.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/score/concurrency/clock.h b/score/concurrency/clock.h -index 0fa7719..365a003 100644 ---- a/score/concurrency/clock.h -+++ b/score/concurrency/clock.h -@@ -15,6 +15,7 @@ - - #include - #include -+#include - - namespace score - { diff --git a/integration/patches/baselibs/0001-fixes-for-aarch64.patch b/integration/patches/baselibs/0001-fixes-for-aarch64.patch new file mode 100644 index 00000000000..f15e4d01f2f --- /dev/null +++ b/integration/patches/baselibs/0001-fixes-for-aarch64.patch @@ -0,0 +1,189 @@ +diff --git a/MODULE.bazel b/MODULE.bazel +index 7b6f319e..b4c77340 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -98,6 +98,13 @@ deb( + visibility = ["//visibility:public"], + ) + ++deb( ++ name = "acl-deb-aarch64", ++ build = "//third_party/acl:acl.BUILD", ++ urls = ["https://ports.ubuntu.com/pool/main/a/acl/libacl1-dev_2.3.1-1_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ + deb( + name = "valgrind-deb", + build = "//third_party/valgrind:valgrind.BUILD", +@@ -118,6 +125,19 @@ deb( + visibility = ["//visibility:public"], + ) + ++deb( ++ name = "libcap2-deb-aarch64", ++ urls = ["https://ports.ubuntu.com/pool/main/libc/libcap2/libcap2_2.25-1.2_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ ++deb( ++ name = "libcap2-dev-deb-aarch64", ++ build = "//third_party/libcap2:libcap2.BUILD", ++ urls = ["https://ports.ubuntu.com/pool/main/libc/libcap2/libcap-dev_2.25-1.2_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ + deb( + name = "libseccomp2-deb", + urls = ["https://archive.ubuntu.com/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.5.1-1ubuntu1~18.04.2_amd64.deb"], +@@ -131,6 +151,19 @@ deb( + visibility = ["//visibility:public"], + ) + ++deb( ++ name = "libseccomp2-deb-aarch64", ++ urls = ["https://ports.ubuntu.com/pool/main/libs/libseccomp/libseccomp2_2.5.3-2ubuntu2_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ ++deb( ++ name = "libseccomp2-dev-deb-aarch64", ++ build = "//third_party/libseccomp2:libseccomp2.BUILD", ++ urls = ["https://ports.ubuntu.com/pool/main/libs/libseccomp/libseccomp-dev_2.5.3-2ubuntu2_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ + bazel_dep(name = "nlohmann_json", version = "3.11.3") + bazel_dep(name = "bazel_skylib", version = "1.8.2") + +diff --git a/score/language/safecpp/test/test_std_arithmetic_types.cpp b/score/language/safecpp/test/test_std_arithmetic_types.cpp +index b09415b4..5c4ed8a5 100644 +--- a/score/language/safecpp/test/test_std_arithmetic_types.cpp ++++ b/score/language/safecpp/test/test_std_arithmetic_types.cpp +@@ -46,18 +46,6 @@ TEST(StdFloatTypes, IECConformance) + + TEST(StdIntegralTypes, signess_and_bytes_number) + { +-// Test identifies implementation defined behavior. +-// As the standard does not specify if plain char is signed or unsigned. +-// char on QNX is considered as unsigned char and on GCC and Clang is considered as signed. +-#if defined(__QNX__) +- // As the signess of char depends on using qemu or the real hardware, this line got commented until we decide +- // How to move forward in this ticket Ticket-141110 +- // static_assert(std::numeric_limits::is_signed == false, +- // "it is expected a 'char' to be unsigned in a QNX environment"); +-#else +- static_assert(std::numeric_limits::is_signed == true, +- "it is expected a 'char' to be signed in a linux environment"); +-#endif + // Test identifies number of bytes + static_assert(sizeof(char) == 1, "it is expected a char bytes' number to be 1"); + +diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD +index b71d5df1..da079950 100644 +--- a/third_party/acl/BUILD ++++ b/third_party/acl/BUILD +@@ -1,5 +1,8 @@ + alias( + name = "acl", +- actual = "@acl-deb//:acl", ++ actual = select({ ++ "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", ++ "//conditions:default": "@acl-deb//:acl", ++ }), + visibility = ["//visibility:public"], + ) +diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD +index 718726c6..b695a6ac 100644 +--- a/third_party/acl/acl.BUILD ++++ b/third_party/acl/acl.BUILD +@@ -1,8 +1,9 @@ + cc_library( + name = "acl", +- srcs = [ +- "usr/lib/libacl.a", +- ], ++ srcs = select({ ++ "@platforms//cpu:aarch64": ["usr/lib/aarch64-linux-gnu/libacl.a"], ++ "//conditions:default": ["usr/lib/libacl.a"], ++ }), + hdrs = [ + "usr/include/acl/libacl.h", + "usr/include/sys/acl.h", +diff --git a/third_party/libcap2/BUILD b/third_party/libcap2/BUILD +index c74930f1..4704ee73 100644 +--- a/third_party/libcap2/BUILD ++++ b/third_party/libcap2/BUILD +@@ -1,5 +1,8 @@ + alias( + name = "libcap2", +- actual = "@libcap2-dev-deb//:libcap2", ++ actual = select({ ++ "@platforms//cpu:aarch64": "@libcap2-dev-deb-aarch64//:libcap2", ++ "//conditions:default": "@libcap2-dev-deb//:libcap2", ++ }), + visibility = ["//visibility:public"], + ) +diff --git a/third_party/libcap2/libcap2.BUILD b/third_party/libcap2/libcap2.BUILD +index 05f504a6..489cefb4 100644 +--- a/third_party/libcap2/libcap2.BUILD ++++ b/third_party/libcap2/libcap2.BUILD +@@ -1,9 +1,15 @@ + cc_library( + name = "libcap2", +- srcs = [ +- "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2", +- "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2.25", +- ], ++ srcs = select({ ++ "@platforms//cpu:aarch64": [ ++ "@libcap2-deb-aarch64//:lib/aarch64-linux-gnu/libcap.so.2", ++ "@libcap2-deb-aarch64//:lib/aarch64-linux-gnu/libcap.so.2.25", ++ ], ++ "//conditions:default": [ ++ "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2", ++ "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2.25", ++ ], ++ }), + hdrs = [ + "usr/include/sys/capability.h", + ], +diff --git a/third_party/libseccomp2/BUILD b/third_party/libseccomp2/BUILD +index dd0c1848..bc9a2cc5 100644 +--- a/third_party/libseccomp2/BUILD ++++ b/third_party/libseccomp2/BUILD +@@ -1,5 +1,8 @@ + alias( + name = "libseccomp2", +- actual = "@libseccomp2-dev-deb//:libseccomp2", ++ actual = select({ ++ "@platforms//cpu:aarch64": "@libseccomp2-dev-deb-aarch64//:libseccomp2", ++ "//conditions:default": "@libseccomp2-dev-deb//:libseccomp2", ++ }), + visibility = ["//visibility:public"], + ) +diff --git a/third_party/libseccomp2/libseccomp2.BUILD b/third_party/libseccomp2/libseccomp2.BUILD +index 1d6c5d9d..4ce426f5 100644 +--- a/third_party/libseccomp2/libseccomp2.BUILD ++++ b/third_party/libseccomp2/libseccomp2.BUILD +@@ -1,9 +1,15 @@ + cc_library( + name = "libseccomp2", +- srcs = [ +- "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2", +- "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2.5.1", +- ], ++ srcs = select({ ++ "@platforms//cpu:aarch64": [ ++ "@libseccomp2-deb-aarch64//:usr/lib/aarch64-linux-gnu/libseccomp.so.2", ++ "@libseccomp2-deb-aarch64//:usr/lib/aarch64-linux-gnu/libseccomp.so.2.5.3", ++ ], ++ "//conditions:default": [ ++ "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2", ++ "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2.5.1", ++ ], ++ }), + hdrs = [ + "usr/include/seccomp.h", + "usr/include/seccomp-syscalls.h", + diff --git a/integration/patches/baselibs/0002-RH-algorithm-header.patch b/integration/patches/baselibs/0002-RH-algorithm-header.patch deleted file mode 100644 index 70fc3780a95..00000000000 --- a/integration/patches/baselibs/0002-RH-algorithm-header.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/score/language/futurecpp/tests/member_iterator_test.cpp b/score/language/futurecpp/tests/member_iterator_test.cpp -index bea1361..6d649d2 100644 ---- a/score/language/futurecpp/tests/member_iterator_test.cpp -+++ b/score/language/futurecpp/tests/member_iterator_test.cpp -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - - #include - -diff --git a/score/language/futurecpp/tests/multi_span_test.cpp b/score/language/futurecpp/tests/multi_span_test.cpp -index 9b57903..c0da98b 100644 ---- a/score/language/futurecpp/tests/multi_span_test.cpp -+++ b/score/language/futurecpp/tests/multi_span_test.cpp -@@ -11,6 +11,7 @@ - #include - #include - #include -+#include - - #include - -diff --git a/score/mw/log/detail/logging_identifier.h b/score/mw/log/detail/logging_identifier.h -index ec02bac..b15bdfa 100644 ---- a/score/mw/log/detail/logging_identifier.h -+++ b/score/mw/log/detail/logging_identifier.h -@@ -19,6 +19,7 @@ - - #include - #include -+#include - - namespace score - { diff --git a/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch b/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch deleted file mode 100644 index 95ea478477d..00000000000 --- a/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 37a6329193e94d93fef91fc184e95e9a8b67a98b Mon Sep 17 00:00:00 2001 -From: Pawel Rutka -Date: Mon, 9 Feb 2026 14:51:53 +0100 -Subject: [PATCH] T - -Signed-off-by: Pawel Rutka ---- - MODULE.bazel | 7 +++++++ - third_party/acl/BUILD | 6 +++++- - third_party/acl/acl.BUILD | 7 ++++--- - 3 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/MODULE.bazel b/MODULE.bazel -index f7991cb..b78d618 100644 ---- a/MODULE.bazel -+++ b/MODULE.bazel -@@ -64,6 +64,13 @@ deb( - visibility = ["//visibility:public"], - ) - -+deb( -+ name = "acl-deb-aarch64", -+ build = "//third_party/acl:acl.BUILD", -+ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ - deb( - name = "valgrind-deb", - build = "//third_party/valgrind:valgrind.BUILD", -diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD -index dfcac1e..c76bee3 100644 ---- a/third_party/acl/BUILD -+++ b/third_party/acl/BUILD -@@ -1,5 +1,9 @@ - alias( - name = "acl", -- actual = "@acl-deb//:acl", -+ actual = select({ -+ "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", -+ "//conditions:default": "@acl-deb//:acl", -+ }), - visibility = ["//visibility:public"], - ) -+ -diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD -index 2163068..d86c7f7 100644 ---- a/third_party/acl/acl.BUILD -+++ b/third_party/acl/acl.BUILD -@@ -1,8 +1,9 @@ - cc_library( - name = "acl", -- srcs = [ -- "usr/lib/libacl.a", -- ], -+ srcs = select({ -+ "@platforms//cpu:aarch64": ["usr/lib/aarch64-linux-gnu/libacl.a"], -+ "//conditions:default": ["usr/lib/libacl.a"], -+ }), - hdrs = [ - "usr/include/acl/libacl.h", - "usr/include/sys/acl.h", --- -2.43.0 - diff --git a/integration/patches/baselibs/fix_hard_coded_amd64.patch b/integration/patches/baselibs/fix_hard_coded_amd64.patch deleted file mode 100644 index 91892e1b20b..00000000000 --- a/integration/patches/baselibs/fix_hard_coded_amd64.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/MODULE.bazel b/MODULE.bazel -index 16776ba..683c131 100644 ---- a/MODULE.bazel -+++ b/MODULE.bazel -@@ -70,7 +70,7 @@ deb = use_repo_rule("@download_utils//download/deb:defs.bzl", "download_deb") - deb( - name = "acl-deb", - build = "//third_party/acl:acl.BUILD", -- urls = ["https://archive.ubuntu.com/ubuntu/pool/main/a/acl/libacl1-dev_2.2.52-3build1_amd64.deb"], -+ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], - visibility = ["//visibility:public"], - ) - -diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD -index 718726c..710befd 100644 ---- a/third_party/acl/acl.BUILD -+++ b/third_party/acl/acl.BUILD -@@ -1,7 +1,7 @@ - cc_library( - name = "acl", - srcs = [ -- "usr/lib/libacl.a", -+ "usr/lib/aarch64-linux-gnu/libacl.a", - ], - hdrs = [ - "usr/include/acl/libacl.h", -@@ -9,4 +9,4 @@ cc_library( - ], - includes = ["usr/include/"], - visibility = ["//visibility:public"], --) -+) diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 8c2d99b2e0d..32b2c452452 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -19,6 +19,10 @@ git_override( module_name = "score_baselibs", remote = "https://github.com/eclipse-score/baselibs.git", commit = "ffd1c812213c66a436ed982632f6942528b58be8", + patch_strip = 1, + patches = [ + "//integration/patches/baselibs:0001-fixes-for-aarch64.patch", + ], ) bazel_dep(name = "score_baselibs_rust") From c7bee70cf2ce3c9282fb4fa8d5ba60442c16aabe Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Thu, 12 Feb 2026 11:51:11 +0100 Subject: [PATCH 22/55] Revert "Update patches for baselibs and remove deprecated feature flag (#95)" (#98) This reverts commit 399c00b454ec5f7e2af9689be9096ea2c50f7d4c. --- .bazelrc | 1 + .../baselibs/0001-RH-exception-header.patch | 12 ++ .../baselibs/0001-fixes-for-aarch64.patch | 189 ------------------ .../baselibs/0002-RH-algorithm-header.patch | 36 ++++ .../baselibs/003-acl-fixes-for-aarch64.patch | 65 ++++++ .../baselibs/fix_hard_coded_amd64.patch | 32 +++ score_modules.MODULE.bazel | 4 - 7 files changed, 146 insertions(+), 193 deletions(-) create mode 100644 integration/patches/baselibs/0001-RH-exception-header.patch delete mode 100644 integration/patches/baselibs/0001-fixes-for-aarch64.patch create mode 100644 integration/patches/baselibs/0002-RH-algorithm-header.patch create mode 100644 integration/patches/baselibs/003-acl-fixes-for-aarch64.patch create mode 100644 integration/patches/baselibs/fix_hard_coded_amd64.patch diff --git a/.bazelrc b/.bazelrc index fdcf72c6a50..ddd24a4ed9d 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,6 +17,7 @@ common --registry=https://bcr.bazel.build # Flags needed by score_baselibs and communication modules. # Do not add more! +common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False common --@score_baselibs//score/json:base_library=nlohmann common --@score_communication//score/mw/com/flags:tracing_library=stub common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False diff --git a/integration/patches/baselibs/0001-RH-exception-header.patch b/integration/patches/baselibs/0001-RH-exception-header.patch new file mode 100644 index 00000000000..d48191eab2d --- /dev/null +++ b/integration/patches/baselibs/0001-RH-exception-header.patch @@ -0,0 +1,12 @@ +diff --git a/score/concurrency/clock.h b/score/concurrency/clock.h +index 0fa7719..365a003 100644 +--- a/score/concurrency/clock.h ++++ b/score/concurrency/clock.h +@@ -15,6 +15,7 @@ + + #include + #include ++#include + + namespace score + { diff --git a/integration/patches/baselibs/0001-fixes-for-aarch64.patch b/integration/patches/baselibs/0001-fixes-for-aarch64.patch deleted file mode 100644 index f15e4d01f2f..00000000000 --- a/integration/patches/baselibs/0001-fixes-for-aarch64.patch +++ /dev/null @@ -1,189 +0,0 @@ -diff --git a/MODULE.bazel b/MODULE.bazel -index 7b6f319e..b4c77340 100644 ---- a/MODULE.bazel -+++ b/MODULE.bazel -@@ -98,6 +98,13 @@ deb( - visibility = ["//visibility:public"], - ) - -+deb( -+ name = "acl-deb-aarch64", -+ build = "//third_party/acl:acl.BUILD", -+ urls = ["https://ports.ubuntu.com/pool/main/a/acl/libacl1-dev_2.3.1-1_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ - deb( - name = "valgrind-deb", - build = "//third_party/valgrind:valgrind.BUILD", -@@ -118,6 +125,19 @@ deb( - visibility = ["//visibility:public"], - ) - -+deb( -+ name = "libcap2-deb-aarch64", -+ urls = ["https://ports.ubuntu.com/pool/main/libc/libcap2/libcap2_2.25-1.2_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ -+deb( -+ name = "libcap2-dev-deb-aarch64", -+ build = "//third_party/libcap2:libcap2.BUILD", -+ urls = ["https://ports.ubuntu.com/pool/main/libc/libcap2/libcap-dev_2.25-1.2_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ - deb( - name = "libseccomp2-deb", - urls = ["https://archive.ubuntu.com/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.5.1-1ubuntu1~18.04.2_amd64.deb"], -@@ -131,6 +151,19 @@ deb( - visibility = ["//visibility:public"], - ) - -+deb( -+ name = "libseccomp2-deb-aarch64", -+ urls = ["https://ports.ubuntu.com/pool/main/libs/libseccomp/libseccomp2_2.5.3-2ubuntu2_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ -+deb( -+ name = "libseccomp2-dev-deb-aarch64", -+ build = "//third_party/libseccomp2:libseccomp2.BUILD", -+ urls = ["https://ports.ubuntu.com/pool/main/libs/libseccomp/libseccomp-dev_2.5.3-2ubuntu2_arm64.deb"], -+ visibility = ["//visibility:public"], -+) -+ - bazel_dep(name = "nlohmann_json", version = "3.11.3") - bazel_dep(name = "bazel_skylib", version = "1.8.2") - -diff --git a/score/language/safecpp/test/test_std_arithmetic_types.cpp b/score/language/safecpp/test/test_std_arithmetic_types.cpp -index b09415b4..5c4ed8a5 100644 ---- a/score/language/safecpp/test/test_std_arithmetic_types.cpp -+++ b/score/language/safecpp/test/test_std_arithmetic_types.cpp -@@ -46,18 +46,6 @@ TEST(StdFloatTypes, IECConformance) - - TEST(StdIntegralTypes, signess_and_bytes_number) - { --// Test identifies implementation defined behavior. --// As the standard does not specify if plain char is signed or unsigned. --// char on QNX is considered as unsigned char and on GCC and Clang is considered as signed. --#if defined(__QNX__) -- // As the signess of char depends on using qemu or the real hardware, this line got commented until we decide -- // How to move forward in this ticket Ticket-141110 -- // static_assert(std::numeric_limits::is_signed == false, -- // "it is expected a 'char' to be unsigned in a QNX environment"); --#else -- static_assert(std::numeric_limits::is_signed == true, -- "it is expected a 'char' to be signed in a linux environment"); --#endif - // Test identifies number of bytes - static_assert(sizeof(char) == 1, "it is expected a char bytes' number to be 1"); - -diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD -index b71d5df1..da079950 100644 ---- a/third_party/acl/BUILD -+++ b/third_party/acl/BUILD -@@ -1,5 +1,8 @@ - alias( - name = "acl", -- actual = "@acl-deb//:acl", -+ actual = select({ -+ "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", -+ "//conditions:default": "@acl-deb//:acl", -+ }), - visibility = ["//visibility:public"], - ) -diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD -index 718726c6..b695a6ac 100644 ---- a/third_party/acl/acl.BUILD -+++ b/third_party/acl/acl.BUILD -@@ -1,8 +1,9 @@ - cc_library( - name = "acl", -- srcs = [ -- "usr/lib/libacl.a", -- ], -+ srcs = select({ -+ "@platforms//cpu:aarch64": ["usr/lib/aarch64-linux-gnu/libacl.a"], -+ "//conditions:default": ["usr/lib/libacl.a"], -+ }), - hdrs = [ - "usr/include/acl/libacl.h", - "usr/include/sys/acl.h", -diff --git a/third_party/libcap2/BUILD b/third_party/libcap2/BUILD -index c74930f1..4704ee73 100644 ---- a/third_party/libcap2/BUILD -+++ b/third_party/libcap2/BUILD -@@ -1,5 +1,8 @@ - alias( - name = "libcap2", -- actual = "@libcap2-dev-deb//:libcap2", -+ actual = select({ -+ "@platforms//cpu:aarch64": "@libcap2-dev-deb-aarch64//:libcap2", -+ "//conditions:default": "@libcap2-dev-deb//:libcap2", -+ }), - visibility = ["//visibility:public"], - ) -diff --git a/third_party/libcap2/libcap2.BUILD b/third_party/libcap2/libcap2.BUILD -index 05f504a6..489cefb4 100644 ---- a/third_party/libcap2/libcap2.BUILD -+++ b/third_party/libcap2/libcap2.BUILD -@@ -1,9 +1,15 @@ - cc_library( - name = "libcap2", -- srcs = [ -- "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2", -- "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2.25", -- ], -+ srcs = select({ -+ "@platforms//cpu:aarch64": [ -+ "@libcap2-deb-aarch64//:lib/aarch64-linux-gnu/libcap.so.2", -+ "@libcap2-deb-aarch64//:lib/aarch64-linux-gnu/libcap.so.2.25", -+ ], -+ "//conditions:default": [ -+ "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2", -+ "@libcap2-deb//:lib/x86_64-linux-gnu/libcap.so.2.25", -+ ], -+ }), - hdrs = [ - "usr/include/sys/capability.h", - ], -diff --git a/third_party/libseccomp2/BUILD b/third_party/libseccomp2/BUILD -index dd0c1848..bc9a2cc5 100644 ---- a/third_party/libseccomp2/BUILD -+++ b/third_party/libseccomp2/BUILD -@@ -1,5 +1,8 @@ - alias( - name = "libseccomp2", -- actual = "@libseccomp2-dev-deb//:libseccomp2", -+ actual = select({ -+ "@platforms//cpu:aarch64": "@libseccomp2-dev-deb-aarch64//:libseccomp2", -+ "//conditions:default": "@libseccomp2-dev-deb//:libseccomp2", -+ }), - visibility = ["//visibility:public"], - ) -diff --git a/third_party/libseccomp2/libseccomp2.BUILD b/third_party/libseccomp2/libseccomp2.BUILD -index 1d6c5d9d..4ce426f5 100644 ---- a/third_party/libseccomp2/libseccomp2.BUILD -+++ b/third_party/libseccomp2/libseccomp2.BUILD -@@ -1,9 +1,15 @@ - cc_library( - name = "libseccomp2", -- srcs = [ -- "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2", -- "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2.5.1", -- ], -+ srcs = select({ -+ "@platforms//cpu:aarch64": [ -+ "@libseccomp2-deb-aarch64//:usr/lib/aarch64-linux-gnu/libseccomp.so.2", -+ "@libseccomp2-deb-aarch64//:usr/lib/aarch64-linux-gnu/libseccomp.so.2.5.3", -+ ], -+ "//conditions:default": [ -+ "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2", -+ "@libseccomp2-deb//:lib/x86_64-linux-gnu/libseccomp.so.2.5.1", -+ ], -+ }), - hdrs = [ - "usr/include/seccomp.h", - "usr/include/seccomp-syscalls.h", - diff --git a/integration/patches/baselibs/0002-RH-algorithm-header.patch b/integration/patches/baselibs/0002-RH-algorithm-header.patch new file mode 100644 index 00000000000..70fc3780a95 --- /dev/null +++ b/integration/patches/baselibs/0002-RH-algorithm-header.patch @@ -0,0 +1,36 @@ +diff --git a/score/language/futurecpp/tests/member_iterator_test.cpp b/score/language/futurecpp/tests/member_iterator_test.cpp +index bea1361..6d649d2 100644 +--- a/score/language/futurecpp/tests/member_iterator_test.cpp ++++ b/score/language/futurecpp/tests/member_iterator_test.cpp +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + #include + +diff --git a/score/language/futurecpp/tests/multi_span_test.cpp b/score/language/futurecpp/tests/multi_span_test.cpp +index 9b57903..c0da98b 100644 +--- a/score/language/futurecpp/tests/multi_span_test.cpp ++++ b/score/language/futurecpp/tests/multi_span_test.cpp +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + +diff --git a/score/mw/log/detail/logging_identifier.h b/score/mw/log/detail/logging_identifier.h +index ec02bac..b15bdfa 100644 +--- a/score/mw/log/detail/logging_identifier.h ++++ b/score/mw/log/detail/logging_identifier.h +@@ -19,6 +19,7 @@ + + #include + #include ++#include + + namespace score + { diff --git a/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch b/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch new file mode 100644 index 00000000000..95ea478477d --- /dev/null +++ b/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch @@ -0,0 +1,65 @@ +From 37a6329193e94d93fef91fc184e95e9a8b67a98b Mon Sep 17 00:00:00 2001 +From: Pawel Rutka +Date: Mon, 9 Feb 2026 14:51:53 +0100 +Subject: [PATCH] T + +Signed-off-by: Pawel Rutka +--- + MODULE.bazel | 7 +++++++ + third_party/acl/BUILD | 6 +++++- + third_party/acl/acl.BUILD | 7 ++++--- + 3 files changed, 16 insertions(+), 4 deletions(-) + +diff --git a/MODULE.bazel b/MODULE.bazel +index f7991cb..b78d618 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -64,6 +64,13 @@ deb( + visibility = ["//visibility:public"], + ) + ++deb( ++ name = "acl-deb-aarch64", ++ build = "//third_party/acl:acl.BUILD", ++ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], ++ visibility = ["//visibility:public"], ++) ++ + deb( + name = "valgrind-deb", + build = "//third_party/valgrind:valgrind.BUILD", +diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD +index dfcac1e..c76bee3 100644 +--- a/third_party/acl/BUILD ++++ b/third_party/acl/BUILD +@@ -1,5 +1,9 @@ + alias( + name = "acl", +- actual = "@acl-deb//:acl", ++ actual = select({ ++ "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", ++ "//conditions:default": "@acl-deb//:acl", ++ }), + visibility = ["//visibility:public"], + ) ++ +diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD +index 2163068..d86c7f7 100644 +--- a/third_party/acl/acl.BUILD ++++ b/third_party/acl/acl.BUILD +@@ -1,8 +1,9 @@ + cc_library( + name = "acl", +- srcs = [ +- "usr/lib/libacl.a", +- ], ++ srcs = select({ ++ "@platforms//cpu:aarch64": ["usr/lib/aarch64-linux-gnu/libacl.a"], ++ "//conditions:default": ["usr/lib/libacl.a"], ++ }), + hdrs = [ + "usr/include/acl/libacl.h", + "usr/include/sys/acl.h", +-- +2.43.0 + diff --git a/integration/patches/baselibs/fix_hard_coded_amd64.patch b/integration/patches/baselibs/fix_hard_coded_amd64.patch new file mode 100644 index 00000000000..91892e1b20b --- /dev/null +++ b/integration/patches/baselibs/fix_hard_coded_amd64.patch @@ -0,0 +1,32 @@ +diff --git a/MODULE.bazel b/MODULE.bazel +index 16776ba..683c131 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -70,7 +70,7 @@ deb = use_repo_rule("@download_utils//download/deb:defs.bzl", "download_deb") + deb( + name = "acl-deb", + build = "//third_party/acl:acl.BUILD", +- urls = ["https://archive.ubuntu.com/ubuntu/pool/main/a/acl/libacl1-dev_2.2.52-3build1_amd64.deb"], ++ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], + visibility = ["//visibility:public"], + ) + +diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD +index 718726c..710befd 100644 +--- a/third_party/acl/acl.BUILD ++++ b/third_party/acl/acl.BUILD +@@ -1,7 +1,7 @@ + cc_library( + name = "acl", + srcs = [ +- "usr/lib/libacl.a", ++ "usr/lib/aarch64-linux-gnu/libacl.a", + ], + hdrs = [ + "usr/include/acl/libacl.h", +@@ -9,4 +9,4 @@ cc_library( + ], + includes = ["usr/include/"], + visibility = ["//visibility:public"], +-) ++) diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel index 32b2c452452..8c2d99b2e0d 100644 --- a/score_modules.MODULE.bazel +++ b/score_modules.MODULE.bazel @@ -19,10 +19,6 @@ git_override( module_name = "score_baselibs", remote = "https://github.com/eclipse-score/baselibs.git", commit = "ffd1c812213c66a436ed982632f6942528b58be8", - patch_strip = 1, - patches = [ - "//integration/patches/baselibs:0001-fixes-for-aarch64.patch", - ], ) bazel_dep(name = "score_baselibs_rust") From 4d0fc7f037045c5859c65448efb4e1d8fb938ece Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Thu, 12 Feb 2026 12:07:17 +0100 Subject: [PATCH 23/55] Fix pipeline so it can have access to secrets (#99) --- .github/workflows/build_and_test_qnx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index a26add8f6f1..a1509c51206 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -13,7 +13,7 @@ name: QNX8 - Build & Test on: - pull_request: + pull_request_target: types: [opened, reopened, synchronize] paths: - 'integration/**' From df8924b180f3a42c9e4e8daeee036ce53a328269 Mon Sep 17 00:00:00 2001 From: Leonardo Rossetti Date: Thu, 12 Feb 2026 09:37:38 -0300 Subject: [PATCH 24/55] Autosd starter (#91) * fix autosd toolchain defintion Signed-off-by: Leonardo Rossetti * change showcases config files visibility to public Signed-off-by: Leonardo Rossetti * set images/autosd to build showcases Signed-off-by: Leonardo Rossetti * add OCI_IMAGE var to run_docker.sh Signed-off-by: Leonardo Rossetti * set correct autosd label in score_starter Signed-off-by: Leonardo Rossetti * fix autosd ci Signed-off-by: Leonardo Rossetti * fix autosd bazel file Signed-off-by: Leonardo Rossetti * fix ci rpm path Signed-off-by: Leonardo Rossetti * fix autosd build step Signed-off-by: Leonardo Rossetti * fix ci aib scrit url Signed-off-by: Leonardo Rossetti * fix score_starter rebase Signed-off-by: Leonardo Rossetti --------- Signed-off-by: Leonardo Rossetti --- .github/workflows/build_and_test_autosd.yml | 48 +++++++++--------- .../score_gcc_toolchains.MODULE.bazel | 13 ++--- integration/images/autosd_x86_64/BUILD.bazel | 50 +++++++++++++------ .../images/autosd_x86_64/build/image.aib.yml | 4 +- .../autosd_x86_64/build/scripts/run_qemu | 2 +- .../docker_x86_64/scripts/run_docker.sh | 5 +- integration/score_starter | 4 +- integration/showcases/kyron/BUILD | 2 + .../showcases/orchestration_persistency/BUILD | 2 + 9 files changed, 73 insertions(+), 57 deletions(-) diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 46b1d470873..6ad6a755d71 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -23,7 +23,6 @@ on: paths: - 'integration/**' - jobs: build: name: x86_64 @@ -41,43 +40,44 @@ jobs: sudo apt-get update -y sudo apt-get install -y podman curl qemu-system createrepo-c - - name: Build Lola Demo + - name: Build Showcases RPMs run: | - bazel build --config=autosd-x86_64 //images/autosd_x86_64:lola-demo - working-directory: ./integration + bazel build --config autosd-x86_64 //images/autosd_x86_64:score-reference-integration + working-directory: ./integration/images/autosd_x86_64 - name: Copy RPMs run: | set -e mkdir -p ./images/autosd_x86_64/build/rpms - cp bazel-out/k8-fastbuild/bin/images/autosd_x86_64/lola-demo-1.0.0-1.x86_64.rpm ./images/autosd_x86_64/build/rpms - cp bazel-out/k8-fastbuild/bin/images/autosd_x86_64/lola-demo-1.0.0-1.src.rpm ./images/autosd_x86_64/build/rpms + cp bazel-bin/images/autosd_x86_64/score-reference-integration-0.6.0-1.x86_64.rpm ./images/autosd_x86_64/build/rpms createrepo_c ./images/autosd_x86_64/build/rpms/ ls -l ./images/autosd_x86_64/build/rpms/ working-directory: ./integration - name: Install AIB Tools run: | - curl -o auto-image-builder.sh "https://gitlab.com/lrossett/automotive-image-builder/-/raw/script-fix/auto-image-builder.sh?ref_type=heads" + curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads" chmod +x auto-image-builder.sh - - curl -o automotive-image-runner "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/automotive-image-runner" - chmod +x automotive-image-runner working-directory: ./integration/images/autosd_x86_64/build - - - name: Build lola-demo.aib.yml + + - name: Build AutoSD QEMU (x86_64) run: | - sudo ./auto-image-builder.sh build-deprecated \ - --distro autosd10 \ - --mode package \ - --target qemu \ - --export qcow2 \ + export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage + + mkdir -p _build/containers-storage + sudo -E ./auto-image-builder.sh build-builder --distro=autosd10-sig + + sudo -E ./auto-image-builder.sh build \ + --distro=autosd10-sig \ + --target=qemu \ --define-file vars.yml \ --define-file vars-devel.yml \ image.aib.yml \ - disk.qcow2 + localhost/score:latest + + sudo -E ./auto-image-builder.sh to-disk-image localhost/score:latest _build/disk.qcow2 - sudo chown $(id -u) disk.qcow2 + sudo chown $(id -u):$(id -u) _build/disk.qcow2 working-directory: ./integration/images/autosd_x86_64/build - name: Enable KVM group perms @@ -91,18 +91,16 @@ jobs: sshcmd() { sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 root@localhost $@ } + ./scripts/run_qemu + sshcmd 'cat /etc/os-release' - sleep 10 - sshcmd 'bluechictl start agent-qm lola-ipc-sub.service' - sleep 5 - # sshcmd '/usr/bin/lola-ipc-test' Disabled until correct exmaples deployed working-directory: ./integration/images/autosd_x86_64/build env: SSH_PASSWORD: password - - name: Archive QEMU disk image + - name: Archive QEMU disk image (x86_64) uses: actions/upload-artifact@v4 with: name: autosd10-score-reference_integration-x86_64.qcow2 - path: integration/images/autosd_x86_64/build/disk.qcow2 + path: integration/images/autosd_x86_64/build/_build/disk.qcow2 diff --git a/integration/bazel_common/score_gcc_toolchains.MODULE.bazel b/integration/bazel_common/score_gcc_toolchains.MODULE.bazel index 5dca0559292..5cc05b0792f 100644 --- a/integration/bazel_common/score_gcc_toolchains.MODULE.bazel +++ b/integration/bazel_common/score_gcc_toolchains.MODULE.bazel @@ -61,26 +61,19 @@ bazel_dep(name = "os_autosd_toolchain", version = "0.0.1") # override with git git_override( module_name = "os_autosd_toolchain", - remote = "https://github.com/odra/inc_os_autosd.git", - branch = "repo-new-structure", + remote = "https://github.com/eclipse-score/inc_os_autosd.git", + branch = "main", strip_prefix = "toolchain" - ) autosd_10_gcc = use_extension("@os_autosd_toolchain//autosd_10_gcc:extensions.bzl", "autosd_10_gcc_extension") use_repo(autosd_10_gcc, "autosd_10_gcc_repo") - -autosd_9_gcc = use_extension("@os_autosd_toolchain//autosd_9_gcc:extensions.bzl", "autosd_9_gcc_extension") -use_repo(autosd_9_gcc, "autosd_9_gcc_repo") - - # Register the RPM toolchain rpm_toolchain = use_extension("@rules_rpm//toolchains:extensions.bzl", "rpm_toolchain") use_repo(rpm_toolchain, "rpm_toolchain") - use_repo(eb, "gcc_toolchain", "gcc_toolchain_gcc") use_repo( gcc, "score_gcc_x86_64_toolchain", -) \ No newline at end of file +) diff --git a/integration/images/autosd_x86_64/BUILD.bazel b/integration/images/autosd_x86_64/BUILD.bazel index 82e9bd66d07..7d57b6b3227 100644 --- a/integration/images/autosd_x86_64/BUILD.bazel +++ b/integration/images/autosd_x86_64/BUILD.bazel @@ -12,23 +12,41 @@ # ******************************************************************************* load("@rules_rpm//rpm:defs.bzl", "rpm_package") -# TODO: Shall use targets from use-cases -# Bring back files once we cleanup scrample integration soon +alias( + name = "image", + actual = "//showcases:showcases_all", + visibility = ["//visibility:public"], +) + rpm_package( - name = "lola-demo", + name = "score-reference-integration", + description = "Eclipse S-CORE Reference Integration", + summary = "Eclipse S-CORE Reference Integration", + version = "0.6.0", binaries = [ - "@score_scrample//src:scrample", + "//showcases/cli:cli", + "//showcases/kyron:kyron_example", + "//showcases/orchestration_persistency:orch_per_example", + "@score_scrample//src:scrample" + ], + config_dir = "/etc/score", + data = [ + "//showcases/kyron:kyron.score.json", + "//showcases/orchestration_persistency:orch_per.score.json" + ], + data_dir = "/usr/share/score/examples", +) + +sh_binary( + name = "run", + srcs = ["//runners/docker_x86_64/scripts:run_docker.sh"], + env={ + "OCI_IMAGE": "quay.io/centos/centos:stream10" + }, + args = [ + "$(location :image)", + ], + data = [ + ":image", ], - config_dir = "/etc/lola", - # data = [ - # "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json", - # ], - data_dir = "/usr/share/lola/examples", - description = "LOLA middleware communication libraries for development including core communication, configuration components, and example client/server binaries for testing", - # libraries = [ - # "@score_communication//score/mw/com:com", - # "@score_communication//score/mw/com:config_schema", - # ], - summary = "LOLA Demo", - version = "1.0.0", ) diff --git a/integration/images/autosd_x86_64/build/image.aib.yml b/integration/images/autosd_x86_64/build/image.aib.yml index 0e673538c93..01ff154a4f9 100644 --- a/integration/images/autosd_x86_64/build/image.aib.yml +++ b/integration/images/autosd_x86_64/build/image.aib.yml @@ -39,7 +39,7 @@ content: - bluechi-agent - bluechi-ctl # score - - lola-demo + - score-reference-integration make_dirs: - path: /etc/containers/systemd/qm.container.d @@ -101,7 +101,7 @@ qm: rpms: - boost-devel - bluechi-agent - - lola-demo + - score-reference-integration add_files: # lola service files - path: /etc/systemd/system/lola-ipc-sub.service diff --git a/integration/images/autosd_x86_64/build/scripts/run_qemu b/integration/images/autosd_x86_64/build/scripts/run_qemu index 039b242a863..bb7f65f739c 100755 --- a/integration/images/autosd_x86_64/build/scripts/run_qemu +++ b/integration/images/autosd_x86_64/build/scripts/run_qemu @@ -24,4 +24,4 @@ -netdev user,id=n0,hostfwd=tcp::2222-:22 \ -daemonize \ -display none \ --drive file=disk.qcow2,index=0,media=disk,format=qcow2,if=virtio,id=rootdisk,snapshot=off +-drive file=_build/disk.qcow2,index=0,media=disk,format=qcow2,if=virtio,id=rootdisk,snapshot=off diff --git a/integration/runners/docker_x86_64/scripts/run_docker.sh b/integration/runners/docker_x86_64/scripts/run_docker.sh index a96b5f31096..3db33a20383 100755 --- a/integration/runners/docker_x86_64/scripts/run_docker.sh +++ b/integration/runners/docker_x86_64/scripts/run_docker.sh @@ -17,8 +17,11 @@ set -euo pipefail OVERLAY_TREE=$1 OVERLAY_ABS_PATH=$(realpath ${OVERLAY_TREE}) +OCI_IMAGE=${OCI_IMAGE:=ubuntu:22.04} + echo "Starting docker with overlay image: ${OVERLAY_ABS_PATH}" + docker run --rm -it \ -v "${OVERLAY_ABS_PATH}:/showcases" \ - ubuntu:22.04 \ + ${OCI_IMAGE} \ bash -c "/showcases/bin/cli; exec bash" diff --git a/integration/score_starter b/integration/score_starter index 91779a779d7..c1d02d67168 100755 --- a/integration/score_starter +++ b/integration/score_starter @@ -13,8 +13,8 @@ mEntries = [ ("Run Linux x86_64 Docker", "bazel --output_user_root=build/linux-x86_64 run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), ("Run Elektrobit Corbos aarch64 QEMU", "bazel --output_user_root=build/eb-aarch64 build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), - ("Build Autosd x86_64 RPM", - "bazel --output_user_root=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:lola-demo", "autosd-x86_64"), + ("Run Autosd x86_64 QEMU", + "bazel --output_user_root=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:image", "autosd-x86_64"), ("Exit", "exit 0", "exit"), ] diff --git a/integration/showcases/kyron/BUILD b/integration/showcases/kyron/BUILD index 8cf41fc43e5..a39af18d5b1 100644 --- a/integration/showcases/kyron/BUILD +++ b/integration/showcases/kyron/BUILD @@ -1,6 +1,8 @@ load("@rules_rust//rust:defs.bzl", "rust_binary") load("//bazel_common:bundlers.bzl", "score_pkg_bundle") +exports_files(["kyron.score.json"]) + rust_binary( name = "kyron_example", srcs = ["main.rs"], diff --git a/integration/showcases/orchestration_persistency/BUILD b/integration/showcases/orchestration_persistency/BUILD index 16abb3ed3e9..5343c8808e1 100644 --- a/integration/showcases/orchestration_persistency/BUILD +++ b/integration/showcases/orchestration_persistency/BUILD @@ -14,6 +14,8 @@ load("@rules_rust//rust:defs.bzl", "rust_binary") load("//bazel_common:bundlers.bzl", "score_pkg_bundle") +exports_files(["orch_per.score.json"]) + rust_binary( name = "orch_per_example", srcs = ["main.rs"], From 3c1559a95853ae27a1b92d0054d792370cd2f596 Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Thu, 12 Feb 2026 14:08:17 +0100 Subject: [PATCH 25/55] Fix output dir for caching (#100) --- integration/score_starter | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/integration/score_starter b/integration/score_starter index c1d02d67168..716b7720ad7 100755 --- a/integration/score_starter +++ b/integration/score_starter @@ -10,11 +10,11 @@ import argparse # Each entry: (description, command, name) mEntries = [ ("Run QNX x86_64 QEMU", "bazel --output_base=build/qnx-x86_64 run --config qnx-x86_64 //images/qnx_x86_64:run", "qnx-x86_64"), - ("Run Linux x86_64 Docker", "bazel --output_user_root=build/linux-x86_64 run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), + ("Run Linux x86_64 Docker", "bazel --output_base=build/linux-x86_64 run --config linux-x86_64 //images/linux_x86_64:run", "linux-x86_64"), ("Run Elektrobit Corbos aarch64 QEMU", - "bazel --output_user_root=build/eb-aarch64 build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), + "bazel --output_base=build/eb-aarch64 build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), ("Run Autosd x86_64 QEMU", - "bazel --output_user_root=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:image", "autosd-x86_64"), + "bazel --output_base=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:image", "autosd-x86_64"), ("Exit", "exit 0", "exit"), ] From 34e124729ad1244608fb73252fc875b0977f161e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fu=C3=9Fberger?= <145956508+NicolasFussberger@users.noreply.github.com> Date: Thu, 12 Feb 2026 14:57:50 +0100 Subject: [PATCH 26/55] Add supervised rust example app to the lifecycle showcase (#97) * Move test execution to shell script We require a custom script as we need different commands when running on QNX vs. Linux which is not possible with the json-based showcase execution * Add rust example app and cleanup configs * Fix bazel warning Warning about using the filename also for the gen_rule name * Move showcase steps to the .score.json file --- integration/showcases/simple_lifecycle/BUILD | 26 ++++-- .../showcases/simple_lifecycle/configs/BUILD | 3 +- .../configs/cpp_supervised_app_demo.json | 14 ++++ .../simple_lifecycle/configs/hm_demo.json | 84 ++++++++++++++++--- .../simple_lifecycle/configs/lm_demo.json | 67 ++++++++++++--- .../configs/rust_supervised_app_demo.json | 15 ++++ .../configs/supervised_app_demo.json | 14 ---- .../simple_lifecycle/lifecycle_signal.sh | 18 ++++ .../simple_lifecycle.score.json | 12 +-- 9 files changed, 203 insertions(+), 50 deletions(-) create mode 100644 integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json create mode 100644 integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json delete mode 100644 integration/showcases/simple_lifecycle/configs/supervised_app_demo.json create mode 100755 integration/showcases/simple_lifecycle/lifecycle_signal.sh diff --git a/integration/showcases/simple_lifecycle/BUILD b/integration/showcases/simple_lifecycle/BUILD index fd17ee51a0a..0db2695e58a 100644 --- a/integration/showcases/simple_lifecycle/BUILD +++ b/integration/showcases/simple_lifecycle/BUILD @@ -6,7 +6,9 @@ score_pkg_bundle( bins = [ "@score_lifecycle_health//src/launch_manager_daemon:launch_manager", "@score_lifecycle_health//examples/cpp_supervised_app", + "@score_lifecycle_health//examples/rust_supervised_app", "@score_lifecycle_health//examples/control_application:control_daemon", + ":lifecycle_signal.sh" ], config_data = [ "//showcases/simple_lifecycle:simple_lifecycle.score.json", @@ -15,12 +17,13 @@ score_pkg_bundle( custom_layout = { ":lm_demo.bin": "etc/lm_demo.bin", ":hm_demo.bin": "etc/hm_demo.bin", - ":supervised_app_demo.bin": "etc/supervised_app_demo.bin", + ":cpp_supervised_app_demo.bin": "etc/cpp_supervised_app_demo.bin", + ":rust_supervised_app_demo.bin": "etc/rust_supervised_app_demo.bin", }, ) genrule( - name = "lm_demo.bin", + name = "gen_lm_demo.bin", srcs = ["@score_lifecycle_health//src/launch_manager_daemon:lm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:lm_demo.json"], outs = ["lm_demo.bin"], tools = ["@flatbuffers//:flatc"], @@ -29,7 +32,7 @@ genrule( ) genrule( - name = "hm_demo.bin", + name = "gen_hm_demo.bin", srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:hm_demo.json"], outs = ["hm_demo.bin"], tools = ["@flatbuffers//:flatc"], @@ -38,11 +41,20 @@ genrule( ) genrule( - name = "supervised_app_demo.bin", - srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:supervised_app_demo.json"], - outs = ["supervised_app_demo.bin"], + name = "gen_cpp_supervised_app_demo.bin", + srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:cpp_supervised_app_demo.json"], + outs = ["cpp_supervised_app_demo.bin"], tools = ["@flatbuffers//:flatc"], - cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv supervised_app_demo.bin $(location supervised_app_demo.bin)", + cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv cpp_supervised_app_demo.bin $(location cpp_supervised_app_demo.bin)", + visibility = ["//visibility:public"], +) + +genrule( + name = "gen_rust_supervised_app_demo.bin", + srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:rust_supervised_app_demo.json"], + outs = ["rust_supervised_app_demo.bin"], + tools = ["@flatbuffers//:flatc"], + cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv rust_supervised_app_demo.bin $(location rust_supervised_app_demo.bin)", visibility = ["//visibility:public"], ) diff --git a/integration/showcases/simple_lifecycle/configs/BUILD b/integration/showcases/simple_lifecycle/configs/BUILD index 397d72d65a5..d1cba824a59 100644 --- a/integration/showcases/simple_lifecycle/configs/BUILD +++ b/integration/showcases/simple_lifecycle/configs/BUILD @@ -1,5 +1,6 @@ exports_files([ "hm_demo.json", "lm_demo.json", - "supervised_app_demo.json" + "cpp_supervised_app_demo.json", + "rust_supervised_app_demo.json" ]) \ No newline at end of file diff --git a/integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json b/integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json new file mode 100644 index 00000000000..ba154982b5f --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json @@ -0,0 +1,14 @@ +{ + "versionMajor": 8, + "versionMinor": 0, + "process": [], + "hmMonitorInterface": [ + { + "instanceSpecifier": "cpp_supervised_app", + "processShortName": "cpp_supervised_app", + "portPrototype": "Port", + "interfacePath": "lifecycle_cpp_supervised_app", + "refProcessIndex":0 + } + ] +} diff --git a/integration/showcases/simple_lifecycle/configs/hm_demo.json b/integration/showcases/simple_lifecycle/configs/hm_demo.json index 7828a444570..f1dfa0121fb 100644 --- a/integration/showcases/simple_lifecycle/configs/hm_demo.json +++ b/integration/showcases/simple_lifecycle/configs/hm_demo.json @@ -4,8 +4,24 @@ "process": [ { "index": 0, - "shortName": "demo_application0", - "identifier": "demo_app0_MainPG", + "shortName": "cpp_supervised_app", + "identifier": "cpp_supervised_app", + "processType": "REGULAR_PROCESS", + "refProcessGroupStates": [ + { + "identifier": "MainPG/Startup" + } + ], + "processExecutionErrors": [ + { + "processExecutionError": 1 + } + ] + }, + { + "index": 1, + "shortName": "rust_supervised_app", + "identifier": "rust_supervised_app", "processType": "REGULAR_PROCESS", "refProcessGroupStates": [ { @@ -21,24 +37,37 @@ ], "hmMonitorInterface": [ { - "instanceSpecifier": "demo/demo_application0/Port1", - "processShortName": "demo_application0", - "portPrototype": "Port1", - "interfacePath": "demo_application_0_MainPG", + "instanceSpecifier": "cpp_supervised_app", + "processShortName": "cpp_supervised_app", + "portPrototype": "Port", + "interfacePath": "lifecycle_cpp_supervised_app", "refProcessIndex": 0, "permittedUid": 0 + }, + { + "instanceSpecifier": "rust_supervised_app", + "processShortName": "rust_supervised_app", + "portPrototype": "Port", + "interfacePath": "lifecycle_rust_supervised_app", + "refProcessIndex": 1, + "permittedUid": 0 } ], "hmSupervisionCheckpoint": [ { - "shortName": "Checkpoint0_1", + "shortName": "checkpoint_cpp_supervised_app", "checkpointId": 1, "refInterfaceIndex": 0 + }, + { + "shortName": "checkpoint_rust_supervised_app", + "checkpointId": 1, + "refInterfaceIndex": 1 } ], "hmAliveSupervision": [ { - "ruleContextKey": "AliveSupervision0", + "ruleContextKey": "AliveSupervision_cpp_supervised_app", "refCheckPointIndex": 0, "aliveReferenceCycle": 200.0, "minAliveIndications": 1, @@ -52,14 +81,30 @@ "identifier": "MainPG/Startup" } ] - } + }, + { + "ruleContextKey": "AliveSupervision_rust_supervised_app", + "refCheckPointIndex": 1, + "aliveReferenceCycle": 100.0, + "minAliveIndications": 1, + "maxAliveIndications": 3, + "isMinCheckDisabled": false, + "isMaxCheckDisabled": false, + "failedSupervisionCyclesTolerance": 1, + "refProcessIndex": 1, + "refProcessGroupStates": [ + { + "identifier": "MainPG/Startup" + } + ] + }, ], "hmDeadlineSupervision": [], "hmLogicalSupervision": [], "hmLocalSupervision": [ { - "ruleContextKey": "LocalSupervision0", - "infoRefInterfacePath": "demo_application_0", + "ruleContextKey": "LocalSupervision_cpp_supervised_app", + "infoRefInterfacePath": "cpp_supervised_app", "hmRefAliveSupervision": [ { "refAliveSupervisionIdx": 0 @@ -67,6 +112,17 @@ ], "hmRefDeadlineSupervision": [], "hmRefLogicalSupervision": [] + }, + { + "ruleContextKey": "LocalSupervision_rust_supervised_app", + "infoRefInterfacePath": "rust_supervised_app", + "hmRefAliveSupervision": [ + { + "refAliveSupervisionIdx": 1 + } + ], + "hmRefDeadlineSupervision": [], + "hmRefLogicalSupervision": [] } ], "hmGlobalSupervision": [ @@ -76,11 +132,17 @@ "localSupervision": [ { "refLocalSupervisionIndex": 0 + }, + { + "refLocalSupervisionIndex": 1 } ], "refProcesses": [ { "index": 0 + }, + { + "index": 1 } ], "refProcessGroupStates": [ diff --git a/integration/showcases/simple_lifecycle/configs/lm_demo.json b/integration/showcases/simple_lifecycle/configs/lm_demo.json index cb7ef56a8a7..7c79e876a83 100644 --- a/integration/showcases/simple_lifecycle/configs/lm_demo.json +++ b/integration/showcases/simple_lifecycle/configs/lm_demo.json @@ -46,7 +46,7 @@ ] }, { - "identifier": "demo_app0_MainPG", + "identifier": "cpp_supervised_app", "uid": 0, "gid": 0, "path": "/showcases/bin/cpp_supervised_app", @@ -59,15 +59,60 @@ "schedulingPolicy": "SCHED_OTHER", "schedulingPriority": "1", "identifier": "demo_app_startup_config_0", - "enterTimeoutValue": 2000, - "exitTimeoutValue": 2000, + "enterTimeoutValue": 1000, + "exitTimeoutValue": 1000, "terminationBehavior": "ProcessIsNotSelfTerminating", - "executionDependency": [ + "executionDependency": [], + "processGroupStateDependency": [ + { + "stateMachine_name": "MainPG", + "stateName": "MainPG/Startup" + } + ], + "environmentVariable": [ + { + "key": "LD_LIBRARY_PATH", + "value": "/usr/lib/" + }, + { + "key": "PROCESSIDENTIFIER", + "value": "cpp_supervised_app" + }, { - "stateName": "Running", - "targetProcess_identifier": "/healthmonitorApp/healthmonitor" + "key": "CONFIG_PATH", + "value": "/showcases/data/simple_lifecycle/etc/cpp_supervised_app_demo.bin" + }, + { + "key": "IDENTIFIER", + "value": "cpp_supervised_app" } ], + "processArgument": [ + { + "argument": "-scpp_supervised_app" + } + ] + } + ] + }, + { + "identifier": "rust_supervised_app", + "uid": 0, + "gid": 0, + "path": "/showcases/bin/rust_supervised_app", + "numberOfRestartAttempts": 0, + "executable_reportingBehavior": "ReportsExecutionState", + "sgids": [], + "startupConfig": [ + { + "executionError": "1", + "schedulingPolicy": "SCHED_OTHER", + "schedulingPriority": "1", + "identifier": "demo_app_startup_config_1", + "enterTimeoutValue": 1000, + "exitTimeoutValue": 1000, + "terminationBehavior": "ProcessIsNotSelfTerminating", + "executionDependency": [], "processGroupStateDependency": [ { "stateMachine_name": "MainPG", @@ -77,24 +122,24 @@ "environmentVariable": [ { "key": "LD_LIBRARY_PATH", - "value": "/usr/lib/" + "value": "/usr/lib" }, { "key": "PROCESSIDENTIFIER", - "value": "MainPG_app0" + "value": "rust_supervised_app" }, { "key": "CONFIG_PATH", - "value": "/showcases/data/simple_lifecycle/etc/supervised_app_demo.bin" + "value": "/showcases/data/simple_lifecycle/etc/rust_supervised_app_demo.bin" }, { "key": "IDENTIFIER", - "value": "demo/demo_application0/Port1" + "value": "rust_supervised_app" } ], "processArgument": [ { - "argument": "-sdemo/demo_application0/Port1" + "argument": "-d50" } ] } diff --git a/integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json b/integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json new file mode 100644 index 00000000000..75367c6fb28 --- /dev/null +++ b/integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json @@ -0,0 +1,15 @@ + +{ + "versionMajor": 8, + "versionMinor": 0, + "process": [], + "hmMonitorInterface": [ + { + "instanceSpecifier": "rust_supervised_app", + "processShortName": "rust_supervised_app", + "portPrototype": "Port", + "interfacePath": "lifecycle_rust_supervised_app", + "refProcessIndex":0 + } + ] +} diff --git a/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json b/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json deleted file mode 100644 index 3880ea91660..00000000000 --- a/integration/showcases/simple_lifecycle/configs/supervised_app_demo.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "versionMajor": 8, - "versionMinor": 0, - "process": [], - "hmMonitorInterface": [ - { - "instanceSpecifier": "demo/demo_application0/Port1", - "processShortName": "demo_application0", - "portPrototype": "Port1", - "interfacePath": "demo_application_0_MainPG", - "refProcessIndex":0 - } - ] -} diff --git a/integration/showcases/simple_lifecycle/lifecycle_signal.sh b/integration/showcases/simple_lifecycle/lifecycle_signal.sh new file mode 100755 index 00000000000..55d81c468be --- /dev/null +++ b/integration/showcases/simple_lifecycle/lifecycle_signal.sh @@ -0,0 +1,18 @@ +#! /bin/sh +# This script sends a signal to a process by name. It uses `slay` on QNX and `pkill` on other systems. +# Usage: lifecycle_signal.sh +# Example: lifecycle_signal.sh my_process SIGTERM + +running_on_qnx() { + [ -x "$(command -v slay)" ] +} + +process_name=$1 +signal=$2 + +if running_on_qnx +then + slay -s $signal -f $process_name +else + pkill -$signal -f $process_name +fi diff --git a/integration/showcases/simple_lifecycle/simple_lifecycle.score.json b/integration/showcases/simple_lifecycle/simple_lifecycle.score.json index 4adfd429bdd..5b05a6b83bf 100644 --- a/integration/showcases/simple_lifecycle/simple_lifecycle.score.json +++ b/integration/showcases/simple_lifecycle/simple_lifecycle.score.json @@ -9,16 +9,16 @@ "env": {} }, { - "path": "pkill", - "args": ["-f", "cpp_supervised_app", "-SIGUSR1"], + "path": "/showcases/bin/lifecycle_signal.sh", + "args": ["cpp_supervised_app", "SIGUSR1"], "env": {}, - "delay": 5 + "delay": 2 }, { - "path": "pkill", - "args": ["-f", "launch_manager"], + "path": "/showcases/bin/lifecycle_signal.sh", + "args": ["launch_manager", "SIGTERM"], "env": {}, - "delay": 2 + "delay": 6 } ] } From 1040f9e6313d91bf771e8dfc55d786eb11bd1d4e Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Tue, 17 Feb 2026 14:21:40 +0100 Subject: [PATCH 27/55] Quality checks & repository cleanup (#101) * Extend structure * Adapt structure * Add generation for long term approach * Align schema * Add pipeline checker * add external UT python script - executes UTs for external modules based on known_good.json file * Move module to top level * Update all common files * Doc cleanup * add cpp coverage calculation * fix: codeql and docs * docs: templates instead of real data * debug * Try 22.04 * Align workflows * Use correct action for cache * docs cleanup workflow * test and docs workflow * improve caching * Fixes after review --------- Co-authored-by: Piotr Korkus --- .bazelignore | 4 +- .bazelrc | 108 +++--- .bazelversion | 2 +- .github/workflows/build_and_test_autosd.yml | 30 +- .github/workflows/build_and_test_ebclfsa.yml | 18 +- ...nit_tests.yml => build_and_test_linux.yml} | 50 +-- .github/workflows/build_and_test_qnx.yml | 14 +- .../workflows/codeql-multiple-repo-scan.yml | 6 +- .../workflows/{docs.yml => docs_cleanup.yml} | 27 +- .github/workflows/known_good_correct.yml | 42 +++ .github/workflows/test_and_docs.yml | 212 ++++++++++++ .github/workflows/test_integration.yml | 1 + .gitignore | 3 +- BUILD | 9 +- MODULE.bazel | 58 ++-- README.md | 72 +--- {integration => bazel_common}/BUILD | 0 .../bundlers.bzl | 0 .../score_basic_bazel.MODULE.bazel | 9 - .../score_gcc_toolchains.MODULE.bazel | 0 .../score_modules_target_sw.MODULE.bazel | 75 ++++ .../score_modules_tooling.MODULE.bazel | 67 ++++ bazel_common/score_python.MODULE.bazel | 21 ++ .../score_qnx_toolchains.MODULE.bazel | 0 .../score_rust_toolchains.MODULE.bazel | 0 build_config.json | 34 -- docs/conf.py | 6 + docs/index.rst | 6 +- docs/verification/coverage_summary.md | 3 + docs/verification/unit_test_summary.md | 3 + docs/verification/verification.rst | 22 ++ .../BUILD | 0 .../README.md | 0 .../configs/BUILD | 0 .../configs/etc/logging.json | 0 .../configs/etc/mw_com_config.json | 0 .../configs/qemu_target_config.json | 0 .../itf/BUILD | 0 .../itf/test_persistency.py | 0 .../itf/test_scrample.py | 0 .../itf/test_ssh.py | 0 .../test_cases/BUILD | 0 .../test_cases/conftest.py | 0 .../test_cases/fit_scenario.py | 0 .../test_cases/pytest.ini | 0 .../test_cases/requirements.txt | 0 .../test_cases/requirements.txt.lock | 0 .../test_cases/test_properties.py | 0 .../test_orchestration_with_persistency.py | 0 .../persistency/test_multiple_kvs_per_app.py | 0 .../test_scenarios/rust/BUILD | 0 .../rust/src/internals/kyron/mod.rs | 0 .../src/internals/kyron/runtime_helper.rs | 0 .../test_scenarios/rust/src/internals/mod.rs | 0 .../src/internals/persistency/kvs_instance.rs | 0 .../internals/persistency/kvs_parameters.rs | 0 .../rust/src/internals/persistency/mod.rs | 0 .../test_scenarios/rust/src/main.rs | 0 .../rust/src/scenarios/basic/mod.rs | 0 .../basic/orchestration_with_persistency.rs | 0 .../test_scenarios/rust/src/scenarios/mod.rs | 0 .../rust/src/scenarios/persistency/mod.rs | 0 .../persistency/multiple_kvs_per_app.rs | 0 .../autosd_x86_64/BUILD.bazel | 0 .../autosd_x86_64/build/.gitignore | 0 .../autosd_x86_64/build/README.md | 0 .../build/files/bluechi-agent-main.conf | 0 .../build/files/bluechi-agent-qm.conf | 0 .../build/files/bluechi-controller.conf | 0 .../build/files/lola-ipc-pub.service | 0 .../build/files/lola-ipc-sub.service | 0 .../autosd_x86_64/build/files/lola-ipc-test | 0 .../build/files/lola-ipc-test.service | 0 .../autosd_x86_64/build/image.aib.yml | 0 .../autosd_x86_64/build/scripts/run_qemu | 0 .../autosd_x86_64/build/vars-devel.yml | 0 .../autosd_x86_64/build/vars.yml | 0 .../images => images}/ebclfsa_aarch64/BUILD | 0 .../ebclfsa_aarch64/README.md | 0 .../docs/system_setup.drawio.png | Bin .../persistency_integration/BUILD | 0 .../persistency_integration/run_qemu.sh | 0 .../scripts/cpp_tests_persistency.sh | 0 .../scrample_integration/BUILD | 0 .../scrample_integration/etc/logging.json | 0 .../etc/mw_com_config.json | 0 .../scrample_integration/run_qemu.sh | 0 .../scrample_integration/src/main.cc | 0 .../images => images}/linux_x86_64/BUILD | 0 .../images => images}/qnx_x86_64/BUILD | 0 .../images => images}/qnx_x86_64/build/BUILD | 0 .../qnx_x86_64/build/init.build | 0 .../qnx_x86_64/build/system.build | 0 .../qnx_x86_64/configs/BUILD | 0 .../qnx_x86_64/configs/dhcpcd.conf | 0 .../qnx_x86_64/configs/group | 0 .../qnx_x86_64/configs/hostname | 0 .../qnx_x86_64/configs/network_capture.sh | 0 .../qnx_x86_64/configs/network_setup.sh | 0 .../qnx_x86_64/configs/network_setup_dhcp.sh | 0 .../qnx_x86_64/configs/passwd | 0 .../qnx_x86_64/configs/pci_hw.cfg | 0 .../qnx_x86_64/configs/pci_server.cfg | 0 .../qnx_x86_64/configs/profile | 0 .../qnx_x86_64/configs/qcrypto.conf | 0 .../qnx_x86_64/configs/ssh_host_rsa_key | 0 .../qnx_x86_64/configs/ssh_host_rsa_key.pub | 0 .../qnx_x86_64/configs/sshd_config | 0 .../qnx_x86_64/configs/startup.sh | 0 integration/.bazelrc | 47 --- integration/.bazelversion | 1 - integration/MODULE.bazel | 61 ---- integration/README.md | 5 - .../bazel_common/score_modules.MODULE.bazel | 43 --- .../bazel_common/score_python.MODULE.bazel | 12 - integration/patches/baselibs/BUILD | 0 integration/scripts/qnx_credential_helper.py | 1 - known_good.json | 171 ++++++---- .../baselibs/0001-RH-exception-header.patch | 0 .../baselibs/0002-RH-algorithm-header.patch | 0 .../baselibs/003-acl-fixes-for-aarch64.patch | 0 .../baselibs}/BUILD | 0 .../baselibs/fix_hard_coded_amd64.patch | 0 .../runners => runners}/docker_x86_64/BUILD | 0 .../docker_x86_64/scripts/BUILD | 0 .../docker_x86_64/scripts/run_docker.sh | 0 .../runners => runners}/qemu_x86_64/BUILD | 0 .../qemu_x86_64/scripts/BUILD | 0 .../qemu_x86_64/scripts/qnx_wireshark.sh | 0 .../qemu_x86_64/scripts/run_qemu.sh | 0 .../scripts/run_qemu_portforward.sh | 0 score_modules.MODULE.bazel | 120 ------- integration/score_starter => score_starter | 0 score_toolchains.MODULE.bazel | 60 ---- scripts/known_good/models/__init__.py | 4 +- scripts/known_good/models/known_good.py | 39 ++- scripts/known_good/models/module.py | 279 +++++++++------ .../update_module_from_known_good.py | 97 ++++-- scripts/known_good/update_module_latest.py | 4 + scripts/quality_runners.py | 321 ++++++++++++++++++ scripts/run_unit_tests.sh | 91 ----- {integration/showcases => showcases}/BUILD | 0 .../showcases => showcases}/cli/BUILD | 0 .../showcases => showcases}/cli/README.md | 0 .../showcases => showcases}/cli/main.rs | 0 .../showcases => showcases}/kyron/BUILD | 0 .../kyron/kyron.score.json | 0 .../showcases => showcases}/kyron/main.rs | 0 .../orchestration_persistency/BUILD | 0 .../orchestration_persistency/main.rs | 0 .../orch_per.score.json | 0 .../simple_lifecycle/BUILD | 0 .../simple_lifecycle/configs/BUILD | 0 .../configs/cpp_supervised_app_demo.json | 0 .../simple_lifecycle/configs/hm_demo.json | 0 .../simple_lifecycle/configs/lm_demo.json | 0 .../configs/rust_supervised_app_demo.json | 0 .../simple_lifecycle/lifecycle_signal.sh | 0 .../simple_lifecycle.score.json | 0 .../showcases => showcases}/standalone/BUILD | 0 160 files changed, 1312 insertions(+), 946 deletions(-) rename .github/workflows/{unit_tests.yml => build_and_test_linux.yml} (63%) rename .github/workflows/{docs.yml => docs_cleanup.yml} (51%) create mode 100644 .github/workflows/known_good_correct.yml create mode 100644 .github/workflows/test_and_docs.yml rename {integration => bazel_common}/BUILD (100%) rename {integration/bazel_common => bazel_common}/bundlers.bzl (100%) rename integration/bazel_common/score_basic_tools.MODULE.bazel => bazel_common/score_basic_bazel.MODULE.bazel (65%) rename {integration/bazel_common => bazel_common}/score_gcc_toolchains.MODULE.bazel (100%) create mode 100644 bazel_common/score_modules_target_sw.MODULE.bazel create mode 100644 bazel_common/score_modules_tooling.MODULE.bazel create mode 100644 bazel_common/score_python.MODULE.bazel rename {integration/bazel_common => bazel_common}/score_qnx_toolchains.MODULE.bazel (100%) rename {integration/bazel_common => bazel_common}/score_rust_toolchains.MODULE.bazel (100%) delete mode 100644 build_config.json create mode 100644 docs/verification/coverage_summary.md create mode 100644 docs/verification/unit_test_summary.md create mode 100644 docs/verification/verification.rst rename {integration/bazel_common => feature_integration_tests}/BUILD (100%) rename {integration/feature_integration_tests => feature_integration_tests}/README.md (100%) rename {integration/feature_integration_tests => feature_integration_tests}/configs/BUILD (100%) rename {integration/feature_integration_tests => feature_integration_tests}/configs/etc/logging.json (100%) rename {integration/feature_integration_tests => feature_integration_tests}/configs/etc/mw_com_config.json (100%) rename {integration/feature_integration_tests => feature_integration_tests}/configs/qemu_target_config.json (100%) rename {integration/feature_integration_tests => feature_integration_tests}/itf/BUILD (100%) rename {integration/feature_integration_tests => feature_integration_tests}/itf/test_persistency.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/itf/test_scrample.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/itf/test_ssh.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/BUILD (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/conftest.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/fit_scenario.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/pytest.ini (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/requirements.txt (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/requirements.txt.lock (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/test_properties.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/tests/basic/test_orchestration_with_persistency.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_cases/tests/persistency/test_multiple_kvs_per_app.py (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/BUILD (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/kyron/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/kyron/runtime_helper.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/persistency/kvs_instance.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/internals/persistency/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/main.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/scenarios/basic/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/scenarios/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/scenarios/persistency/mod.rs (100%) rename {integration/feature_integration_tests => feature_integration_tests}/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs (100%) rename {integration/images => images}/autosd_x86_64/BUILD.bazel (100%) rename {integration/images => images}/autosd_x86_64/build/.gitignore (100%) rename {integration/images => images}/autosd_x86_64/build/README.md (100%) rename {integration/images => images}/autosd_x86_64/build/files/bluechi-agent-main.conf (100%) rename {integration/images => images}/autosd_x86_64/build/files/bluechi-agent-qm.conf (100%) rename {integration/images => images}/autosd_x86_64/build/files/bluechi-controller.conf (100%) rename {integration/images => images}/autosd_x86_64/build/files/lola-ipc-pub.service (100%) rename {integration/images => images}/autosd_x86_64/build/files/lola-ipc-sub.service (100%) rename {integration/images => images}/autosd_x86_64/build/files/lola-ipc-test (100%) rename {integration/images => images}/autosd_x86_64/build/files/lola-ipc-test.service (100%) rename {integration/images => images}/autosd_x86_64/build/image.aib.yml (100%) rename {integration/images => images}/autosd_x86_64/build/scripts/run_qemu (100%) rename {integration/images => images}/autosd_x86_64/build/vars-devel.yml (100%) rename {integration/images => images}/autosd_x86_64/build/vars.yml (100%) rename {integration/images => images}/ebclfsa_aarch64/BUILD (100%) rename {integration/images => images}/ebclfsa_aarch64/README.md (100%) rename {integration/images => images}/ebclfsa_aarch64/docs/system_setup.drawio.png (100%) rename {integration/images => images}/ebclfsa_aarch64/persistency_integration/BUILD (100%) rename {integration/images => images}/ebclfsa_aarch64/persistency_integration/run_qemu.sh (100%) rename {integration/images => images}/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh (100%) rename {integration/images => images}/ebclfsa_aarch64/scrample_integration/BUILD (100%) rename {integration/images => images}/ebclfsa_aarch64/scrample_integration/etc/logging.json (100%) rename {integration/images => images}/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json (100%) rename {integration/images => images}/ebclfsa_aarch64/scrample_integration/run_qemu.sh (100%) rename {integration/images => images}/ebclfsa_aarch64/scrample_integration/src/main.cc (100%) rename {integration/images => images}/linux_x86_64/BUILD (100%) rename {integration/images => images}/qnx_x86_64/BUILD (100%) rename {integration/images => images}/qnx_x86_64/build/BUILD (100%) rename {integration/images => images}/qnx_x86_64/build/init.build (100%) rename {integration/images => images}/qnx_x86_64/build/system.build (100%) rename {integration/images => images}/qnx_x86_64/configs/BUILD (100%) rename {integration/images => images}/qnx_x86_64/configs/dhcpcd.conf (100%) rename {integration/images => images}/qnx_x86_64/configs/group (100%) rename {integration/images => images}/qnx_x86_64/configs/hostname (100%) rename {integration/images => images}/qnx_x86_64/configs/network_capture.sh (100%) rename {integration/images => images}/qnx_x86_64/configs/network_setup.sh (100%) rename {integration/images => images}/qnx_x86_64/configs/network_setup_dhcp.sh (100%) rename {integration/images => images}/qnx_x86_64/configs/passwd (100%) rename {integration/images => images}/qnx_x86_64/configs/pci_hw.cfg (100%) rename {integration/images => images}/qnx_x86_64/configs/pci_server.cfg (100%) rename {integration/images => images}/qnx_x86_64/configs/profile (100%) rename {integration/images => images}/qnx_x86_64/configs/qcrypto.conf (100%) rename {integration/images => images}/qnx_x86_64/configs/ssh_host_rsa_key (100%) rename {integration/images => images}/qnx_x86_64/configs/ssh_host_rsa_key.pub (100%) rename {integration/images => images}/qnx_x86_64/configs/sshd_config (100%) rename {integration/images => images}/qnx_x86_64/configs/startup.sh (100%) delete mode 100644 integration/.bazelrc delete mode 100644 integration/.bazelversion delete mode 100644 integration/MODULE.bazel delete mode 100644 integration/README.md delete mode 100644 integration/bazel_common/score_modules.MODULE.bazel delete mode 100644 integration/bazel_common/score_python.MODULE.bazel delete mode 100644 integration/patches/baselibs/BUILD delete mode 120000 integration/scripts/qnx_credential_helper.py rename {integration/patches => patches}/baselibs/0001-RH-exception-header.patch (100%) rename {integration/patches => patches}/baselibs/0002-RH-algorithm-header.patch (100%) rename {integration/patches => patches}/baselibs/003-acl-fixes-for-aarch64.patch (100%) rename {integration/feature_integration_tests => patches/baselibs}/BUILD (100%) rename {integration/patches => patches}/baselibs/fix_hard_coded_amd64.patch (100%) rename {integration/runners => runners}/docker_x86_64/BUILD (100%) rename {integration/runners => runners}/docker_x86_64/scripts/BUILD (100%) rename {integration/runners => runners}/docker_x86_64/scripts/run_docker.sh (100%) rename {integration/runners => runners}/qemu_x86_64/BUILD (100%) rename {integration/runners => runners}/qemu_x86_64/scripts/BUILD (100%) rename {integration/runners => runners}/qemu_x86_64/scripts/qnx_wireshark.sh (100%) rename {integration/runners => runners}/qemu_x86_64/scripts/run_qemu.sh (100%) rename {integration/runners => runners}/qemu_x86_64/scripts/run_qemu_portforward.sh (100%) delete mode 100644 score_modules.MODULE.bazel rename integration/score_starter => score_starter (100%) delete mode 100644 score_toolchains.MODULE.bazel create mode 100644 scripts/quality_runners.py delete mode 100755 scripts/run_unit_tests.sh rename {integration/showcases => showcases}/BUILD (100%) rename {integration/showcases => showcases}/cli/BUILD (100%) rename {integration/showcases => showcases}/cli/README.md (100%) rename {integration/showcases => showcases}/cli/main.rs (100%) rename {integration/showcases => showcases}/kyron/BUILD (100%) rename {integration/showcases => showcases}/kyron/kyron.score.json (100%) rename {integration/showcases => showcases}/kyron/main.rs (100%) rename {integration/showcases => showcases}/orchestration_persistency/BUILD (100%) rename {integration/showcases => showcases}/orchestration_persistency/main.rs (100%) rename {integration/showcases => showcases}/orchestration_persistency/orch_per.score.json (100%) rename {integration/showcases => showcases}/simple_lifecycle/BUILD (100%) rename {integration/showcases => showcases}/simple_lifecycle/configs/BUILD (100%) rename {integration/showcases => showcases}/simple_lifecycle/configs/cpp_supervised_app_demo.json (100%) rename {integration/showcases => showcases}/simple_lifecycle/configs/hm_demo.json (100%) rename {integration/showcases => showcases}/simple_lifecycle/configs/lm_demo.json (100%) rename {integration/showcases => showcases}/simple_lifecycle/configs/rust_supervised_app_demo.json (100%) rename {integration/showcases => showcases}/simple_lifecycle/lifecycle_signal.sh (100%) rename {integration/showcases => showcases}/simple_lifecycle/simple_lifecycle.score.json (100%) rename {integration/showcases => showcases}/standalone/BUILD (100%) diff --git a/.bazelignore b/.bazelignore index ee0205ffc21..c795b054e5a 100644 --- a/.bazelignore +++ b/.bazelignore @@ -1,3 +1 @@ -autosd -ebclfsa -qnx_qemu +build \ No newline at end of file diff --git a/.bazelrc b/.bazelrc index ddd24a4ed9d..80cfd77a936 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,81 +1,69 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ common --registry=https://bcr.bazel.build +common --credential_helper=*.qnx.com=%workspace%/scripts/qnx_credential_helper.py +common --credential_helper_timeout="60s" +# Java +build --java_language_version=17 +build --tool_java_language_version=17 +build --java_runtime_version=remotejdk_17 +build --tool_java_runtime_version=remotejdk_17 -# Flags needed by score_baselibs and communication modules. -# Do not add more! -common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False -common --@score_baselibs//score/json:base_library=nlohmann -common --@score_communication//score/mw/com/flags:tracing_library=stub -common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False -common --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False -common --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False -common --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False -common --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False -common --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True -common --@score_logging//score/mw/log/flags:KRemote_Logging=False +build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False +build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False +build:_common --@score_baselibs//score/json:base_library=nlohmann +build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False +build:_common --@score_communication//score/mw/com/flags:tracing_library=stub +build:_common --cxxopt=-Wno-error=mismatched-new-delete +build:_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +build:_common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu +build:_common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix -# stop legacy behavior of creating __init__.py files -build --incompatible_default_to_explicit_init_py -build --incompatible_strict_action_env -build --experimental_retain_test_configuration_across_testonly #https://github.com/bazelbuild/bazel/issues/6842 +build:qnx-x86_64 --config=_common +build:qnx-x86_64 --noexperimental_merged_skyframe_analysis_execution +build:qnx-x86_64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 +build:qnx-x86_64 --incompatible_enable_cc_toolchain_resolution +build:qnx-x86_64 --incompatible_strict_action_env +build:qnx-x86_64 --sandbox_writable_path=/var/tmp +build:qnx-x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix +build:qnx-x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0-posix +build:qnx-x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64 +build:qnx-x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 -test --test_tag_filters=-manual -test --test_output=errors +build:itf-qnx-x86_64 --config=qnx-x86_64 +build:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu +build:itf-qnx-x86_64 --test_arg="--qemu" +build:itf-qnx-x86_64 --test_arg="--os=qnx" -build:shared --sandbox_writable_path=/var/tmp -build:shared --host_platform=@score_bazel_platforms//:x86_64-linux -build:x86_64-linux --config=shared -build:x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix -build:x86_64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu -build:x86_64-linux --features=-treat_warnings_as_errors # due to baselibs deprecations +build:linux-x86_64 --config=_common +build:linux-x86_64 --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix +build:linux-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix -# this is deprecated, use build:x86_64-linux instead -build:_bl_common --host_platform=@score_bazel_platforms//:x86_64-linux +build:eb-aarch64 --config=_common +build:eb-aarch64 --extra_toolchains=@gcc_toolchain//:aarch64_gcc_13 +build:eb-aarch64 --platforms=@score_toolchains_gcc//platforms:aarch64-linux +build:eb-aarch64 --spawn_strategy=local -# This config is for internal module usage ONLY. -build:bl-x86_64-qnx --config=_bl_common -build:bl-x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx -build:bl-x86_64-qnx --extra_toolchains=@toolchains_qnx_qcc//:qcc_x86_64 -# This config is for internal module usage ONLY. -build:bl-x86_64-linux-autosd --config=_bl_common -build:bl-x86_64-linux-autosd --define=score_sw_platform=autosd -build:bl-x86_64-linux-autosd --platforms=@score_bazel_platforms//:x86_64-linux -build:bl-x86_64-linux-autosd --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 -build:bl-x86_64-linux-autosd --force_pic +build:autosd-x86_64 --config=_common +build:autosd-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux +build:autosd-x86_64 --force_pic +build:autosd-x86_64 --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 +build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 -# This config is for internal module usage ONLY. -test:bl-x86_64-linux --config=_bl_common -test:bl-x86_64-linux --build_tests_only -test:bl-x86_64-linux --test_tag_filters=-manual -test:bl-x86_64-linux --test_output=errors -# config from communication .bazelrc file -# unshare /dev/shm and /tmp -test --sandbox_tmpfs_path=/dev/shm -test --sandbox_tmpfs_path=/tmp +test:unit-tests --config=linux-x86_64 +test:unit-tests --build_tests_only -# Java -build --java_language_version=17 -build --tool_java_language_version=17 -build --java_runtime_version=remotejdk_17 -build --tool_java_runtime_version=remotejdk_17 +# Coverage configuration for C++ +coverage --features=coverage +coverage --combined_report=lcov # user specific overrides (like proxy settings) -try-import %workspace%/user.bazelrc +try-import %workspace%/user.bazelrc \ No newline at end of file diff --git a/.bazelversion b/.bazelversion index 56b6be4ebb2..e7fdef7e2e6 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -8.3.1 +8.4.2 diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 6ad6a755d71..f6428275871 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -11,17 +11,18 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: AutoSD - Build & Test +name: AutoSD - Build & Integration Test on: pull_request: types: [opened, reopened, synchronize] - paths: - - 'integration/**' + merge_group: types: [checks_requested] - paths: - - 'integration/**' + + push: + branches: + - main jobs: build: @@ -33,7 +34,12 @@ jobs: uses: actions/checkout@v4 - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.9.1 + uses: bazel-contrib/setup-bazel@0.18.0 + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }} + repository-cache: true + cache-save: ${{ github.event_name == 'push' }} - name: Install System Dependencies run: | @@ -43,7 +49,7 @@ jobs: - name: Build Showcases RPMs run: | bazel build --config autosd-x86_64 //images/autosd_x86_64:score-reference-integration - working-directory: ./integration/images/autosd_x86_64 + working-directory: ./images/autosd_x86_64 - name: Copy RPMs run: | @@ -52,16 +58,16 @@ jobs: cp bazel-bin/images/autosd_x86_64/score-reference-integration-0.6.0-1.x86_64.rpm ./images/autosd_x86_64/build/rpms createrepo_c ./images/autosd_x86_64/build/rpms/ ls -l ./images/autosd_x86_64/build/rpms/ - working-directory: ./integration - name: Install AIB Tools run: | curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads" chmod +x auto-image-builder.sh - working-directory: ./integration/images/autosd_x86_64/build + working-directory: ./images/autosd_x86_64/build - name: Build AutoSD QEMU (x86_64) run: | + export AIB_PODMAN_OPTIONS="--tmpfs /var/tmp" export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage mkdir -p _build/containers-storage @@ -78,7 +84,7 @@ jobs: sudo -E ./auto-image-builder.sh to-disk-image localhost/score:latest _build/disk.qcow2 sudo chown $(id -u):$(id -u) _build/disk.qcow2 - working-directory: ./integration/images/autosd_x86_64/build + working-directory: ./images/autosd_x86_64/build - name: Enable KVM group perms run: | @@ -95,7 +101,7 @@ jobs: ./scripts/run_qemu sshcmd 'cat /etc/os-release' - working-directory: ./integration/images/autosd_x86_64/build + working-directory: ./images/autosd_x86_64/build env: SSH_PASSWORD: password @@ -103,4 +109,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: autosd10-score-reference_integration-x86_64.qcow2 - path: integration/images/autosd_x86_64/build/_build/disk.qcow2 + path: images/autosd_x86_64/build/_build/disk.qcow2 diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index 1d644ab69d5..88a7f662e87 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -11,18 +11,17 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: EB Corbos Linux for Safety Applications - Build & Test +name: EB Corbos Linux for Safety - Build & Integration Test on: pull_request: types: [opened, reopened, synchronize] - paths: - - 'integration/**' merge_group: types: [checks_requested] - paths: - - 'integration/**' + push: + branches: + - main jobs: build: name: aarch64 @@ -33,11 +32,18 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + + - name: Setup Bazel + uses: bazel-contrib/setup-bazel@0.18.0 + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }} + repository-cache: true + cache-save: ${{ github.event_name == 'push' }} - name: Build for EB corbos Linux for Safety Applications and run tests run: | bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run - working-directory: ./integration - name: Upload test logs uses: actions/upload-artifact@v5 diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/build_and_test_linux.yml similarity index 63% rename from .github/workflows/unit_tests.yml rename to .github/workflows/build_and_test_linux.yml index 4675e727e64..317deb7d84c 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -11,7 +11,7 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: Execute Unit Tests +name: Linux - Build & Integration Test on: workflow_dispatch: pull_request: @@ -19,9 +19,9 @@ on: types: [created] push: branches: - - main + - main jobs: - integration_test: + x86_64: runs-on: ubuntu-latest permissions: contents: write # required to upload release assets @@ -51,47 +51,17 @@ jobs: uses: actions/checkout@v4.2.2 - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.15.0 + uses: bazel-contrib/setup-bazel@0.18.0 with: bazelisk-cache: true disk-cache: ${{ github.workflow }} repository-cache: true + cache-save: ${{ github.event_name == 'push' }} - - name: Bazel build targets + - name: Build image run: | - scripts/run_unit_tests.sh - cat _logs/ut_summary.md - - - name: Publish build summary - if: always() + bazel build --config=linux-x86_64 //images/linux_x86_64:image + + - name: Integration tests run: | - if [ -f _logs/ut_summary.md ]; then - cat _logs/ut_summary.md >> "$GITHUB_STEP_SUMMARY" - else - echo "No build summary file found (_logs/ut_summary.md)" >> "$GITHUB_STEP_SUMMARY" - fi - - - name: Upload logs artifact - if: always() - uses: actions/upload-artifact@v4 - with: - name: bazel-build-logs - path: _logs/ - if-no-files-found: warn - retention-days: 14 - - - name: Create archive of test reports - if: github.ref_type == 'tag' - run: | - mkdir -p artifacts - find bazel-testlogs/external -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/ - zip -r ${{ github.event.repository.name }}_test_reports.zip artifacts/ - shell: bash - - - name: Upload release asset (attach ZIP to GitHub Release) - uses: softprops/action-gh-release@v2.5.0 - if: github.ref_type == 'tag' - with: - files: ${{ github.event.repository.name }}_test_reports.zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + echo "NOT YET IMPLEMENTED" diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index a1509c51206..e67e5e568c4 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -11,16 +11,17 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: QNX8 - Build & Test +name: QNX8 - Build & Integration Test on: pull_request_target: types: [opened, reopened, synchronize] - paths: - - 'integration/**' + merge_group: types: [checks_requested] - paths: - - 'integration/**' + + push: + branches: + - main jobs: qnx-build-x86_64: @@ -41,7 +42,7 @@ jobs: - name: Setup Bazel with shared caching uses: bazel-contrib/setup-bazel@0.18.0 with: - disk-cache: ${{ inputs.bazel-disk-cache }} + disk-cache: ${{ github.workflow }} repository-cache: true bazelisk-cache: true cache-save: ${{ github.event_name == 'push' }} @@ -62,7 +63,6 @@ jobs: SCORE_QNX_PASSWORD: ${{ secrets.SCORE_QNX_PASSWORD }} run: | bazel build --config qnx-x86_64 //images/qnx_x86_64:image - working-directory: ./integration - name: Cleanup QNX license if: always() diff --git a/.github/workflows/codeql-multiple-repo-scan.yml b/.github/workflows/codeql-multiple-repo-scan.yml index 47fa3a5cd2b..c23e71b83fe 100644 --- a/.github/workflows/codeql-multiple-repo-scan.yml +++ b/.github/workflows/codeql-multiple-repo-scan.yml @@ -71,7 +71,7 @@ jobs: # Create repos.json from known_good.json # This jq command transforms the 'modules' object into an array of repository objects # with 'name', 'url', 'version' (branch/tag/hash), and 'path'. - jq '[.modules | to_entries[] | { + jq '[.modules.target_sw | to_entries[] | { name: .key, url: .value.repo, version: (.value.branch // .value.hash // .value.version), @@ -85,9 +85,9 @@ jobs: # The following GITHUB_OUTPUT variables are set for each module. # These might be useful for other steps, but are not directly used by the 'checkout-repos' step # which now reads 'repos.json' directly. - echo "MODULE_COUNT=$(jq '.modules | length' "$JSON_FILE")" >> $GITHUB_OUTPUT + echo "MODULE_COUNT=$(jq '.modules.target_sw | length' "$JSON_FILE")" >> $GITHUB_OUTPUT - jq -c '.modules | to_entries[]' "$JSON_FILE" | while read -r module_entry; do + jq -c '.modules.target_sw | to_entries[]' "$JSON_FILE" | while read -r module_entry; do module_name=$(echo "$module_entry" | jq -r '.key') repo_url=$(echo "$module_entry" | jq -r '.value.repo // empty') version=$(echo "$module_entry" | jq -r '.value.version // empty') diff --git a/.github/workflows/docs.yml b/.github/workflows/docs_cleanup.yml similarity index 51% rename from .github/workflows/docs.yml rename to .github/workflows/docs_cleanup.yml index fa0420bcac7..cfa4ae24449 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs_cleanup.yml @@ -11,32 +11,19 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: Documentation +name: Documentation Cleanup permissions: contents: write pages: write - pull-requests: write id-token: write on: - pull_request_target: # Allows forks to trigger the docs build - types: [opened, reopened, synchronize] - push: - branches: - - main - merge_group: - types: [checks_requested] + schedule: + - cron: '0 0 * * *' # Runs every day at midnight UTC jobs: - build-docs: - uses: eclipse-score/cicd-workflows/.github/workflows/docs.yml@main - permissions: - contents: write - pages: write - pull-requests: write - id-token: write - - with: - bazel-target: "//:docs_combo_experimental -- --github_user=${{ github.repository_owner }} --github_repo=${{ github.event.repository.name }}" - retention-days: 3 + docs-cleanup: + uses: eclipse-score/cicd-workflows/.github/workflows/docs-cleanup.yml@main + secrets: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/known_good_correct.yml b/.github/workflows/known_good_correct.yml new file mode 100644 index 00000000000..83c7e88cf45 --- /dev/null +++ b/.github/workflows/known_good_correct.yml @@ -0,0 +1,42 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: Known Good Matches Bazel + +on: + pull_request: + types: [opened, reopened, synchronize] + merge_group: + types: [checks_requested] + +permissions: + contents: write + +jobs: + check-known-good-matches-bazel: + name: Check Known Good Matches with Bazel + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 + - name: Check + run: | + ls -la + scripts/known_good/update_module_from_known_good.py --known known_good.json --output-dir integration/bazel_common + if git diff --quiet; then + echo "No changes" + else + echo "You have committed not aligned known_good.json to the code. Please run scripts/known_good/update_module_from_known_good.py and commit the changes to the code. Here are the differences:" + git diff + exit 1 + fi diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml new file mode 100644 index 00000000000..536b01f3714 --- /dev/null +++ b/.github/workflows/test_and_docs.yml @@ -0,0 +1,212 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +name: Code Quality & Documentation + +permissions: + contents: write + pages: write + pull-requests: write + id-token: write + +on: + pull_request_target: # Allows forks to trigger the docs build + types: [opened, reopened, synchronize] + push: + branches: + - main + merge_group: + types: [checks_requested] + release: + types: [created] + +jobs: + test_and_docs: + runs-on: ubuntu-22.04 + permissions: + contents: write # required to upload release assets + pull-requests: write + + steps: + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 + + - name: Setup Bazel + uses: bazel-contrib/setup-bazel@0.18.0 + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }} + repository-cache: true + cache-save: ${{ github.event_name == 'push' }} + + - name: Set up Python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install lcov + run: | + sudo apt-get update + sudo apt-get install -y lcov + + - name: Checkout repository (pull_request_target via workflow_call) + if: ${{ github.event_name == 'pull_request_target' }} + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref || github.event.pull_request.head.ref || github.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + + - name: Checkout repository + if: ${{ github.event_name != 'pull_request_target' }} + uses: actions/checkout@v4 + + - name: Execute Unit Tests with Coverage Analysis + run: | + python ./scripts/quality_runners.py + + - name: Publish build summary + if: always() + run: | + if [ -f docs/verification/unit_test_summary.md ]; then + cat docs/verification/unit_test_summary.md >> "$GITHUB_STEP_SUMMARY" + else + echo "No build summary file found (docs/verification/unit_test_summary.md)" >> "$GITHUB_STEP_SUMMARY" + fi + echo "" >> "$GITHUB_STEP_SUMMARY" # Add a newline for better formatting + if [ -f docs/verification/coverage_summary.md ]; then + cat docs/verification/coverage_summary.md >> "$GITHUB_STEP_SUMMARY" + else + echo "No coverage summary file found (docs/verification/coverage_summary.md)" >> "$GITHUB_STEP_SUMMARY" + fi + + - name: Create archive of test reports + if: github.ref_type == 'tag' + run: | + mkdir -p artifacts + find bazel-testlogs/external -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/ + zip -r ${{ github.event.repository.name }}_test_reports.zip artifacts/ + shell: bash + + - name: Upload release asset (attach ZIP to GitHub Release) + uses: softprops/action-gh-release@v2.5.0 + if: github.ref_type == 'tag' + with: + files: ${{ github.event.repository.name }}_test_reports.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install Graphviz + uses: eclipse-score/apt-install@main + with: + packages: graphviz + cache: false + + - name: Build documentation + run: | + bazel --output_base="/home/runner/.cache/bazel/output_base" run \ + --repo_contents_cache="/home/runner/.cache/bazel/repo_contents" \ + --repository_cache="/home/runner/.cache/bazel/repo" \ + --disk_cache="/home/runner/.cache/bazel/disk" \ + //:docs_combo_experimental -- \ + --github_user=${{ github.repository_owner }} \ + --github_repo=${{ github.event.repository.name }} + + tar -cf github-pages.tar _build + + - name: Upload documentation artifact + uses: actions/upload-artifact@v4.4.0 + with: + name: github-pages-${{ github.event.pull_request.head.sha || github.sha }} + path: github-pages.tar + retention-days: 3 + if-no-files-found: error + + docs-deploy: + name: Deploy Documentation to GitHub Pages + runs-on: ${{ vars.REPO_RUNNER_LABELS && fromJSON(vars.REPO_RUNNER_LABELS) || 'ubuntu-latest' }} + needs: test_and_docs + permissions: + pages: write + id-token: write + contents: write + pull-requests: write + steps: + - name: Ensure gh-pages branch exists with initial files + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + set -e + if ! git ls-remote --exit-code --heads "https://x-access-token:${GH_TOKEN}@github.com/${REPO}.git" gh-pages; then + echo "gh-pages branch does not exist. Creating it..." + git clone --depth=1 "https://x-access-token:${GH_TOKEN}@github.com/${REPO}.git" repo + cd repo + git fetch origin main --depth=1 + AUTHOR_NAME=$(git log origin/main -1 --pretty=format:'%an') + AUTHOR_EMAIL=$(git log origin/main -1 --pretty=format:'%ae') + git config user.name "$AUTHOR_NAME" + git config user.email "$AUTHOR_EMAIL" + echo "Using commit identity: $AUTHOR_NAME <$AUTHOR_EMAIL>" + + git checkout --orphan gh-pages + git rm -rf . || true + REPO_NAME=$(basename "${REPO}") + OWNER_NAME="${REPO%%/*}" + + touch versions.json + echo "[" > versions.json + echo " {" >> versions.json + echo " \"version\": \"main\"," >> versions.json + echo " \"url\": \"https://${OWNER_NAME}.github.io/${REPO_NAME}/main/\"" >> versions.json + echo " }" >> versions.json + echo "]" >> versions.json + + touch index.html + echo '' > index.html + echo '' >> index.html + echo '' >> index.html + echo ' ' >> index.html + echo ' ' >> index.html + echo ' Redirecting...' >> index.html + echo '' >> index.html + echo '' >> index.html + echo '

If you are not redirected, click here.

' >> index.html + echo '' >> index.html + echo '' >> index.html + + touch .nojekyll + git add versions.json index.html .nojekyll + git commit -m "Initialize gh-pages branch with versions.json and index.html" + git push origin gh-pages + cd .. + rm -rf repo + else + echo "gh-pages branch exists. Skipping creation." + fi + - name: Checkout repository + uses: actions/checkout@v4.2.2 + + - name: Download documentation artifact + uses: actions/download-artifact@v4.1.8 + with: + name: github-pages-${{ github.event.pull_request.head.sha || github.sha }} + + - name: Untar documentation artifact + run: mkdir -p extracted_docs && tar -xf github-pages.tar -C extracted_docs + + - name: Deploy 🚀 + id: pages-deployment + uses: eclipse-score/cicd-workflows/.github/actions/deploy-versioned-pages@main + with: + source_folder: extracted_docs/_build + deployment_type: ${{ inputs.deployment_type }} diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index f1e67e95abf..96850ed2d2c 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -23,6 +23,7 @@ on: # - cron: '30 2 * * *' # Every night at 02:30 UTC on main branch jobs: integration_test: + if: false # Temporarily disabled until we get things sorted out uses: ./.github/workflows/reusable_smoke-test.yml secrets: inherit with: diff --git a/.gitignore b/.gitignore index 379315e0cc6..a135a99038c 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,5 @@ __pycache__/ /score_*/ /.gita/ /.gita-workspace.csv -integration/build +build +artifacts diff --git a/BUILD b/BUILD index 2d6570fe8e5..f8273c81269 100644 --- a/BUILD +++ b/BUILD @@ -19,16 +19,9 @@ docs( #"@score_persistency//:needs_json", # cannot be included, as it does not contain any needs? #"@score_orchestrator//:needs_json", # some issue about score_toolchains_qnx? #"@score_communication//:needs_json", # no docs yet? - "@score_feo//:needs_json", + # "@score_feo//:needs_json", "@score_docs_as_code//:needs_json", "@score_process//:needs_json", ], source_dir = "docs", ) - -# Simple filegroup target to demonstrate the build system works -filegroup( - name = "readme", - srcs = ["README.md"], - visibility = ["//visibility:public"], -) diff --git a/MODULE.bazel b/MODULE.bazel index 2b7e74e2761..b6ea37b719d 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -10,53 +10,55 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - module( - name = "score_reference_integration", - version = "0.5.0-beta", + name = "score_ref_int", + version = "0.6.0", compatibility_level = 0, ) -include("//:score_modules.MODULE.bazel") -include("//:score_toolchains.MODULE.bazel") +# Include common modules +include("//bazel_common:score_basic_bazel.MODULE.bazel") -## Python -bazel_dep(name = "rules_python", version = "1.8.3") +# GCC toolchains +include ("//bazel_common:score_gcc_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain -PYTHON_VERSION = "3.12" +# GCC toolchains +include ("//bazel_common:score_qnx_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - configure_coverage_tool = True, - is_default = True, - python_version = PYTHON_VERSION, -) -use_repo(python) +# Rust toolchains +include ("//bazel_common:score_rust_toolchains.MODULE.bazel") + +# Python support +include("//bazel_common:score_python.MODULE.bazel") + +# Score modules tools +include("//bazel_common:score_modules_tooling.MODULE.bazel") -# Special imports for certain modules +# Score modules +include("//bazel_common:score_modules_target_sw.MODULE.bazel") -# communication module dependencies -# archive_override are not forwarded by bazel_dep, so we need to redefine it here bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") archive_override( module_name = "rules_boost", - strip_prefix = "rules_boost-master", urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], + strip_prefix = "rules_boost-master", ) -# git_override are not forwarded by bazel_dep, so we need to redefine it here +# TRLC dependency for requirements traceability bazel_dep(name = "trlc") git_override( module_name = "trlc", - remote = "https://github.com/bmw-software-engineering/trlc.git", commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release + remote = "https://github.com/bmw-software-engineering/trlc.git", ) -# imports for the feature showcase module -bazel_dep(name = "rules_rust", version = "0.67.0") -bazel_dep(name = "score_itf", version = "0.1.0") -bazel_dep(name = "score_crates", version = "0.0.6") -single_version_override( - module_name = "score_crates", - version = "0.0.6", +# Currently required for ifs tooling +bazel_dep(name = "score_toolchains_qnx", version = "0.0.7") +toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency=True) +toolchains_qnx.sdp( + sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", + strip_prefix = "installation", + url = "https://www.qnx.com/download/download/79858/installation.tgz", ) +use_repo(toolchains_qnx, "toolchains_qnx_sdp") +use_repo(toolchains_qnx, "toolchains_qnx_ifs") diff --git a/README.md b/README.md index 8a1e2712c03..c58358601fb 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,11 @@ The reference integration workspace serves as a single Bazel build environment t - Prepare for release validation workflows -## Structure of integration folder +## Get started -> [!NOTE] -> For more details about the integration folder structure and deployment showcases, see [integration/README.md](integration/README.md). +Simply run `./score_starter` and select which integration You want to run. Once running, You will be guided by our welcome cli to run selected examples. + +## Structure of repo Intention for each folder is described below @@ -34,7 +35,7 @@ Used to keep `S-CORE` wide **showcases** implementation to showcase S-CORE in ce #### cli Contains a CLI tool to be used on runner that is showcasing the S-CORE functionality. It will provide superior user experience and will guide user to run examples. -How to use it in Your image, look [here](./integration/showcases/cli/README.md) +How to use it in Your image, look [here](./showcases/cli/README.md) ### images Used to keep concrete `images` for given target platform as bazel modules. Each platform shall have it's own folder with name `{platform}_{arch}` ie. `qnx_aarch64`. @@ -46,74 +47,21 @@ This `images` shall: ### runners Used to keep thin logic ro reuse `runners` between images, like docker runner etc. - - - - ## Docs To generate a full documentation of all integrated modules, run: ```bash bazel run //:docs_combo_experimental ``` -## Working Builds ✅ - -The following modules build successfully with the `x86_64-linux` configuration: - -### Baselibs -```bash -bazel build --config x86_64-linux @score_baselibs//score/... --verbose_failures -bazel build --config x86_64-linux @score_baselibs//score/... --verbose_failures -``` - -### Communication -```bash -bazel build --config x86_64-linux @score_communication//score/mw/com:com --verbose_failures -``` - -### Persistency -```bash -bazel build --config x86_64-linux \ - @score_persistency//src/cpp/src/... \ - @score_persistency//src/rust/... \ - --verbose_failures -``` - -> Note: Python tests for `@score_persistency` cannot be built from this integration workspace due to Bazel external repository visibility limitations. The pip extension and Python dependencies must be accessed within their defining module. - -### Orchestration and `kyron` - async runtime for Rust - -```bash -bazel build --config x86_64-linux @score_orchestrator//src/... -``` - -### Lifecycle - -```bash -bazel build --config x86_64-linux @score_lifecycle_health//src/... --verbose_failures -``` - - -## Feature showcase examples -The examples that are aiming to showcase features provided by S-CORE are located in `feature_showcase` folder. -You can run them currently for host platform using `--config x86_64-linux`. - -Execute `bazel query //feature_showcase/...` to obtain list of targets that You can run. - - -```bash -bazel build --config x86_64-linux @score_orchestrator//src/... --verbose_failures -``` - ## Operating system integrations > [!NOTE] -> Integrations of Eclipse S-CORE into reference operating systems are currently realized as **independent Bazel projects**. > Please refer to the README documents in the respective sub-directories for details about the specific integration. -* [QNX](./qnx_qemu/README.md) -* [Red Hat AutoSD](./autosd/build/README.md) -* [Elektrobit corbos Linux for Safety Applications](./ebclfsa/README.md) +* [QNX](./images/qnx_x86_64//README.md) +* [Red Hat AutoSD](./images/autosd_x86_64/build/README.md) +* [Elektrobit corbos Linux for Safety Applications](./images/ebclfsa_aarch64/README.md) +* [Linux x86_64]() ## Workspace support @@ -268,4 +216,4 @@ local_path_override(module_name = "score_tooling", path = "../tooling") Use `scripts/generate_rust_analyzer_support.sh` to generate rust_analyzer settings that will let VS Code work. ## 🗂 Notes -Keep this file updated as integration issues are resolved. Prefer converting ad-hoc shell steps into Bazel rules or documented scripts under `scripts/` for repeatability. +Keep this file updated as integration issues are resolved. Prefer converting ad-hoc shell steps into Bazel rules or documented scripts under `scripts/` for repeatability. \ No newline at end of file diff --git a/integration/BUILD b/bazel_common/BUILD similarity index 100% rename from integration/BUILD rename to bazel_common/BUILD diff --git a/integration/bazel_common/bundlers.bzl b/bazel_common/bundlers.bzl similarity index 100% rename from integration/bazel_common/bundlers.bzl rename to bazel_common/bundlers.bzl diff --git a/integration/bazel_common/score_basic_tools.MODULE.bazel b/bazel_common/score_basic_bazel.MODULE.bazel similarity index 65% rename from integration/bazel_common/score_basic_tools.MODULE.bazel rename to bazel_common/score_basic_bazel.MODULE.bazel index 765853afd05..65b9eeca8b9 100644 --- a/integration/bazel_common/score_basic_tools.MODULE.bazel +++ b/bazel_common/score_basic_bazel.MODULE.bazel @@ -1,15 +1,6 @@ bazel_dep(name = "rules_shell", version = "0.6.0") bazel_dep(name = "rules_cc", version = "0.1.1") bazel_dep(name = "rules_pkg", version = "1.2.0") -bazel_dep(name = "score_bazel_platforms", version = "0.0.4") -bazel_dep(name = "score_crates", version = "0.0.6") -git_override( - module_name = "score_crates", - remote = "https://github.com/eclipse-score/score-crates.git", - commit = "ff8f312cd8ac221ff7562496c7f4d6b9b5c8ebb9", -) - - bazel_dep(name = "rules_rpm", version = "0.1.0") git_override( module_name = "rules_rpm", diff --git a/integration/bazel_common/score_gcc_toolchains.MODULE.bazel b/bazel_common/score_gcc_toolchains.MODULE.bazel similarity index 100% rename from integration/bazel_common/score_gcc_toolchains.MODULE.bazel rename to bazel_common/score_gcc_toolchains.MODULE.bazel diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel new file mode 100644 index 00000000000..f55d192e315 --- /dev/null +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -0,0 +1,75 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Generated from known_good.json at 2026-02-10T21:12:42+00:00Z +# Do not edit manually - use scripts/known_good/update_module_from_known_good.py + +bazel_dep(name = "score_baselibs") +single_version_override( + module_name = "score_baselibs", + version = "0.1.3", + patches = [ + "//patches/baselibs:003-acl-fixes-for-aarch64.patch", + "//patches/baselibs:0001-RH-exception-header.patch", + "//patches/baselibs:0002-RH-algorithm-header.patch", + ], + patch_strip = 1, +) + +bazel_dep(name = "score_baselibs_rust") +git_override( + module_name = "score_baselibs_rust", + remote = "https://github.com/eclipse-score/baselibs_rust.git", + commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", +) + +bazel_dep(name = "score_communication") +single_version_override( + module_name = "score_communication", + version = "0.1.1", +) + +bazel_dep(name = "score_persistency") +git_override( + module_name = "score_persistency", + remote = "https://github.com/eclipse-score/persistency.git", + commit = "0037034bf853e5f955f028fab54ed319fb0441c3", +) + +bazel_dep(name = "score_orchestrator") +git_override( + module_name = "score_orchestrator", + remote = "https://github.com/eclipse-score/orchestrator.git", + commit = "18e136c34750c5db707f27f917d52efc7541e087", +) + +bazel_dep(name = "score_kyron") +git_override( + module_name = "score_kyron", + remote = "https://github.com/eclipse-score/kyron.git", + commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", +) + +bazel_dep(name = "score_lifecycle_health") +git_override( + module_name = "score_lifecycle_health", + remote = "https://github.com/eclipse-score/lifecycle.git", + commit = "84303c2e48c7e8e2481752170efe82d0afd45f1e", +) + +bazel_dep(name = "score_scrample") +git_override( + module_name = "score_scrample", + remote = "https://github.com/eclipse-score/scrample.git", + commit = "0c2e72fc2a72a7dce4d9ddeec8470a861b08d5e1", +) diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel new file mode 100644 index 00000000000..380bc1836bc --- /dev/null +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -0,0 +1,67 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Generated from known_good.json at 2026-02-10T21:12:42+00:00Z +# Do not edit manually - use scripts/known_good/update_module_from_known_good.py + +bazel_dep(name = "score_crates") +single_version_override( + module_name = "score_crates", + version = "0.0.7", +) + +bazel_dep(name = "score_itf") +single_version_override( + module_name = "score_itf", + version = "0.1.0", +) + +bazel_dep(name = "score_tooling") +git_override( + module_name = "score_tooling", + remote = "https://github.com/eclipse-score/tooling.git", + commit = "17671026150db4b4cc1b35e48af81b97e13685e5", +) + +bazel_dep(name = "score_platform") +git_override( + module_name = "score_platform", + remote = "https://github.com/eclipse-score/score.git", + commit = "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e", +) + +bazel_dep(name = "score_bazel_platforms") +single_version_override( + module_name = "score_bazel_platforms", + version = "0.0.4", +) + +bazel_dep(name = "score_test_scenarios") +git_override( + module_name = "score_test_scenarios", + remote = "https://github.com/eclipse-score/testing_tools.git", + commit = "6b5e85863e8fb5687251c19f5bb81e0a3afdf581", +) + +bazel_dep(name = "score_docs_as_code") +single_version_override( + module_name = "score_docs_as_code", + version = "3.0.1", +) + +bazel_dep(name = "score_process") +git_override( + module_name = "score_process", + remote = "https://github.com/eclipse-score/process_description.git", + commit = "6c772cf05a493218a5ac6071361bf0b66c5427b2", +) diff --git a/bazel_common/score_python.MODULE.bazel b/bazel_common/score_python.MODULE.bazel new file mode 100644 index 00000000000..7c3453ff450 --- /dev/null +++ b/bazel_common/score_python.MODULE.bazel @@ -0,0 +1,21 @@ + +bazel_dep(name = "rules_python", version = "1.0.0") + +PYTHON_VERSION = "3.12" + +python = use_extension("@rules_python//python/extensions:python.bzl", "python") +python.toolchain( + configure_coverage_tool = True, + is_default = True, + python_version = PYTHON_VERSION, +) +use_repo(python) + +pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True) +pip.parse( + hub_name = "pip_score_venv_test", + python_version = PYTHON_VERSION, + requirements_lock = "//feature_integration_tests/test_cases:requirements.txt.lock", +) + +use_repo(pip, "pip_score_venv_test") diff --git a/integration/bazel_common/score_qnx_toolchains.MODULE.bazel b/bazel_common/score_qnx_toolchains.MODULE.bazel similarity index 100% rename from integration/bazel_common/score_qnx_toolchains.MODULE.bazel rename to bazel_common/score_qnx_toolchains.MODULE.bazel diff --git a/integration/bazel_common/score_rust_toolchains.MODULE.bazel b/bazel_common/score_rust_toolchains.MODULE.bazel similarity index 100% rename from integration/bazel_common/score_rust_toolchains.MODULE.bazel rename to bazel_common/score_rust_toolchains.MODULE.bazel diff --git a/build_config.json b/build_config.json deleted file mode 100644 index 0c9c0e7005c..00000000000 --- a/build_config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "modules": { - "score_baselibs": { - "build_targets": "@score_baselibs//score/..." - }, - "score_baselibs_rust": { - "build_targets": "@score_baselibs_rust//src/..." - }, - "score_communication": { - "build_targets": "@score_communication//score/mw/com:com" - }, - "score_persistency": { - "build_targets": "@score_persistency//src/cpp/src/... @score_persistency//src/rust/..." - }, - "score_kyron": { - "build_targets": "@score_kyron//src/..." - }, - "score_orchestrator": { - "build_targets": "@score_orchestrator//src/..." - }, - "score_test_scenarios": { - "build_targets": "@score_test_scenarios//test_scenarios_rust:test_scenarios_rust @score_test_scenarios//test_scenarios_cpp:test_scenarios_cpp" - }, - "score_feo": { - "build_targets": "-- @score_feo//feo/... @score_feo//feo-com/... @score_feo//feo-cpp-build/... @score_feo//feo-cpp-macros/... -@score_feo//feo:libfeo_rust -@score_feo//feo:libfeo_recording_rust -@score_feo//feo-com:libfeo_com_rust -@score_feo//examples/rust/..." - }, - "score_logging": { - "build_targets": "@score_logging//score/mw/log" - }, - "score_lifecycle_health": { - "build_targets": "@score_lifecycle_health//src/..." - } - } -} diff --git a/docs/conf.py b/docs/conf.py index f4e526ffc19..f2057673436 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -24,3 +24,9 @@ "sphinxcontrib.plantuml", "score_sphinx_bundle", ] + +# Enable markdown rendering +source_suffix = { + ".rst": "restructuredtext", + ".md": "markdown", +} diff --git a/docs/index.rst b/docs/index.rst index 2969ed29fad..a9ae458ee31 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,6 +17,11 @@ Reference Integration Documentation Newest Release Notes: :need:`doc__score_v05_beta_release_note` +Verification Reports Summaries +------------------------------ + +.. toctree:: + verification/verification .. if-collection:: score_platform @@ -29,7 +34,6 @@ Newest Release Notes: :need:`doc__score_v05_beta_release_note` place_holder/persistency place_holder/orchestrator place_holder/communication - FEO <_collections/score_feo/docs/index> .. toctree:: :maxdepth: 1 diff --git a/docs/verification/coverage_summary.md b/docs/verification/coverage_summary.md new file mode 100644 index 00000000000..36c88db16bb --- /dev/null +++ b/docs/verification/coverage_summary.md @@ -0,0 +1,3 @@ +# Coverage Analysis Summary + +## Template for a table with Coverage execution summary diff --git a/docs/verification/unit_test_summary.md b/docs/verification/unit_test_summary.md new file mode 100644 index 00000000000..05361c5a457 --- /dev/null +++ b/docs/verification/unit_test_summary.md @@ -0,0 +1,3 @@ +# Unit Test Execution Summary + +## Template for a table with Unit Test execution summary diff --git a/docs/verification/verification.rst b/docs/verification/verification.rst new file mode 100644 index 00000000000..7005f8a90a9 --- /dev/null +++ b/docs/verification/verification.rst @@ -0,0 +1,22 @@ +.. + # ******************************************************************************* + # Copyright (c) 2025 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Verification Reports Summaries +============================== + +.. toctree:: + :titlesonly: + + Unit Tests Summary + Coverage Analysis Summary diff --git a/integration/bazel_common/BUILD b/feature_integration_tests/BUILD similarity index 100% rename from integration/bazel_common/BUILD rename to feature_integration_tests/BUILD diff --git a/integration/feature_integration_tests/README.md b/feature_integration_tests/README.md similarity index 100% rename from integration/feature_integration_tests/README.md rename to feature_integration_tests/README.md diff --git a/integration/feature_integration_tests/configs/BUILD b/feature_integration_tests/configs/BUILD similarity index 100% rename from integration/feature_integration_tests/configs/BUILD rename to feature_integration_tests/configs/BUILD diff --git a/integration/feature_integration_tests/configs/etc/logging.json b/feature_integration_tests/configs/etc/logging.json similarity index 100% rename from integration/feature_integration_tests/configs/etc/logging.json rename to feature_integration_tests/configs/etc/logging.json diff --git a/integration/feature_integration_tests/configs/etc/mw_com_config.json b/feature_integration_tests/configs/etc/mw_com_config.json similarity index 100% rename from integration/feature_integration_tests/configs/etc/mw_com_config.json rename to feature_integration_tests/configs/etc/mw_com_config.json diff --git a/integration/feature_integration_tests/configs/qemu_target_config.json b/feature_integration_tests/configs/qemu_target_config.json similarity index 100% rename from integration/feature_integration_tests/configs/qemu_target_config.json rename to feature_integration_tests/configs/qemu_target_config.json diff --git a/integration/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD similarity index 100% rename from integration/feature_integration_tests/itf/BUILD rename to feature_integration_tests/itf/BUILD diff --git a/integration/feature_integration_tests/itf/test_persistency.py b/feature_integration_tests/itf/test_persistency.py similarity index 100% rename from integration/feature_integration_tests/itf/test_persistency.py rename to feature_integration_tests/itf/test_persistency.py diff --git a/integration/feature_integration_tests/itf/test_scrample.py b/feature_integration_tests/itf/test_scrample.py similarity index 100% rename from integration/feature_integration_tests/itf/test_scrample.py rename to feature_integration_tests/itf/test_scrample.py diff --git a/integration/feature_integration_tests/itf/test_ssh.py b/feature_integration_tests/itf/test_ssh.py similarity index 100% rename from integration/feature_integration_tests/itf/test_ssh.py rename to feature_integration_tests/itf/test_ssh.py diff --git a/integration/feature_integration_tests/test_cases/BUILD b/feature_integration_tests/test_cases/BUILD similarity index 100% rename from integration/feature_integration_tests/test_cases/BUILD rename to feature_integration_tests/test_cases/BUILD diff --git a/integration/feature_integration_tests/test_cases/conftest.py b/feature_integration_tests/test_cases/conftest.py similarity index 100% rename from integration/feature_integration_tests/test_cases/conftest.py rename to feature_integration_tests/test_cases/conftest.py diff --git a/integration/feature_integration_tests/test_cases/fit_scenario.py b/feature_integration_tests/test_cases/fit_scenario.py similarity index 100% rename from integration/feature_integration_tests/test_cases/fit_scenario.py rename to feature_integration_tests/test_cases/fit_scenario.py diff --git a/integration/feature_integration_tests/test_cases/pytest.ini b/feature_integration_tests/test_cases/pytest.ini similarity index 100% rename from integration/feature_integration_tests/test_cases/pytest.ini rename to feature_integration_tests/test_cases/pytest.ini diff --git a/integration/feature_integration_tests/test_cases/requirements.txt b/feature_integration_tests/test_cases/requirements.txt similarity index 100% rename from integration/feature_integration_tests/test_cases/requirements.txt rename to feature_integration_tests/test_cases/requirements.txt diff --git a/integration/feature_integration_tests/test_cases/requirements.txt.lock b/feature_integration_tests/test_cases/requirements.txt.lock similarity index 100% rename from integration/feature_integration_tests/test_cases/requirements.txt.lock rename to feature_integration_tests/test_cases/requirements.txt.lock diff --git a/integration/feature_integration_tests/test_cases/test_properties.py b/feature_integration_tests/test_cases/test_properties.py similarity index 100% rename from integration/feature_integration_tests/test_cases/test_properties.py rename to feature_integration_tests/test_cases/test_properties.py diff --git a/integration/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py b/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py similarity index 100% rename from integration/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py rename to feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py diff --git a/integration/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py b/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py similarity index 100% rename from integration/feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py rename to feature_integration_tests/test_cases/tests/persistency/test_multiple_kvs_per_app.py diff --git a/integration/feature_integration_tests/test_scenarios/rust/BUILD b/feature_integration_tests/test_scenarios/rust/BUILD similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/BUILD rename to feature_integration_tests/test_scenarios/rust/BUILD diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/main.rs b/feature_integration_tests/test_scenarios/rust/src/main.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/main.rs rename to feature_integration_tests/test_scenarios/rust/src/main.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs diff --git a/integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs similarity index 100% rename from integration/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs rename to feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs diff --git a/integration/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel similarity index 100% rename from integration/images/autosd_x86_64/BUILD.bazel rename to images/autosd_x86_64/BUILD.bazel diff --git a/integration/images/autosd_x86_64/build/.gitignore b/images/autosd_x86_64/build/.gitignore similarity index 100% rename from integration/images/autosd_x86_64/build/.gitignore rename to images/autosd_x86_64/build/.gitignore diff --git a/integration/images/autosd_x86_64/build/README.md b/images/autosd_x86_64/build/README.md similarity index 100% rename from integration/images/autosd_x86_64/build/README.md rename to images/autosd_x86_64/build/README.md diff --git a/integration/images/autosd_x86_64/build/files/bluechi-agent-main.conf b/images/autosd_x86_64/build/files/bluechi-agent-main.conf similarity index 100% rename from integration/images/autosd_x86_64/build/files/bluechi-agent-main.conf rename to images/autosd_x86_64/build/files/bluechi-agent-main.conf diff --git a/integration/images/autosd_x86_64/build/files/bluechi-agent-qm.conf b/images/autosd_x86_64/build/files/bluechi-agent-qm.conf similarity index 100% rename from integration/images/autosd_x86_64/build/files/bluechi-agent-qm.conf rename to images/autosd_x86_64/build/files/bluechi-agent-qm.conf diff --git a/integration/images/autosd_x86_64/build/files/bluechi-controller.conf b/images/autosd_x86_64/build/files/bluechi-controller.conf similarity index 100% rename from integration/images/autosd_x86_64/build/files/bluechi-controller.conf rename to images/autosd_x86_64/build/files/bluechi-controller.conf diff --git a/integration/images/autosd_x86_64/build/files/lola-ipc-pub.service b/images/autosd_x86_64/build/files/lola-ipc-pub.service similarity index 100% rename from integration/images/autosd_x86_64/build/files/lola-ipc-pub.service rename to images/autosd_x86_64/build/files/lola-ipc-pub.service diff --git a/integration/images/autosd_x86_64/build/files/lola-ipc-sub.service b/images/autosd_x86_64/build/files/lola-ipc-sub.service similarity index 100% rename from integration/images/autosd_x86_64/build/files/lola-ipc-sub.service rename to images/autosd_x86_64/build/files/lola-ipc-sub.service diff --git a/integration/images/autosd_x86_64/build/files/lola-ipc-test b/images/autosd_x86_64/build/files/lola-ipc-test similarity index 100% rename from integration/images/autosd_x86_64/build/files/lola-ipc-test rename to images/autosd_x86_64/build/files/lola-ipc-test diff --git a/integration/images/autosd_x86_64/build/files/lola-ipc-test.service b/images/autosd_x86_64/build/files/lola-ipc-test.service similarity index 100% rename from integration/images/autosd_x86_64/build/files/lola-ipc-test.service rename to images/autosd_x86_64/build/files/lola-ipc-test.service diff --git a/integration/images/autosd_x86_64/build/image.aib.yml b/images/autosd_x86_64/build/image.aib.yml similarity index 100% rename from integration/images/autosd_x86_64/build/image.aib.yml rename to images/autosd_x86_64/build/image.aib.yml diff --git a/integration/images/autosd_x86_64/build/scripts/run_qemu b/images/autosd_x86_64/build/scripts/run_qemu similarity index 100% rename from integration/images/autosd_x86_64/build/scripts/run_qemu rename to images/autosd_x86_64/build/scripts/run_qemu diff --git a/integration/images/autosd_x86_64/build/vars-devel.yml b/images/autosd_x86_64/build/vars-devel.yml similarity index 100% rename from integration/images/autosd_x86_64/build/vars-devel.yml rename to images/autosd_x86_64/build/vars-devel.yml diff --git a/integration/images/autosd_x86_64/build/vars.yml b/images/autosd_x86_64/build/vars.yml similarity index 100% rename from integration/images/autosd_x86_64/build/vars.yml rename to images/autosd_x86_64/build/vars.yml diff --git a/integration/images/ebclfsa_aarch64/BUILD b/images/ebclfsa_aarch64/BUILD similarity index 100% rename from integration/images/ebclfsa_aarch64/BUILD rename to images/ebclfsa_aarch64/BUILD diff --git a/integration/images/ebclfsa_aarch64/README.md b/images/ebclfsa_aarch64/README.md similarity index 100% rename from integration/images/ebclfsa_aarch64/README.md rename to images/ebclfsa_aarch64/README.md diff --git a/integration/images/ebclfsa_aarch64/docs/system_setup.drawio.png b/images/ebclfsa_aarch64/docs/system_setup.drawio.png similarity index 100% rename from integration/images/ebclfsa_aarch64/docs/system_setup.drawio.png rename to images/ebclfsa_aarch64/docs/system_setup.drawio.png diff --git a/integration/images/ebclfsa_aarch64/persistency_integration/BUILD b/images/ebclfsa_aarch64/persistency_integration/BUILD similarity index 100% rename from integration/images/ebclfsa_aarch64/persistency_integration/BUILD rename to images/ebclfsa_aarch64/persistency_integration/BUILD diff --git a/integration/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh b/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh similarity index 100% rename from integration/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh rename to images/ebclfsa_aarch64/persistency_integration/run_qemu.sh diff --git a/integration/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh b/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh similarity index 100% rename from integration/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh rename to images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh diff --git a/integration/images/ebclfsa_aarch64/scrample_integration/BUILD b/images/ebclfsa_aarch64/scrample_integration/BUILD similarity index 100% rename from integration/images/ebclfsa_aarch64/scrample_integration/BUILD rename to images/ebclfsa_aarch64/scrample_integration/BUILD diff --git a/integration/images/ebclfsa_aarch64/scrample_integration/etc/logging.json b/images/ebclfsa_aarch64/scrample_integration/etc/logging.json similarity index 100% rename from integration/images/ebclfsa_aarch64/scrample_integration/etc/logging.json rename to images/ebclfsa_aarch64/scrample_integration/etc/logging.json diff --git a/integration/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json b/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json similarity index 100% rename from integration/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json rename to images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json diff --git a/integration/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh b/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh similarity index 100% rename from integration/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh rename to images/ebclfsa_aarch64/scrample_integration/run_qemu.sh diff --git a/integration/images/ebclfsa_aarch64/scrample_integration/src/main.cc b/images/ebclfsa_aarch64/scrample_integration/src/main.cc similarity index 100% rename from integration/images/ebclfsa_aarch64/scrample_integration/src/main.cc rename to images/ebclfsa_aarch64/scrample_integration/src/main.cc diff --git a/integration/images/linux_x86_64/BUILD b/images/linux_x86_64/BUILD similarity index 100% rename from integration/images/linux_x86_64/BUILD rename to images/linux_x86_64/BUILD diff --git a/integration/images/qnx_x86_64/BUILD b/images/qnx_x86_64/BUILD similarity index 100% rename from integration/images/qnx_x86_64/BUILD rename to images/qnx_x86_64/BUILD diff --git a/integration/images/qnx_x86_64/build/BUILD b/images/qnx_x86_64/build/BUILD similarity index 100% rename from integration/images/qnx_x86_64/build/BUILD rename to images/qnx_x86_64/build/BUILD diff --git a/integration/images/qnx_x86_64/build/init.build b/images/qnx_x86_64/build/init.build similarity index 100% rename from integration/images/qnx_x86_64/build/init.build rename to images/qnx_x86_64/build/init.build diff --git a/integration/images/qnx_x86_64/build/system.build b/images/qnx_x86_64/build/system.build similarity index 100% rename from integration/images/qnx_x86_64/build/system.build rename to images/qnx_x86_64/build/system.build diff --git a/integration/images/qnx_x86_64/configs/BUILD b/images/qnx_x86_64/configs/BUILD similarity index 100% rename from integration/images/qnx_x86_64/configs/BUILD rename to images/qnx_x86_64/configs/BUILD diff --git a/integration/images/qnx_x86_64/configs/dhcpcd.conf b/images/qnx_x86_64/configs/dhcpcd.conf similarity index 100% rename from integration/images/qnx_x86_64/configs/dhcpcd.conf rename to images/qnx_x86_64/configs/dhcpcd.conf diff --git a/integration/images/qnx_x86_64/configs/group b/images/qnx_x86_64/configs/group similarity index 100% rename from integration/images/qnx_x86_64/configs/group rename to images/qnx_x86_64/configs/group diff --git a/integration/images/qnx_x86_64/configs/hostname b/images/qnx_x86_64/configs/hostname similarity index 100% rename from integration/images/qnx_x86_64/configs/hostname rename to images/qnx_x86_64/configs/hostname diff --git a/integration/images/qnx_x86_64/configs/network_capture.sh b/images/qnx_x86_64/configs/network_capture.sh similarity index 100% rename from integration/images/qnx_x86_64/configs/network_capture.sh rename to images/qnx_x86_64/configs/network_capture.sh diff --git a/integration/images/qnx_x86_64/configs/network_setup.sh b/images/qnx_x86_64/configs/network_setup.sh similarity index 100% rename from integration/images/qnx_x86_64/configs/network_setup.sh rename to images/qnx_x86_64/configs/network_setup.sh diff --git a/integration/images/qnx_x86_64/configs/network_setup_dhcp.sh b/images/qnx_x86_64/configs/network_setup_dhcp.sh similarity index 100% rename from integration/images/qnx_x86_64/configs/network_setup_dhcp.sh rename to images/qnx_x86_64/configs/network_setup_dhcp.sh diff --git a/integration/images/qnx_x86_64/configs/passwd b/images/qnx_x86_64/configs/passwd similarity index 100% rename from integration/images/qnx_x86_64/configs/passwd rename to images/qnx_x86_64/configs/passwd diff --git a/integration/images/qnx_x86_64/configs/pci_hw.cfg b/images/qnx_x86_64/configs/pci_hw.cfg similarity index 100% rename from integration/images/qnx_x86_64/configs/pci_hw.cfg rename to images/qnx_x86_64/configs/pci_hw.cfg diff --git a/integration/images/qnx_x86_64/configs/pci_server.cfg b/images/qnx_x86_64/configs/pci_server.cfg similarity index 100% rename from integration/images/qnx_x86_64/configs/pci_server.cfg rename to images/qnx_x86_64/configs/pci_server.cfg diff --git a/integration/images/qnx_x86_64/configs/profile b/images/qnx_x86_64/configs/profile similarity index 100% rename from integration/images/qnx_x86_64/configs/profile rename to images/qnx_x86_64/configs/profile diff --git a/integration/images/qnx_x86_64/configs/qcrypto.conf b/images/qnx_x86_64/configs/qcrypto.conf similarity index 100% rename from integration/images/qnx_x86_64/configs/qcrypto.conf rename to images/qnx_x86_64/configs/qcrypto.conf diff --git a/integration/images/qnx_x86_64/configs/ssh_host_rsa_key b/images/qnx_x86_64/configs/ssh_host_rsa_key similarity index 100% rename from integration/images/qnx_x86_64/configs/ssh_host_rsa_key rename to images/qnx_x86_64/configs/ssh_host_rsa_key diff --git a/integration/images/qnx_x86_64/configs/ssh_host_rsa_key.pub b/images/qnx_x86_64/configs/ssh_host_rsa_key.pub similarity index 100% rename from integration/images/qnx_x86_64/configs/ssh_host_rsa_key.pub rename to images/qnx_x86_64/configs/ssh_host_rsa_key.pub diff --git a/integration/images/qnx_x86_64/configs/sshd_config b/images/qnx_x86_64/configs/sshd_config similarity index 100% rename from integration/images/qnx_x86_64/configs/sshd_config rename to images/qnx_x86_64/configs/sshd_config diff --git a/integration/images/qnx_x86_64/configs/startup.sh b/images/qnx_x86_64/configs/startup.sh similarity index 100% rename from integration/images/qnx_x86_64/configs/startup.sh rename to images/qnx_x86_64/configs/startup.sh diff --git a/integration/.bazelrc b/integration/.bazelrc deleted file mode 100644 index f03197f6ef3..00000000000 --- a/integration/.bazelrc +++ /dev/null @@ -1,47 +0,0 @@ -common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ -common --registry=https://bcr.bazel.build -common --credential_helper=*.qnx.com=%workspace%/scripts/qnx_credential_helper.py -common --credential_helper_timeout="60s" - -build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False -build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False -build:_common --@score_baselibs//score/json:base_library=nlohmann -build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False -build:_common --@score_communication//score/mw/com/flags:tracing_library=stub -build:_common --cxxopt=-Wno-error=mismatched-new-delete -build:_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix -build:_common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu -build:_common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix - -build:qnx-x86_64 --config=_common -build:qnx-x86_64 --noexperimental_merged_skyframe_analysis_execution -build:qnx-x86_64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 -build:qnx-x86_64 --incompatible_enable_cc_toolchain_resolution -build:qnx-x86_64 --incompatible_strict_action_env -build:qnx-x86_64 --sandbox_writable_path=/var/tmp -build:qnx-x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix -build:qnx-x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0-posix -build:qnx-x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64 -build:qnx-x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 - -build:itf-qnx-x86_64 --config=qnx-x86_64 -build:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu -build:itf-qnx-x86_64 --test_arg="--qemu" -build:itf-qnx-x86_64 --test_arg="--os=qnx" - - -build:linux-x86_64 --config=_common -build:linux-x86_64 --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix -build:linux-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix - -build:eb-aarch64 --config=_common -build:eb-aarch64 --extra_toolchains=@gcc_toolchain//:aarch64_gcc_13 -build:eb-aarch64 --platforms=@score_toolchains_gcc//platforms:aarch64-linux -build:eb-aarch64 --spawn_strategy=local - - -build:autosd-x86_64 --config=_common -build:autosd-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux -build:autosd-x86_64 --force_pic -build:autosd-x86_64 --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 -build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 diff --git a/integration/.bazelversion b/integration/.bazelversion deleted file mode 100644 index e7fdef7e2e6..00000000000 --- a/integration/.bazelversion +++ /dev/null @@ -1 +0,0 @@ -8.4.2 diff --git a/integration/MODULE.bazel b/integration/MODULE.bazel deleted file mode 100644 index 66edd21e049..00000000000 --- a/integration/MODULE.bazel +++ /dev/null @@ -1,61 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -module( - name = "score_ref_int_qnx_x86_64", - version = "0.0.1", - compatibility_level = 0, -) - -# Include common modules -include("//bazel_common:score_basic_tools.MODULE.bazel") - -# GCC toolchains -include ("//bazel_common:score_gcc_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain - -# GCC toolchains -include ("//bazel_common:score_qnx_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain - -# Rust toolchains -include ("//bazel_common:score_rust_toolchains.MODULE.bazel") - -# Python support -include("//bazel_common:score_python.MODULE.bazel") - -# Score modules -include("//bazel_common:score_modules.MODULE.bazel") - -bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") -archive_override( - module_name = "rules_boost", - urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], - strip_prefix = "rules_boost-master", -) - -# TRLC dependency for requirements traceability -bazel_dep(name = "trlc", version = "0.0.0") -git_override( - module_name = "trlc", - commit = "650b51a47264a4f232b3341f473527710fc32669", # trlc-2.0.2 release - remote = "https://github.com/bmw-software-engineering/trlc.git", -) - -# Currently required for ifs tooling -bazel_dep(name = "score_toolchains_qnx", version = "0.0.7") -toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency=True) -toolchains_qnx.sdp( - sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", - strip_prefix = "installation", - url = "https://www.qnx.com/download/download/79858/installation.tgz", -) -use_repo(toolchains_qnx, "toolchains_qnx_sdp") -use_repo(toolchains_qnx, "toolchains_qnx_ifs") diff --git a/integration/README.md b/integration/README.md deleted file mode 100644 index d9cd3982671..00000000000 --- a/integration/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Integration directory - -## Get started - -Simply run `./score_starter` and select which integration You want to run. Once running, You will be guided by our welcome cli to run selected examples. \ No newline at end of file diff --git a/integration/bazel_common/score_modules.MODULE.bazel b/integration/bazel_common/score_modules.MODULE.bazel deleted file mode 100644 index 1d665001d35..00000000000 --- a/integration/bazel_common/score_modules.MODULE.bazel +++ /dev/null @@ -1,43 +0,0 @@ -bazel_dep(name = "score_baselibs", version = "0.1.3") -bazel_dep(name = "score_communication", version = "0.1.1",) # EB needs 0.1.2 but others does not work with it -bazel_dep(name = "score_persistency", version = "0.2.1") -bazel_dep(name = "score_scrample", version = "0.1.0") -bazel_dep(name = "score_itf", version = "0.1.0") -bazel_dep(name = "score_orchestrator") -git_override( - module_name = "score_orchestrator", - remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "18e136c34750c5db707f27f917d52efc7541e087", -) - -bazel_dep(name = "score_kyron") -git_override( - module_name = "score_kyron", - remote = "https://github.com/eclipse-score/kyron.git", - commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", -) - -git_override( - module_name = "score_persistency", - remote = "https://github.com/eclipse-score/persistency.git", - commit = "0037034bf853e5f955f028fab54ed319fb0441c3", -) - - -single_version_override( - module_name = "score_baselibs", - version = "0.1.3", - patch_strip = 1, - patches = [ - "//patches/baselibs:003-acl-fixes-for-aarch64.patch", - "//patches/baselibs:0001-RH-exception-header.patch", - "//patches/baselibs:0002-RH-algorithm-header.patch", - ], -) - -bazel_dep(name = "score_lifecycle_health") -git_override( - module_name = "score_lifecycle_health", - commit = "84303c2e48c7e8e2481752170efe82d0afd45f1e", - remote = "https://github.com/eclipse-score/lifecycle.git", -) diff --git a/integration/bazel_common/score_python.MODULE.bazel b/integration/bazel_common/score_python.MODULE.bazel deleted file mode 100644 index 7a8c265621f..00000000000 --- a/integration/bazel_common/score_python.MODULE.bazel +++ /dev/null @@ -1,12 +0,0 @@ - -bazel_dep(name = "rules_python", version = "1.0.0") - -PYTHON_VERSION = "3.12" - -python = use_extension("@rules_python//python/extensions:python.bzl", "python") -python.toolchain( - configure_coverage_tool = True, - is_default = True, - python_version = PYTHON_VERSION, -) -use_repo(python) \ No newline at end of file diff --git a/integration/patches/baselibs/BUILD b/integration/patches/baselibs/BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/integration/scripts/qnx_credential_helper.py b/integration/scripts/qnx_credential_helper.py deleted file mode 120000 index 6b0b73f578a..00000000000 --- a/integration/scripts/qnx_credential_helper.py +++ /dev/null @@ -1 +0,0 @@ -../../.github/tools/qnx_credential_helper.py \ No newline at end of file diff --git a/known_good.json b/known_good.json index 8aefbcce54a..6052df4856e 100644 --- a/known_good.json +++ b/known_good.json @@ -1,66 +1,119 @@ { "modules": { - "score_baselibs": { - "repo": "https://github.com/eclipse-score/baselibs.git", - "hash": "ffd1c812213c66a436ed982632f6942528b58be8" + "target_sw": { + "score_baselibs": { + "repo": "https://github.com/eclipse-score/baselibs.git", + "hash": "ffd1c812213c66a436ed982632f6942528b58be8", + "version": "0.1.3", + "bazel_patches": [ + "//patches/baselibs:003-acl-fixes-for-aarch64.patch", + "//patches/baselibs:0001-RH-exception-header.patch", + "//patches/baselibs:0002-RH-algorithm-header.patch" + ], + "metadata": { + "exclude_test_targets": [ + "//score/language/safecpp/aborts_upon_exception:abortsuponexception_toolchain_test", + "//score/containers:dynamic_array_test", + "//score/mw/log/configuration:*", + "//score/json/examples:*" + ], + "langs": ["cpp"] + } + }, + "score_baselibs_rust": { + "repo": "https://github.com/eclipse-score/baselibs_rust.git", + "hash": "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", + "metadata": { + "code_root_path": "//src/...", + "langs": ["rust"] + } + }, + "score_communication": { + "repo": "https://github.com/eclipse-score/communication.git", + "hash": "0c0ea032995eaa766f5bdcec031bc02ee10d4587", + "version": "0.1.1", + "metadata": { + "exclude_test_targets": [ + "//score/*" + ] + } + }, + "score_persistency": { + "repo": "https://github.com/eclipse-score/persistency.git", + "hash": "0037034bf853e5f955f028fab54ed319fb0441c3", + "metadata": { + "code_root_path": "//src/...", + "exclude_test_targets": [ + "//src/cpp/tests:bm_kvs_cpp" + ] + } + }, + "score_orchestrator": { + "repo": "https://github.com/eclipse-score/orchestrator.git", + "hash": "18e136c34750c5db707f27f917d52efc7541e087", + "metadata": { + "code_root_path": "//src/...", + "langs": ["rust"] + } + }, + "score_kyron": { + "repo": "https://github.com/eclipse-score/kyron.git", + "hash": "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", + "metadata": { + "code_root_path": "//src/...", + "langs": ["rust"] + } + }, + "score_lifecycle_health": { + "repo": "https://github.com/eclipse-score/lifecycle.git", + "hash": "84303c2e48c7e8e2481752170efe82d0afd45f1e", + "metadata": { + "code_root_path": "//src/..." + } + }, + "score_scrample": { + "repo": "https://github.com/eclipse-score/scrample.git", + "hash": "0c2e72fc2a72a7dce4d9ddeec8470a861b08d5e1" + } }, - "score_baselibs_rust": { - "repo": "https://github.com/eclipse-score/baselibs_rust.git", - "hash": "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c" - }, - "score_communication": { - "repo": "https://github.com/eclipse-score/communication.git", - "hash": "0c0ea032995eaa766f5bdcec031bc02ee10d4587" - }, - "score_logging": { - "repo": "https://github.com/eclipse-score/logging.git", - "hash": "2b3e56cf12cf582d0c0a235cad3d1d9b9fc1e494" - }, - "score_persistency": { - "repo": "https://github.com/eclipse-score/persistency.git", - "hash": "9c1f0c1b1cd9b49621ecf4f9d541ded100fe2c08" - }, - "score_orchestrator": { - "repo": "https://github.com/eclipse-score/orchestrator.git", - "hash": "fd6e21820a361b0c5ab69553f01bd68174d89ffd" - }, - "score_kyron": { - "repo": "https://github.com/eclipse-score/kyron.git", - "hash": "d146401db4557d840850a7b5fc21b0f4fc8aac20" - }, - "score_feo": { - "repo": "https://github.com/eclipse-score/feo.git", - "hash": "4841281ab81aad114cfc86a19a69c029a274f28d", - "branch": "candidate_v0.5" - }, - "score_tooling": { - "repo": "https://github.com/eclipse-score/tooling.git", - "hash": "17671026150db4b4cc1b35e48af81b97e13685e5" - }, - "score_platform": { - "repo": "https://github.com/eclipse-score/score.git", - "hash": "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e" - }, - "score_bazel_platforms": { - "repo": "https://github.com/eclipse-score/bazel_platforms.git", - "hash": "3ac1b805ba42b58a13f8960f947b7866c8bcf26c" - }, - "score_test_scenarios": { - "repo": "https://github.com/eclipse-score/testing_tools.git", - "hash": "6b5e85863e8fb5687251c19f5bb81e0a3afdf581" - }, - "score_docs_as_code": { - "repo": "https://github.com/eclipse-score/docs-as-code.git", - "hash": "ba006429268e6bd9b856088f7a4217742ed09025" - }, - "score_process": { - "repo": "https://github.com/eclipse-score/process_description.git", - "hash": "6c772cf05a493218a5ac6071361bf0b66c5427b2" - }, - "score_lifecycle_health": { - "repo": "https://github.com/eclipse-score/lifecycle.git", - "hash": "297808cf7c0013e08a0982133a0add1d9b1a9d9e" + "tooling": { + "score_crates": { + "repo": "https://github.com/eclipse-score/score-crates.git", + "version": "0.0.7" + }, + "score_itf": { + "repo": "https://github.com/eclipse-score/itf.git", + "version": "0.1.0" + }, + "score_tooling": { + "repo": "https://github.com/eclipse-score/tooling.git", + "hash": "17671026150db4b4cc1b35e48af81b97e13685e5" + }, + "score_platform": { + "repo": "https://github.com/eclipse-score/score.git", + "hash": "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e" + }, + "score_bazel_platforms": { + "repo": "https://github.com/eclipse-score/bazel_platforms.git", + "hash": "3ac1b805ba42b58a13f8960f947b7866c8bcf26c", + "version": "0.0.4" + }, + "score_test_scenarios": { + "repo": "https://github.com/eclipse-score/testing_tools.git", + "hash": "6b5e85863e8fb5687251c19f5bb81e0a3afdf581" + }, + "score_docs_as_code": { + "repo": "https://github.com/eclipse-score/docs-as-code.git", + "hash": "ba006429268e6bd9b856088f7a4217742ed09025", + "version": "3.0.1" + }, + "score_process": { + "repo": "https://github.com/eclipse-score/process_description.git", + "hash": "6c772cf05a493218a5ac6071361bf0b66c5427b2" + } } + + }, "timestamp": "2026-02-10T21:12:42+00:00Z" } diff --git a/integration/patches/baselibs/0001-RH-exception-header.patch b/patches/baselibs/0001-RH-exception-header.patch similarity index 100% rename from integration/patches/baselibs/0001-RH-exception-header.patch rename to patches/baselibs/0001-RH-exception-header.patch diff --git a/integration/patches/baselibs/0002-RH-algorithm-header.patch b/patches/baselibs/0002-RH-algorithm-header.patch similarity index 100% rename from integration/patches/baselibs/0002-RH-algorithm-header.patch rename to patches/baselibs/0002-RH-algorithm-header.patch diff --git a/integration/patches/baselibs/003-acl-fixes-for-aarch64.patch b/patches/baselibs/003-acl-fixes-for-aarch64.patch similarity index 100% rename from integration/patches/baselibs/003-acl-fixes-for-aarch64.patch rename to patches/baselibs/003-acl-fixes-for-aarch64.patch diff --git a/integration/feature_integration_tests/BUILD b/patches/baselibs/BUILD similarity index 100% rename from integration/feature_integration_tests/BUILD rename to patches/baselibs/BUILD diff --git a/integration/patches/baselibs/fix_hard_coded_amd64.patch b/patches/baselibs/fix_hard_coded_amd64.patch similarity index 100% rename from integration/patches/baselibs/fix_hard_coded_amd64.patch rename to patches/baselibs/fix_hard_coded_amd64.patch diff --git a/integration/runners/docker_x86_64/BUILD b/runners/docker_x86_64/BUILD similarity index 100% rename from integration/runners/docker_x86_64/BUILD rename to runners/docker_x86_64/BUILD diff --git a/integration/runners/docker_x86_64/scripts/BUILD b/runners/docker_x86_64/scripts/BUILD similarity index 100% rename from integration/runners/docker_x86_64/scripts/BUILD rename to runners/docker_x86_64/scripts/BUILD diff --git a/integration/runners/docker_x86_64/scripts/run_docker.sh b/runners/docker_x86_64/scripts/run_docker.sh similarity index 100% rename from integration/runners/docker_x86_64/scripts/run_docker.sh rename to runners/docker_x86_64/scripts/run_docker.sh diff --git a/integration/runners/qemu_x86_64/BUILD b/runners/qemu_x86_64/BUILD similarity index 100% rename from integration/runners/qemu_x86_64/BUILD rename to runners/qemu_x86_64/BUILD diff --git a/integration/runners/qemu_x86_64/scripts/BUILD b/runners/qemu_x86_64/scripts/BUILD similarity index 100% rename from integration/runners/qemu_x86_64/scripts/BUILD rename to runners/qemu_x86_64/scripts/BUILD diff --git a/integration/runners/qemu_x86_64/scripts/qnx_wireshark.sh b/runners/qemu_x86_64/scripts/qnx_wireshark.sh similarity index 100% rename from integration/runners/qemu_x86_64/scripts/qnx_wireshark.sh rename to runners/qemu_x86_64/scripts/qnx_wireshark.sh diff --git a/integration/runners/qemu_x86_64/scripts/run_qemu.sh b/runners/qemu_x86_64/scripts/run_qemu.sh similarity index 100% rename from integration/runners/qemu_x86_64/scripts/run_qemu.sh rename to runners/qemu_x86_64/scripts/run_qemu.sh diff --git a/integration/runners/qemu_x86_64/scripts/run_qemu_portforward.sh b/runners/qemu_x86_64/scripts/run_qemu_portforward.sh similarity index 100% rename from integration/runners/qemu_x86_64/scripts/run_qemu_portforward.sh rename to runners/qemu_x86_64/scripts/run_qemu_portforward.sh diff --git a/score_modules.MODULE.bazel b/score_modules.MODULE.bazel deleted file mode 100644 index 8c2d99b2e0d..00000000000 --- a/score_modules.MODULE.bazel +++ /dev/null @@ -1,120 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -# Generated from known_good.json at 2026-02-10T21:12:42+00:00Z -# Do not edit manually - use scripts/known_good/update_module_from_known_good.py - -bazel_dep(name = "score_baselibs") -git_override( - module_name = "score_baselibs", - remote = "https://github.com/eclipse-score/baselibs.git", - commit = "ffd1c812213c66a436ed982632f6942528b58be8", -) - -bazel_dep(name = "score_baselibs_rust") -git_override( - module_name = "score_baselibs_rust", - remote = "https://github.com/eclipse-score/baselibs_rust.git", - commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", -) - -bazel_dep(name = "score_communication") -git_override( - module_name = "score_communication", - remote = "https://github.com/eclipse-score/communication.git", - commit = "0c0ea032995eaa766f5bdcec031bc02ee10d4587", -) - -bazel_dep(name = "score_logging") -git_override( - module_name = "score_logging", - remote = "https://github.com/eclipse-score/logging.git", - commit = "2b3e56cf12cf582d0c0a235cad3d1d9b9fc1e494", -) - -bazel_dep(name = "score_persistency") -git_override( - module_name = "score_persistency", - remote = "https://github.com/eclipse-score/persistency.git", - commit = "9c1f0c1b1cd9b49621ecf4f9d541ded100fe2c08", -) - -bazel_dep(name = "score_orchestrator") -git_override( - module_name = "score_orchestrator", - remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "fd6e21820a361b0c5ab69553f01bd68174d89ffd", -) - -bazel_dep(name = "score_kyron") -git_override( - module_name = "score_kyron", - remote = "https://github.com/eclipse-score/kyron.git", - commit = "d146401db4557d840850a7b5fc21b0f4fc8aac20", -) - -bazel_dep(name = "score_feo") -git_override( - module_name = "score_feo", - remote = "https://github.com/eclipse-score/feo.git", - commit = "4841281ab81aad114cfc86a19a69c029a274f28d", -) - -bazel_dep(name = "score_tooling") -git_override( - module_name = "score_tooling", - remote = "https://github.com/eclipse-score/tooling.git", - commit = "17671026150db4b4cc1b35e48af81b97e13685e5", -) - -bazel_dep(name = "score_platform") -git_override( - module_name = "score_platform", - remote = "https://github.com/eclipse-score/score.git", - commit = "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e", -) - -bazel_dep(name = "score_bazel_platforms") -git_override( - module_name = "score_bazel_platforms", - remote = "https://github.com/eclipse-score/bazel_platforms.git", - commit = "3ac1b805ba42b58a13f8960f947b7866c8bcf26c", -) - -bazel_dep(name = "score_test_scenarios") -git_override( - module_name = "score_test_scenarios", - remote = "https://github.com/eclipse-score/testing_tools.git", - commit = "6b5e85863e8fb5687251c19f5bb81e0a3afdf581", -) - -bazel_dep(name = "score_docs_as_code") -git_override( - module_name = "score_docs_as_code", - remote = "https://github.com/eclipse-score/docs-as-code.git", - commit = "ba006429268e6bd9b856088f7a4217742ed09025", -) - -bazel_dep(name = "score_process") -git_override( - module_name = "score_process", - remote = "https://github.com/eclipse-score/process_description.git", - commit = "6c772cf05a493218a5ac6071361bf0b66c5427b2", -) - -bazel_dep(name = "score_lifecycle_health") -git_override( - module_name = "score_lifecycle_health", - remote = "https://github.com/eclipse-score/lifecycle.git", - commit = "297808cf7c0013e08a0982133a0add1d9b1a9d9e", -) diff --git a/integration/score_starter b/score_starter similarity index 100% rename from integration/score_starter rename to score_starter diff --git a/score_toolchains.MODULE.bazel b/score_toolchains.MODULE.bazel deleted file mode 100644 index f3a27898f49..00000000000 --- a/score_toolchains.MODULE.bazel +++ /dev/null @@ -1,60 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - - -bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.0") -gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) - -# ******************************************************************************* -# Setting default GCC (CPU:x86_64|OS:Linux|V:12.2.0|ES:posix) -# ******************************************************************************* -gcc.toolchain( - name = "score_gcc_toolchain", - target_cpu = "x86_64", - target_os = "linux", - version = "12.2.0", - use_default_package = True, -) -gcc.toolchain( - name = "score_gcc_aarch64_toolchain", - target_cpu = "aarch64", - target_os = "linux", - use_default_package = True, - version = "12.2.0", -) -gcc.toolchain( - name = "score_qcc_x86_64_toolchain", - sdp_version = "8.0.0", - target_cpu = "x86_64", - target_os = "qnx", - use_default_package = True, - version = "12.2.0", -) -gcc.toolchain( - name = "score_qcc_aarch64_toolchain", - sdp_version = "8.0.0", - target_cpu = "aarch64", - target_os = "qnx", - use_default_package = True, - version = "12.2.0", -) -use_repo( - gcc, - "score_gcc_aarch64_toolchain", - "score_gcc_x86_64_toolchain", - "score_qcc_aarch64_toolchain", - "score_qcc_x86_64_toolchain", -) - - -bazel_dep(name = "score_toolchains_rust", version = "0.4.0", dev_dependency = True) diff --git a/scripts/known_good/models/__init__.py b/scripts/known_good/models/__init__.py index 838a6f4b290..c6600de5770 100644 --- a/scripts/known_good/models/__init__.py +++ b/scripts/known_good/models/__init__.py @@ -1,5 +1,5 @@ """Models for score reference integration tools.""" -from .module import Module +from .module import Module, Metadata -__all__ = ["Module"] +__all__ = ["Module", "Metadata"] diff --git a/scripts/known_good/models/known_good.py b/scripts/known_good/models/known_good.py index 64cb50bb4de..788af688316 100644 --- a/scripts/known_good/models/known_good.py +++ b/scripts/known_good/models/known_good.py @@ -13,35 +13,50 @@ @dataclass class KnownGood: - """Known good configuration with modules and metadata.""" - modules: Dict[str, Module] + """Known good configuration with modules and metadata. + + Module structure: modules = {"group1": {"module1": Module}, "group2": {"module2": Module}} + """ + modules: Dict[str, Dict[str, Module]] timestamp: str - + @classmethod def from_dict(cls, data: Dict[str, Any]) -> KnownGood: """Create a KnownGood instance from a dictionary. - + + Expected structure: + {"modules": {"group1": {"score_baselibs": {...}}, "group2": {"score_logging": {...}}}} + Args: data: Dictionary containing known_good.json data - + Returns: KnownGood instance """ modules_dict = data.get('modules', {}) - modules_list = Module.parse_modules(modules_dict) - modules = {m.name: m for m in modules_list} timestamp = data.get('timestamp', '') - - return cls(modules=modules, timestamp=timestamp) - + + parsed_modules: Dict[str, Dict[str, Module]] = {} + for group_name, group_modules in modules_dict.items(): + if isinstance(group_modules, dict): + modules_list = Module.parse_modules(group_modules) + parsed_modules[group_name] = {m.name: m for m in modules_list} + + return cls(modules=parsed_modules, timestamp=timestamp) + def to_dict(self) -> Dict[str, Any]: """Convert KnownGood instance to dictionary for JSON output. - + Returns: Dictionary with known_good configuration """ + modules_output = { + group_name: {name: module.to_dict() for name, module in group_modules.items()} + for group_name, group_modules in self.modules.items() + } + return { - "modules": {name: module.to_dict() for name, module in self.modules.items()}, + "modules": modules_output, "timestamp": self.timestamp } diff --git a/scripts/known_good/models/module.py b/scripts/known_good/models/module.py index 259f4f2861d..2180b9fbc85 100644 --- a/scripts/known_good/models/module.py +++ b/scripts/known_good/models/module.py @@ -2,109 +2,186 @@ from __future__ import annotations -from dataclasses import dataclass -from urllib.parse import urlparse -from typing import Any, Dict, List import logging +from dataclasses import dataclass, field +from typing import Any, Dict, List +from urllib.parse import urlparse + + +@dataclass +class Metadata: + """Metadata configuration for a module. + + Attributes: + code_root_path: Root path to the code directory + exclude_test_targets: List of test targets to exclude + langs: List of languages supported (e.g., ["cpp", "rust"]) + """ + + code_root_path: str = "//score/..." + exclude_test_targets: list[str] = field(default_factory=lambda: []) + langs: list[str] = field(default_factory=lambda: ["cpp", "rust"]) + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> Metadata: + """Create a Metadata instance from a dictionary. + + Args: + data: Dictionary containing metadata configuration + + Returns: + Metadata instance + """ + return cls( + code_root_path=data.get("code_root_path", "//score/..."), + exclude_test_targets=data.get("exclude_test_targets", []), + langs=data.get("langs", ["cpp", "rust"]), + ) + + def to_dict(self) -> Dict[str, Any]: + """Convert Metadata instance to dictionary representation. + + Returns: + Dictionary with metadata configuration + """ + return { + "code_root_path": self.code_root_path, + "exclude_test_targets": self.exclude_test_targets, + "langs": self.langs, + } @dataclass class Module: - name: str - hash: str - repo: str - version: str | None = None - patches: list[str] | None = None - branch: str = "main" - - @classmethod - def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: - """Create a Module instance from a dictionary representation. - - Args: - name: The module name - module_data: Dictionary containing module configuration with keys: - - repo (str): Repository URL - - hash or commit (str): Commit hash - - version (str, optional): Module version - - patches (list[str], optional): List of patch files - - branch (str, optional): Git branch name (default: main) - - Returns: - Module instance - """ - repo = module_data.get("repo", "") - # Support both 'hash' and 'commit' keys - commit_hash = module_data.get("hash") or module_data.get("commit", "") - version = module_data.get("version") - patches = module_data.get("patches", []) - branch = module_data.get("branch", "main") - - return cls( - name=name, - hash=commit_hash, - repo=repo, - version=version, - patches=patches if patches else None, - branch=branch - ) - - @classmethod - def parse_modules(cls, modules_dict: Dict[str, Any]) -> List[Module]: - """Parse modules dictionary into Module dataclass instances. - - Args: - modules_dict: Dictionary mapping module names to their configuration data - - Returns: - List of Module instances, skipping invalid modules - """ - modules = [] - for name, module_data in modules_dict.items(): - module = cls.from_dict(name, module_data) - - # Skip modules with missing repo and no version - if not module.repo and not module.version: - logging.warning("Skipping module %s with missing repo", name) - continue - - modules.append(module) - - return modules - - @property - def owner_repo(self) -> str: - """Return owner/repo part extracted from HTTPS GitHub URL.""" - # Examples: - # https://github.com/eclipse-score/logging.git -> eclipse-score/logging - parsed = urlparse(self.repo) - if parsed.netloc != "github.com": - raise ValueError(f"Not a GitHub URL: {self.repo}") - - # Extract path, remove leading slash and .git suffix - path = parsed.path.lstrip("/").removesuffix(".git") - - # Split and validate owner/repo format - parts = path.split("/", 2) # Split max 2 times to get owner and repo - if len(parts) < 2 or not parts[0] or not parts[1]: - raise ValueError(f"Cannot parse owner/repo from: {self.repo}") - - return f"{parts[0]}/{parts[1]}" - - def to_dict(self) -> Dict[str, Any]: - """Convert Module instance to dictionary representation for JSON output. - - Returns: - Dictionary with module configuration - """ - result: Dict[str, Any] = { - "repo": self.repo, - "hash": self.hash - } - if self.version: - result["version"] = self.version - if self.patches: - result["patches"] = self.patches - if self.branch and self.branch != "main": - result["branch"] = self.branch - return result + name: str + hash: str + repo: str + version: str | None = None + bazel_patches: list[str] | None = None + metadata: Metadata = field(default_factory=Metadata) + branch: str = "main" + pin_version: bool = False + + @classmethod + def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: + """Create a Module instance from a dictionary representation. + + Args: + name: The module name + module_data: Dictionary containing module configuration with keys: + - repo (str): Repository URL + - hash or commit (str): Commit hash + - version (str, optional): Module version (when present, hash is ignored) + - bazel_patches (list[str], optional): List of patch files for Bazel + - metadata (dict, optional): Metadata configuration + Example: { + "code_root_path": "path/to/code/root", + "exclude_test_targets": [""], + "langs": ["cpp", "rust"] + } + If not present, uses default Metadata values. + - branch (str, optional): Git branch name (default: main) + - pin_version (bool, optional): If true, module hash is not updated + to latest HEAD by update scripts (default: false) + + Returns: + Module instance + """ + repo = module_data.get("repo", "") + # Support both 'hash' and 'commit' keys + commit_hash = module_data.get("hash") or module_data.get("commit", "") + version = module_data.get("version") + # Support both 'bazel_patches' and legacy 'patches' keys + bazel_patches = module_data.get("bazel_patches") or module_data.get( + "patches", [] + ) + + # Parse metadata - if not present or is None/empty dict, use defaults + metadata_data = module_data.get("metadata") + if metadata_data is not None: + metadata = Metadata.from_dict(metadata_data) + # if any("*" in target for target in metadata.exclude_test_targets): + # raise Exception( + # f"Module {name} has wildcard '*' in exclude_test_targets, which is not allowed. " + # "Please specify explicit test targets to exclude or remove the key if no exclusions are needed." + # ) + else: + # If metadata key is missing, create with defaults + metadata = Metadata() + + branch = module_data.get("branch", "main") + pin_version = module_data.get("pin_version", False) + + return cls( + name=name, + hash=commit_hash, + repo=repo, + version=version, + bazel_patches=bazel_patches if bazel_patches else None, + metadata=metadata, + branch=branch, + pin_version=pin_version, + ) + + @classmethod + def parse_modules(cls, modules_dict: Dict[str, Any]) -> List[Module]: + """Parse modules dictionary into Module dataclass instances. + + Args: + modules_dict: Dictionary mapping module names to their configuration data + + Returns: + List of Module instances, skipping invalid modules + """ + modules = [] + for name, module_data in modules_dict.items(): + module = cls.from_dict(name, module_data) + + # Skip modules with missing repo and no version + if not module.repo and not module.version: + logging.warning("Skipping module %s with missing repo", name) + continue + + modules.append(module) + + return modules + + @property + def owner_repo(self) -> str: + """Return owner/repo part extracted from HTTPS GitHub URL.""" + # Examples: + # https://github.com/eclipse-score/logging.git -> eclipse-score/logging + parsed = urlparse(self.repo) + if parsed.netloc != "github.com": + raise ValueError(f"Not a GitHub URL: {self.repo}") + + # Extract path, remove leading slash and .git suffix + path = parsed.path.lstrip("/").removesuffix(".git") + + # Split and validate owner/repo format + parts = path.split("/", 2) # Split max 2 times to get owner and repo + if len(parts) < 2 or not parts[0] or not parts[1]: + raise ValueError(f"Cannot parse owner/repo from: {self.repo}") + + return f"{parts[0]}/{parts[1]}" + + def to_dict(self) -> Dict[str, Any]: + """Convert Module instance to dictionary representation for JSON output. + + Returns: + Dictionary with module configuration + """ + result: Dict[str, Any] = { + "repo": self.repo, + "hash": self.hash, + "metadata": self.metadata.to_dict(), + } + if self.version: + result["version"] = self.version + if self.bazel_patches: + result["bazel_patches"] = self.bazel_patches + if self.branch and self.branch != "main": + result["branch"] = self.branch + if self.pin_version: + result["pin_version"] = True + return result diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index 17cd796e010..028e6159885 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -38,11 +38,11 @@ def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[s if module.repo in repo_commit_dict: commit = repo_commit_dict[module.repo] - # Generate patches lines if patches exist + # Generate patches lines if bazel_patches exist patches_lines = "" - if module.patches: + if module.bazel_patches: patches_lines = " patches = [\n" - for patch in module.patches: + for patch in module.bazel_patches: patches_lines += f' "{patch}",\n' patches_lines += " ],\n patch_strip = 1,\n" @@ -143,22 +143,27 @@ def generate_file_content(args: argparse.Namespace, modules: List[Module], repo_ def main() -> None: parser = argparse.ArgumentParser( - description="Generate score_modules.MODULE.bazel from known_good.json", + description="Generate score_modules.MODULE.bazel file(s) from known_good.json", formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: # Generate MODULE.bazel from known_good.json python3 scripts/known_good/update_module_from_known_good.py - # Use a custom input and output file + # Use a custom input file (generates score_modules_{group}.MODULE.bazel for each group) python3 scripts/known_good/update_module_from_known_good.py \\ - --known custom_known_good.json \\ - --output custom_modules.MODULE.bazel + --known custom_known_good.json + + # Specify output directory for grouped modules + python3 scripts/known_good/update_module_from_known_good.py \\ + --output-dir ./bazel_modules # Preview without writing python3 scripts/known_good/update_module_from_known_good.py --dry-run -Note: To override repository commits, use scripts/known_good/override_known_good_repo.py first. +Note: + - Generates score_modules_{group}.MODULE.bazel for each group + - To override repository commits, use scripts/known_good/override_known_good_repo.py first. """ ) parser.add_argument( @@ -167,9 +172,9 @@ def main() -> None: help="Path to known_good.json (default: known_good.json)" ) parser.add_argument( - "--output", - default="score_modules.MODULE.bazel", - help="Output file path (default: score_modules.MODULE.bazel)" + "--output-dir", + default=".", + help="Output directory for grouped structure files (default: current directory)" ) parser.add_argument( "--dry-run", @@ -192,18 +197,17 @@ def main() -> None: default="git", help="Type of override to use (default: git)" ) - + args = parser.parse_args() - + if args.verbose: logging.getLogger().setLevel(logging.INFO) - + known_path = os.path.abspath(args.known) - output_path = os.path.abspath(args.output) - + if not os.path.exists(known_path): raise SystemExit(f"known_good.json not found at {known_path}") - + # Parse repo overrides repo_commit_dict = {} if args.repo_override: @@ -216,7 +220,7 @@ def main() -> None: ) repo_url, commit_hash = entry.split("@", 1) repo_commit_dict[repo_url] = commit_hash - + # Load known_good.json try: known_good = load_known_good(Path(known_path)) @@ -224,26 +228,47 @@ def main() -> None: raise SystemExit(f"ERROR: {e}") except ValueError as e: raise SystemExit(f"ERROR: {e}") - + if not known_good.modules: raise SystemExit("No modules found in known_good.json") - - # Get modules list - modules = list(known_good.modules.values()) - - # Generate file content - content = generate_file_content(args, modules, repo_commit_dict, known_good.timestamp) - - if args.dry_run: - print(f"Dry run: would write to {output_path}\n") - print("---- BEGIN GENERATED CONTENT ----") - print(content) - print("---- END GENERATED CONTENT ----") - print(f"\nGenerated {len(modules)} git_override entries") - else: - with open(output_path, "w", encoding="utf-8") as f: - f.write(content) - print(f"Generated {output_path} with {len(modules)} {args.override_type}_override entries") + + # Generate files based on structure (flat vs grouped) + output_dir = os.path.abspath(args.output_dir) + os.makedirs(output_dir, exist_ok=True) + + generated_files = [] + total_module_count = 0 + + for group_name, group_modules in known_good.modules.items(): + modules = list(group_modules.values()) + + if not modules: + logging.warning(f"Skipping empty group: {group_name}") + continue + + # Determine output filename: score_modules_{group}.MODULE.bazel + output_filename = f"score_modules_{group_name}.MODULE.bazel" + + output_path = os.path.join(output_dir, output_filename) + + # Generate file content + content = generate_file_content(args, modules, repo_commit_dict, known_good.timestamp) + + if args.dry_run: + print(f"\nDry run: would write to {output_path}\n") + print("---- BEGIN GENERATED CONTENT ----") + print(content) + print("---- END GENERATED CONTENT ----") + print(f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'") + else: + with open(output_path, "w", encoding="utf-8") as f: + f.write(content) + generated_files.append(output_path) + total_module_count += len(modules) + print(f"Generated {output_path} with {len(modules)} {args.override_type}_override entries") + + if not args.dry_run and generated_files: + print(f"\nSuccessfully generated {len(generated_files)} file(s) with {total_module_count} total modules") if __name__ == "__main__": diff --git a/scripts/known_good/update_module_latest.py b/scripts/known_good/update_module_latest.py index 44006afe606..d5184bd2f03 100755 --- a/scripts/known_good/update_module_latest.py +++ b/scripts/known_good/update_module_latest.py @@ -132,6 +132,10 @@ def main(argv: list[str]) -> int: print("INFO: --no-gh specified; ignoring installed 'gh' CLI", file=sys.stderr) for mod in known_good.modules.values(): + if mod.pin_version: + print(f"{mod.name}: pinned, skipping") + continue + try: branch = mod.branch if mod.branch else args.branch if use_gh: diff --git a/scripts/quality_runners.py b/scripts/quality_runners.py new file mode 100644 index 00000000000..5383bdd8ce6 --- /dev/null +++ b/scripts/quality_runners.py @@ -0,0 +1,321 @@ +import argparse +import re +import select +import sys +from dataclasses import dataclass +from pathlib import Path +from pprint import pprint +from subprocess import PIPE, Popen + +from known_good.models.known_good import load_known_good +from known_good.models.module import Module + + +@dataclass +class ProcessResult: + stdout: str + stderr: str + exit_code: int + + +def run_unit_test_with_coverage(module: Module) -> dict[str, str | int]: + print("QR: Running unit tests...") + + call = [ + "bazel", + "coverage", # Call coverage instead of test to get .dat files already + "--test_verbose_timeout_warnings", + "--test_timeout=1200", + "--config=unit-tests", + "--test_summary=testcase", + "--test_output=errors", + "--nocache_test_results", + f"--instrumentation_filter=@{module.name}", + f"@{module.name}{module.metadata.code_root_path}", + "--", + ] + [ + # Exclude test targets specified in module metadata, if any + f"-@{module.name}{target}" + for target in module.metadata.exclude_test_targets + ] + + result = run_command(call) + summary = extract_ut_summary(result.stdout) + return {**summary, "exit_code": result.exit_code} + + +def run_cpp_coverage_extraction(module: Module, output_path: Path) -> int: + print("QR: Running cpp coverage analysis...") + + result_cpp = cpp_coverage(module, output_path) + summary = extract_coverage_summary(result_cpp.stdout) + + return {**summary, "exit_code": result_cpp.exit_code} + + +def cpp_coverage(module: Module, artifact_dir: Path) -> ProcessResult: + # .dat files are already generated in UT step + + # Run genhtml to generate the HTML report and get the summary + # Create dedicated output directory for this module's coverage reports + output_dir = artifact_dir / "cpp" / module.name + output_dir.mkdir(parents=True, exist_ok=True) + # Find input locations + bazel_coverage_output_directory = run_command( + ["bazel", "info", "output_path"] + ).stdout.strip() + bazel_source_directory = run_command( + ["bazel", "info", "output_base"] + ).stdout.strip() + + genhtml_call = [ + "genhtml", + f"{bazel_coverage_output_directory}/_coverage/_coverage_report.dat", + f"--output-directory={output_dir}", + # f"--source-directory={bazel_source_directory}", + # "--synthesize-missing", + "--show-details", + "--legend", + "--function-coverage", + "--branch-coverage", + ] + genhtml_result = run_command(genhtml_call, cwd=bazel_source_directory) + + return genhtml_result + + +def generate_markdown_report( + data: dict[str, dict[str, int]], + title: str, + columns: list[str], + output_path: Path = Path("unit_test_summary.md"), +) -> None: + # Build header and separator + title = f"# {title}\n" + header = "| " + " | ".join(columns) + " |" + separator = "| " + " | ".join("---" for _ in columns) + " |" + + # Build rows + rows = [] + for name, stats in data.items(): + rows.append( + "| " + + " | ".join([name] + [str(stats.get(col, "")) for col in columns[1:]]) + + " |" + ) + + md = "\n".join([title, header, separator] + rows + [""]) + output_path.write_text(md) + + +def extract_ut_summary(logs: str) -> dict[str, int]: + summary = {"passed": 0, "failed": 0, "skipped": 0, "total": 0} + + pattern_summary_line = re.compile(r"Test cases: finished.*") + if match := pattern_summary_line.search(logs): + summary_line = match.group(0) + else: + print("QR: Summary line not found in logs.") + return summary + + pattern_passed = re.compile(r"(\d+) passing") + pattern_skipped = re.compile(r"(\d+) skipped") + pattern_failed = re.compile(r"(\d+) failing") + pattern_total = re.compile(r"out of (\d+) test cases") + + if match := pattern_passed.search(summary_line): + summary["passed"] = int(match.group(1)) + if match := pattern_skipped.search(summary_line): + summary["skipped"] = int(match.group(1)) + if match := pattern_failed.search(summary_line): + summary["failed"] = int(match.group(1)) + if match := pattern_total.search(summary_line): + summary["total"] = int(match.group(1)) + return summary + + +def extract_coverage_summary(logs: str) -> dict[str, str]: + """ + Extract coverage summary from genhtml output. + + Args: + logs: Output from genhtml command + + Returns: + Dictionary with coverage percentages for lines, functions, and branches + """ + summary = {"lines": "", "functions": "", "branches": ""} + + # Pattern to match coverage percentages in genhtml output + # Example: " lines......: 93.0% (1234 of 1327 lines)" + pattern_lines = re.compile(r"lines\.+:\s+([\d.]+%)") + pattern_functions = re.compile(r"functions\.+:\s+([\d.]+%)") + pattern_branches = re.compile(r"branches\.+:\s+([\d.]+%)") + + if match := pattern_lines.search(logs): + summary["lines"] = match.group(1) + if match := pattern_functions.search(logs): + summary["functions"] = match.group(1) + if match := pattern_branches.search(logs): + summary["branches"] = match.group(1) + + return summary + + +def run_command(command: list[str], **kwargs) -> ProcessResult: + """ + Run a command and print output live while storing it. + + Args: + command: Command and arguments to execute + + Returns: + ProcessResult containing stdout, stderr, and exit code + """ + + stdout_data = [] + stderr_data = [] + + print(f"QR: Running command: `{' '.join(command)}`") + with Popen(command, stdout=PIPE, stderr=PIPE, text=True, bufsize=1, **kwargs) as p: + # Use select to read from both streams without blocking + streams = { + p.stdout: (stdout_data, sys.stdout), + p.stderr: (stderr_data, sys.stderr), + } + + try: + while p.poll() is None or streams: + # Check which streams have data available + readable, _, _ = select.select(list(streams.keys()), [], [], 0.1) + + for stream in readable: + line = stream.readline() + if line: + storage, output_stream = streams[stream] + print(line, end="", file=output_stream, flush=True) + storage.append(line) + else: + # Stream closed + del streams[stream] + + exit_code = p.returncode + + except Exception: + p.kill() + p.wait() + raise + + return ProcessResult( + stdout="".join(stdout_data), stderr="".join(stderr_data), exit_code=exit_code + ) + + +def parse_arguments() -> argparse.Namespace: + import argparse + + parser = argparse.ArgumentParser(description="Run quality checks on modules.") + parser.add_argument( + "--known-good-path", + type=Path, + default="known_good.json", + help="Path to the known good JSON file", + ) + parser.add_argument( + "--coverage-output-dir", + type=Path, + default=Path(__file__).parent.parent / "artifacts/coverage", + help="Path to the directory for coverage output files", + ) + return parser.parse_args() + + +def main() -> bool: + args = parse_arguments() + args.coverage_output_dir.mkdir(parents=True, exist_ok=True) + path_to_docs = Path(__file__).parent.parent / "docs/verification" + + known = load_known_good(args.known_good_path.resolve()) + + unit_tests_summary, coverage_summary = {}, {} + + CURRENTLY_DISABLED_MODULES = [ + "score_communication", + "score_scrample", + "score_logging", + "score_lifecycle_health", + "score_feo", + ] + + for module in known.modules["target_sw"].values(): + if module.name in CURRENTLY_DISABLED_MODULES: + print( + "########################################################################", + flush=True, + ) + print( + f"Skipping module {module.name} as it is currently disabled for unit tests.", + flush=True, + ) + print( + "########################################################################", + flush=True, + ) + continue + else: + print( + "########################################################################", + flush=True, + ) + print(f"QR: Testing module: {module.name}") + print( + "########################################################################", + flush=True, + ) + + unit_tests_summary[module.name] = run_unit_test_with_coverage(module=module) + + if "cpp" in module.metadata.langs: + coverage_summary[module.name] = run_cpp_coverage_extraction( + module=module, output_path=args.coverage_output_dir + ) + print( + "########################################################################", + flush=True, + ) + print(f"QR: Finished testing module: {module.name}") + print( + "########################################################################", + flush=True, + ) + + generate_markdown_report( + unit_tests_summary, + title="Unit Test Execution Summary", + columns=["module", "passed", "failed", "skipped", "total"], + output_path=path_to_docs / "unit_test_summary.md", + ) + print("QR: UNIT TEST EXECUTION SUMMARY".center(120, "=")) + pprint(unit_tests_summary, width=120) + + generate_markdown_report( + coverage_summary, + title="Coverage Analysis Summary", + columns=["module", "lines", "functions", "branches"], + output_path=path_to_docs / "coverage_summary.md", + ) + print("QR: COVERAGE ANALYSIS SUMMARY".center(120, "=")) + pprint(coverage_summary, width=120) + + # Check all exit codes and return non-zero if any test or coverage extraction failed + return any( + result_ut["exit_code"] != 0 or result_cov["exit_code"] != 0 + for result_ut, result_cov in zip( + unit_tests_summary.values(), coverage_summary.values() + ) + ) + + +if __name__ == "__main__": + sys.stdout.reconfigure(line_buffering=True) + sys.exit(main()) diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh deleted file mode 100755 index 542fe8c9285..00000000000 --- a/scripts/run_unit_tests.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bash -set -uo pipefail - -# Integration unit test script. - -CONFIG=${CONFIG:-x86_64-linux} -LOG_DIR=${LOG_DIR:-_logs/logs_ut} -SUMMARY_FILE=${SUMMARY_FILE:-_logs/ut_summary.md} -mkdir -p "${LOG_DIR}" || true - -declare -A UT_TARGET_GROUPS=( - [baselibs]="@score_baselibs//score/... -- \ - -@score_baselibs//score/language/safecpp/aborts_upon_exception:abortsuponexception_toolchain_test \ - -@score_baselibs//score/containers:dynamic_array_test \ - -@score_baselibs//score/mw/log/configuration:* \ - -@score_baselibs//score/json/examples:*" - # DISABLED: All communication tests fail with linker error: - # undefined reference to 'score::mw::log::detail::CreateRecorderFactory()' - # The logging library symbols are not properly available during linking. - # This affects both direct communication tests and tests that depend on logging. - # [communication]="@score_communication//score/mw/com/impl/... -- \ - # -@score_communication//score/mw/com/impl:unit_test_runtime_single_exec \ - # -@score_communication//score/mw/com/impl/configuration:config_parser_test \ - # -@score_communication//score/mw/com/impl/configuration:configuration_test \ - # -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test" - [persistency]="@score_persistency//src/rust/rust_kvs:tests" # C++ test has linker issues with logging library - [orchestrator]="@score_orchestrator//src/..." # ok - [kyron]="@score_kyron//:unit_tests" # ok - [feo]="--build_tests_only -- @score_feo//... -@score_feo//:format.check_Rust_with_rustfmt" # ok (flag required or error from docs) - # [logging]="@score_logging//score/... \ - # --@score_baselibs//score/memory/shared/flags:use_typedshmd=False \ - # --@score_baselibs//score/json:base_library=nlohmann \ - # --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False \ - # --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False \ - # --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False \ - # --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False \ - # --@score_logging//score/datarouter/build_configuration_flags:dlt_file_transfer_feature=False \ - # --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True \ - # --test_tag_filters=-manual \ - # -- -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT \ - # -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT \ - # -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT \ - # -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test \ - # -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT " -) - -# Markdown table header -echo -e "Status\tPassed\tFailed\tSkipped\tTotal\tGroup\tDuration(s)" >> "${SUMMARY_FILE}" - -# Track if any test failed -any_failed=0 - -for group in "${!UT_TARGET_GROUPS[@]}"; do - targets="${UT_TARGET_GROUPS[$group]}" - command="bazel test --config="${CONFIG}" ${targets}" - echo "===========================================" - echo "Running unit tests for group: $group" - echo "${command}" - echo "===========================================" - start_ts=$(date +%s) - out=$(bazel test --test_summary=testcase --test_output=errors --nocache_test_results --config="${CONFIG}" ${targets} 2>&1 | tee "${LOG_DIR}/ut_${group}_output.log") - build_status=${PIPESTATUS[0]} - end_ts=$(date +%s) - duration=$(( end_ts - start_ts )) - - # Parse bazel output - tests_passed=$(echo "$out" | grep -Eo '[0-9]+ passing' | grep -Eo '[0-9]+' | head -n1) - tests_failed=$(echo "$out" | grep -Eo '[0-9]+ failing' | grep -Eo '[0-9]+' | head -n1) - tests_skipped=$(echo "$out" | grep -Eo '[0-9]+ skipped' | grep -Eo '[0-9]+' | head -n1) - tests_executed=$(echo "$out" | grep -Eo '[0-9]+ test cases' | grep -Eo '[0-9]+' | head -n1) - if [[ ${build_status} -eq 0 ]]; then - status_symbol="✅" - else - status_symbol="❌" - any_failed=1 - fi - - # Append as a markdown table row - echo -e "${status_symbol}\t${tests_passed}\t${tests_failed}\t${tests_skipped}\t${tests_executed}\t${group}\t${duration}s" | tee -a "${SUMMARY_FILE}" - echo "===========================================" - echo -e "\n\n" -done - -# Align the summary table columns -column -t -s $'\t' "${SUMMARY_FILE}" > "${SUMMARY_FILE}.tmp" && mv "${SUMMARY_FILE}.tmp" "${SUMMARY_FILE}" - -# Final check: exit with non-zero if any test failed -if [[ $any_failed -ne 0 ]]; then - echo "Some unit test groups failed. Exiting with non-zero status." - exit 1 -fi diff --git a/integration/showcases/BUILD b/showcases/BUILD similarity index 100% rename from integration/showcases/BUILD rename to showcases/BUILD diff --git a/integration/showcases/cli/BUILD b/showcases/cli/BUILD similarity index 100% rename from integration/showcases/cli/BUILD rename to showcases/cli/BUILD diff --git a/integration/showcases/cli/README.md b/showcases/cli/README.md similarity index 100% rename from integration/showcases/cli/README.md rename to showcases/cli/README.md diff --git a/integration/showcases/cli/main.rs b/showcases/cli/main.rs similarity index 100% rename from integration/showcases/cli/main.rs rename to showcases/cli/main.rs diff --git a/integration/showcases/kyron/BUILD b/showcases/kyron/BUILD similarity index 100% rename from integration/showcases/kyron/BUILD rename to showcases/kyron/BUILD diff --git a/integration/showcases/kyron/kyron.score.json b/showcases/kyron/kyron.score.json similarity index 100% rename from integration/showcases/kyron/kyron.score.json rename to showcases/kyron/kyron.score.json diff --git a/integration/showcases/kyron/main.rs b/showcases/kyron/main.rs similarity index 100% rename from integration/showcases/kyron/main.rs rename to showcases/kyron/main.rs diff --git a/integration/showcases/orchestration_persistency/BUILD b/showcases/orchestration_persistency/BUILD similarity index 100% rename from integration/showcases/orchestration_persistency/BUILD rename to showcases/orchestration_persistency/BUILD diff --git a/integration/showcases/orchestration_persistency/main.rs b/showcases/orchestration_persistency/main.rs similarity index 100% rename from integration/showcases/orchestration_persistency/main.rs rename to showcases/orchestration_persistency/main.rs diff --git a/integration/showcases/orchestration_persistency/orch_per.score.json b/showcases/orchestration_persistency/orch_per.score.json similarity index 100% rename from integration/showcases/orchestration_persistency/orch_per.score.json rename to showcases/orchestration_persistency/orch_per.score.json diff --git a/integration/showcases/simple_lifecycle/BUILD b/showcases/simple_lifecycle/BUILD similarity index 100% rename from integration/showcases/simple_lifecycle/BUILD rename to showcases/simple_lifecycle/BUILD diff --git a/integration/showcases/simple_lifecycle/configs/BUILD b/showcases/simple_lifecycle/configs/BUILD similarity index 100% rename from integration/showcases/simple_lifecycle/configs/BUILD rename to showcases/simple_lifecycle/configs/BUILD diff --git a/integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json b/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json similarity index 100% rename from integration/showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json rename to showcases/simple_lifecycle/configs/cpp_supervised_app_demo.json diff --git a/integration/showcases/simple_lifecycle/configs/hm_demo.json b/showcases/simple_lifecycle/configs/hm_demo.json similarity index 100% rename from integration/showcases/simple_lifecycle/configs/hm_demo.json rename to showcases/simple_lifecycle/configs/hm_demo.json diff --git a/integration/showcases/simple_lifecycle/configs/lm_demo.json b/showcases/simple_lifecycle/configs/lm_demo.json similarity index 100% rename from integration/showcases/simple_lifecycle/configs/lm_demo.json rename to showcases/simple_lifecycle/configs/lm_demo.json diff --git a/integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json b/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json similarity index 100% rename from integration/showcases/simple_lifecycle/configs/rust_supervised_app_demo.json rename to showcases/simple_lifecycle/configs/rust_supervised_app_demo.json diff --git a/integration/showcases/simple_lifecycle/lifecycle_signal.sh b/showcases/simple_lifecycle/lifecycle_signal.sh similarity index 100% rename from integration/showcases/simple_lifecycle/lifecycle_signal.sh rename to showcases/simple_lifecycle/lifecycle_signal.sh diff --git a/integration/showcases/simple_lifecycle/simple_lifecycle.score.json b/showcases/simple_lifecycle/simple_lifecycle.score.json similarity index 100% rename from integration/showcases/simple_lifecycle/simple_lifecycle.score.json rename to showcases/simple_lifecycle/simple_lifecycle.score.json diff --git a/integration/showcases/standalone/BUILD b/showcases/standalone/BUILD similarity index 100% rename from integration/showcases/standalone/BUILD rename to showcases/standalone/BUILD From 0fe64e18fca7e1ffda634e76bbe0e74772035a17 Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Wed, 18 Feb 2026 12:52:40 +0100 Subject: [PATCH 28/55] Align deps to use latest mains (#103) * Align deps to use latest mains - logging used from branch to unblock further work * Prohibit both hash and version * Cleanup based on missed review from #101 * Adapt EB image * Fix QNX build * fix docs deployment * enable UTs for logging - add parsing `extra_test_config` from known_good.json - cleanup code * bump persistency * add baselibs config * Handle errors in split and cleanup workflows * add user selected test execution * fix communication metadata --------- Co-authored-by: Piotr Korkus --- .bazelrc | 4 +- .github/workflows/build_and_test_autosd.yml | 3 + .github/workflows/build_and_test_ebclfsa.yml | 3 + .github/workflows/build_and_test_linux.yml | 21 +--- .github/workflows/test_and_docs.yml | 2 +- .../score_modules_target_sw.MODULE.bazel | 34 +++--- images/autosd_x86_64/BUILD.bazel | 1 - .../scrample_integration/BUILD | 12 +- .../etc/mw_com_config.json | 63 ---------- .../scrample_integration/src/main.cc | 4 +- known_good.json | 78 ++++++++---- .../baselibs/0001-RH-exception-header.patch | 12 -- .../baselibs/0002-RH-algorithm-header.patch | 36 ------ .../baselibs/003-acl-fixes-for-aarch64.patch | 28 +---- patches/baselibs/fix_hard_coded_amd64.patch | 32 ----- .../001-expose-comm-examples.patch | 12 ++ patches/communication/BUILD | 0 scripts/known_good/models/module.py | 25 ++-- .../update_module_from_known_good.py | 4 +- scripts/quality_runners.py | 114 ++++++++---------- showcases/BUILD | 3 +- showcases/standalone/BUILD | 10 +- showcases/standalone/com.score.json | 24 ++++ 23 files changed, 211 insertions(+), 314 deletions(-) delete mode 100644 images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json delete mode 100644 patches/baselibs/0001-RH-exception-header.patch delete mode 100644 patches/baselibs/0002-RH-algorithm-header.patch delete mode 100644 patches/baselibs/fix_hard_coded_amd64.patch create mode 100644 patches/communication/001-expose-comm-examples.patch create mode 100644 patches/communication/BUILD create mode 100644 showcases/standalone/com.score.json diff --git a/.bazelrc b/.bazelrc index 80cfd77a936..48b177fec6b 100644 --- a/.bazelrc +++ b/.bazelrc @@ -4,7 +4,7 @@ # common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/ common --registry=https://bcr.bazel.build -common --credential_helper=*.qnx.com=%workspace%/scripts/qnx_credential_helper.py +common --credential_helper=*.qnx.com=%workspace%/.github/tools/qnx_credential_helper.py common --credential_helper_timeout="60s" # Java @@ -13,7 +13,6 @@ build --tool_java_language_version=17 build --java_runtime_version=remotejdk_17 build --tool_java_runtime_version=remotejdk_17 -build:_common --@score_baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False build:_common --@score_baselibs//score/json:base_library=nlohmann build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False @@ -60,6 +59,7 @@ build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 test:unit-tests --config=linux-x86_64 test:unit-tests --build_tests_only +test:unit-tests --test_tag_filters=-manual # Coverage configuration for C++ coverage --features=coverage diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index f6428275871..445c628f243 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -30,6 +30,9 @@ jobs: runs-on: ubuntu-latest steps: + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 + - name: Checkout repository uses: actions/checkout@v4 diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index 88a7f662e87..c84d186282a 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -30,6 +30,9 @@ jobs: image: ghcr.io/eclipse-score/devcontainer:v1.1.0 steps: + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 + - name: Checkout repository uses: actions/checkout@v4 diff --git a/.github/workflows/build_and_test_linux.yml b/.github/workflows/build_and_test_linux.yml index 317deb7d84c..09c98021126 100644 --- a/.github/workflows/build_and_test_linux.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -27,25 +27,8 @@ jobs: contents: write # required to upload release assets steps: - - name: Show disk space before build - run: | - echo 'Disk space before build:' - df -h - - - name: Removing unneeded software - run: | - echo "Removing unneeded software... " - if [ -d /usr/share/dotnet ]; then echo "Removing dotnet..."; start=$(date +%s); sudo rm -rf /usr/share/dotnet; end=$(date +%s); echo "Duration: $((end-start))s"; fi - #if [ -d /usr/local/lib/android ]; then echo "Removing android..."; start=$(date +%s); sudo rm -rf /usr/local/lib/android; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /opt/ghc ]; then echo "Removing haskell (ghc)..."; start=$(date +%s); sudo rm -rf /opt/ghc; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/.ghcup ]; then echo "Removing haskell (ghcup)..."; start=$(date +%s); sudo rm -rf /usr/local/.ghcup; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/share/swift ]; then echo "Removing swift..."; start=$(date +%s); sudo rm -rf /usr/share/swift; end=$(date +%s); echo "Duration: $((end-start))s"; fi - if [ -d /usr/local/share/chromium ]; then echo "Removing chromium..."; start=$(date +%s); sudo rm -rf /usr/local/share/chromium; end=$(date +%s); echo "Duration: $((end-start))s"; fi - - - name: Show disk space after cleanup - run: | - echo 'Disk space after cleanup:' - df -h + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 - name: Checkout repository uses: actions/checkout@v4.2.2 diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index 536b01f3714..366339ce7e7 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -209,4 +209,4 @@ jobs: uses: eclipse-score/cicd-workflows/.github/actions/deploy-versioned-pages@main with: source_folder: extracted_docs/_build - deployment_type: ${{ inputs.deployment_type }} + deployment_type: workflow diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index f55d192e315..61f88f087d3 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -15,13 +15,12 @@ # Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_baselibs") -single_version_override( +git_override( module_name = "score_baselibs", - version = "0.1.3", + remote = "https://github.com/eclipse-score/baselibs.git", + commit = "158fe6a7b791c58f6eac5f7e4662b8db0cf9ac6e", patches = [ "//patches/baselibs:003-acl-fixes-for-aarch64.patch", - "//patches/baselibs:0001-RH-exception-header.patch", - "//patches/baselibs:0002-RH-algorithm-header.patch", ], patch_strip = 1, ) @@ -30,46 +29,51 @@ bazel_dep(name = "score_baselibs_rust") git_override( module_name = "score_baselibs_rust", remote = "https://github.com/eclipse-score/baselibs_rust.git", - commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", + commit = "9f781acfb6d1a8fa06012ce772b0befb304acf31", ) bazel_dep(name = "score_communication") -single_version_override( +git_override( module_name = "score_communication", - version = "0.1.1", + remote = "https://github.com/eclipse-score/communication.git", + commit = "56448a5589a5f7d3921b873e8127b824a8c1ca95", + patches = [ + "//patches/communication:001-expose-comm-examples.patch", + ], + patch_strip = 1, ) bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", - commit = "0037034bf853e5f955f028fab54ed319fb0441c3", + commit = "9692dadab51c677183262e8870c5425ab1797c4f", ) bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "18e136c34750c5db707f27f917d52efc7541e087", + commit = "675007a2baa226fad1e2979ed732360dc111d056", ) bazel_dep(name = "score_kyron") git_override( module_name = "score_kyron", remote = "https://github.com/eclipse-score/kyron.git", - commit = "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", + commit = "d4d0afc1dd733a0c8a4aba9cc2b2b3a58d38ebf6", ) bazel_dep(name = "score_lifecycle_health") git_override( module_name = "score_lifecycle_health", remote = "https://github.com/eclipse-score/lifecycle.git", - commit = "84303c2e48c7e8e2481752170efe82d0afd45f1e", + commit = "14ee704eeac03e03ca10bece5de8b694d3c5e2dd", ) -bazel_dep(name = "score_scrample") +bazel_dep(name = "score_logging") git_override( - module_name = "score_scrample", - remote = "https://github.com/eclipse-score/scrample.git", - commit = "0c2e72fc2a72a7dce4d9ddeec8470a861b08d5e1", + module_name = "score_logging", + remote = "https://github.com/qorix-group/logging.git", + commit = "3718923aafc273531b1d0b3a240d821db24afbbc", ) diff --git a/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel index 7d57b6b3227..6c71e0e90e8 100644 --- a/images/autosd_x86_64/BUILD.bazel +++ b/images/autosd_x86_64/BUILD.bazel @@ -27,7 +27,6 @@ rpm_package( "//showcases/cli:cli", "//showcases/kyron:kyron_example", "//showcases/orchestration_persistency:orch_per_example", - "@score_scrample//src:scrample" ], config_dir = "/etc/score", data = [ diff --git a/images/ebclfsa_aarch64/scrample_integration/BUILD b/images/ebclfsa_aarch64/scrample_integration/BUILD index 84fe2cfa9fd..b310ca159fb 100644 --- a/images/ebclfsa_aarch64/scrample_integration/BUILD +++ b/images/ebclfsa_aarch64/scrample_integration/BUILD @@ -12,9 +12,10 @@ # ******************************************************************************* load("@score_baselibs//score/language/safecpp:toolchain_features.bzl", "COMPILER_WARNING_FEATURES") +# TODO: Port image to CLI and all showcases as for other images genrule( name = "scrample_sil_r", - srcs = ["@score_scrample//src:scrample"], + srcs = ["@score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp"], outs = ["scrample_sil"], cmd = "cp $(SRCS) $@ && \ chmod ugo+w $@ && \ @@ -44,7 +45,6 @@ cc_binary( ], features = COMPILER_WARNING_FEATURES, deps = [ - "@score_scrample//src:scrample", ], ) @@ -68,11 +68,11 @@ genrule( genrule( name = "upload", srcs = [ - "@score_scrample//src:scrample", + "@score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp", ":scrample_sil", ":hi_app", ":fastdev-image", - "etc/mw_com_config.json", + "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json", "etc/logging.json", "run_qemu.sh", ], @@ -82,9 +82,9 @@ genrule( $(location run_qemu.sh) $(RULEDIR)/ebcl-qemuarm64-modified -pidfile $(RULEDIR)/qemu.pid > $(RULEDIR)/qemu_upload.log &\ sleep 30 ; \ sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location :scrample_sil) root@localhost:/usr/bin &&\ - sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location @score_scrample//src:scrample) root@localhost:/usr/bin &&\ + sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location @score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp) root@localhost:/usr/bin &&\ sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location :hi_app) root@localhost:/usr/bin &&\ - sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location etc/mw_com_config.json) root@localhost:/etc/ &&\ + sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location @score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json) root@localhost:/etc/ &&\ sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location etc/logging.json) root@localhost:/etc/ &&\ sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost sync &&\ sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ diff --git a/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json b/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json deleted file mode 100644 index 1e104bd4843..00000000000 --- a/images/ebclfsa_aarch64/scrample_integration/etc/mw_com_config.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "serviceTypes": [ - { - "serviceTypeName": "/score/MapApiLanesStamped", - "version": { - "major": 1, - "minor": 0 - }, - "bindings": [ - { - "binding": "SHM", - "serviceId": 6432, - "events": [ - { - "eventName": "map_api_lanes_stamped", - "eventId": 1 - }, - { - "eventName": "dummy_data_stamped", - "eventId": 2 - } - ] - } - ] - } - ], - "serviceInstances": [ - { - "instanceSpecifier": "score/MapApiLanesStamped", - "serviceTypeName": "/score/MapApiLanesStamped", - "version": { - "major": 1, - "minor": 0 - }, - "instances": [ - { - "instanceId": 1, - "allowedConsumer": { - "QM": [ - 4002, - 0 - ] - }, - "allowedProvider": { - "QM": [ - 4001, - 0 - ] - }, - "asil-level": "QM", - "binding": "SHM", - "events": [ - { - "eventName": "map_api_lanes_stamped", - "numberOfSampleSlots": 10, - "maxSubscribers": 3 - } - ] - } - ] - } - ] -} diff --git a/images/ebclfsa_aarch64/scrample_integration/src/main.cc b/images/ebclfsa_aarch64/scrample_integration/src/main.cc index 72d64002153..4e4296a7434 100644 --- a/images/ebclfsa_aarch64/scrample_integration/src/main.cc +++ b/images/ebclfsa_aarch64/scrample_integration/src/main.cc @@ -18,7 +18,7 @@ int main() { std::cout << "HI_App: Starting scrample_sil" << std::endl; const char *c_args[] = { - "/usr/bin/scrample_sil", + "/usr/bin/ipc_bridge_cpp", "-n", "10", "-m", "recv", "-t", "200", @@ -26,7 +26,7 @@ int main() { nullptr }; - execve("/usr/bin/scrample_sil", const_cast(c_args), nullptr); + execve("/usr/bin/ipc_bridge_cpp", const_cast(c_args), nullptr); std::cerr << "execve failed, sleeping... Reason: " << strerror(errno) << std::endl; diff --git a/known_good.json b/known_good.json index 6052df4856e..5235f5eedee 100644 --- a/known_good.json +++ b/known_good.json @@ -3,44 +3,55 @@ "target_sw": { "score_baselibs": { "repo": "https://github.com/eclipse-score/baselibs.git", - "hash": "ffd1c812213c66a436ed982632f6942528b58be8", - "version": "0.1.3", + "hash": "158fe6a7b791c58f6eac5f7e4662b8db0cf9ac6e", "bazel_patches": [ - "//patches/baselibs:003-acl-fixes-for-aarch64.patch", - "//patches/baselibs:0001-RH-exception-header.patch", - "//patches/baselibs:0002-RH-algorithm-header.patch" + "//patches/baselibs:003-acl-fixes-for-aarch64.patch" ], "metadata": { + "extra_test_config": [ + "//score/json:base_library=nlohmann", + "//score/memory/shared/flags:use_typedshmd=False" + ], "exclude_test_targets": [ "//score/language/safecpp/aborts_upon_exception:abortsuponexception_toolchain_test", "//score/containers:dynamic_array_test", "//score/mw/log/configuration:*", "//score/json/examples:*" ], - "langs": ["cpp"] + "langs": [ + "cpp" + ] } }, "score_baselibs_rust": { "repo": "https://github.com/eclipse-score/baselibs_rust.git", - "hash": "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", + "hash": "9f781acfb6d1a8fa06012ce772b0befb304acf31", "metadata": { "code_root_path": "//src/...", - "langs": ["rust"] + "langs": [ + "rust" + ] } }, "score_communication": { "repo": "https://github.com/eclipse-score/communication.git", - "hash": "0c0ea032995eaa766f5bdcec031bc02ee10d4587", - "version": "0.1.1", + "hash": "56448a5589a5f7d3921b873e8127b824a8c1ca95", + "bazel_patches": [ + "//patches/communication:001-expose-comm-examples.patch" + ], "metadata": { + "code_root_path": "//score/mw/com/impl/...", "exclude_test_targets": [ - "//score/*" + "//score/mw/com/impl:unit_test_runtime_single_exec", + "//score/mw/com/impl/configuration:config_parser_test", + "//score/mw/com/impl/configuration:configuration_test", + "//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test" ] } }, "score_persistency": { "repo": "https://github.com/eclipse-score/persistency.git", - "hash": "0037034bf853e5f955f028fab54ed319fb0441c3", + "hash": "9692dadab51c677183262e8870c5425ab1797c4f", "metadata": { "code_root_path": "//src/...", "exclude_test_targets": [ @@ -50,30 +61,51 @@ }, "score_orchestrator": { "repo": "https://github.com/eclipse-score/orchestrator.git", - "hash": "18e136c34750c5db707f27f917d52efc7541e087", + "hash": "675007a2baa226fad1e2979ed732360dc111d056", "metadata": { "code_root_path": "//src/...", - "langs": ["rust"] + "langs": [ + "rust" + ] } }, "score_kyron": { "repo": "https://github.com/eclipse-score/kyron.git", - "hash": "ed312bdc6a50abc73f97b8c7e2ad4726fed06e81", + "hash": "d4d0afc1dd733a0c8a4aba9cc2b2b3a58d38ebf6", "metadata": { "code_root_path": "//src/...", - "langs": ["rust"] + "langs": [ + "rust" + ] } }, "score_lifecycle_health": { "repo": "https://github.com/eclipse-score/lifecycle.git", - "hash": "84303c2e48c7e8e2481752170efe82d0afd45f1e", + "hash": "14ee704eeac03e03ca10bece5de8b694d3c5e2dd", "metadata": { "code_root_path": "//src/..." } }, - "score_scrample": { - "repo": "https://github.com/eclipse-score/scrample.git", - "hash": "0c2e72fc2a72a7dce4d9ddeec8470a861b08d5e1" + "score_logging": { + "repo": "https://github.com/qorix-group/logging.git", + "hash": "3718923aafc273531b1d0b3a240d821db24afbbc", + "metadata": { + "extra_test_config": [ + "//score/datarouter/build_configuration_flags:persistent_logging=False", + "//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False", + "//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False", + "//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False", + "//score/datarouter/build_configuration_flags:file_transfer=False", + "//score/datarouter/build_configuration_flags:use_local_vlan=True" + ], + "exclude_test_targets": [ + "//score/datarouter/test/ut/ut_logging:dltprotocolUT", + "//score/datarouter/test/ut/ut_logging:persistentLogConfigUT", + "//score/datarouter/test/ut/ut_logging:socketserverConfigUT", + "//score/datarouter/test/ut/ut_logging:socketserverUT", + "//score/mw/log/legacy_non_verbose_api:unit_test" + ] + } } }, "tooling": { @@ -95,7 +127,6 @@ }, "score_bazel_platforms": { "repo": "https://github.com/eclipse-score/bazel_platforms.git", - "hash": "3ac1b805ba42b58a13f8960f947b7866c8bcf26c", "version": "0.0.4" }, "score_test_scenarios": { @@ -104,7 +135,6 @@ }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "hash": "ba006429268e6bd9b856088f7a4217742ed09025", "version": "3.0.1" }, "score_process": { @@ -112,8 +142,6 @@ "hash": "6c772cf05a493218a5ac6071361bf0b66c5427b2" } } - - }, "timestamp": "2026-02-10T21:12:42+00:00Z" -} +} \ No newline at end of file diff --git a/patches/baselibs/0001-RH-exception-header.patch b/patches/baselibs/0001-RH-exception-header.patch deleted file mode 100644 index d48191eab2d..00000000000 --- a/patches/baselibs/0001-RH-exception-header.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/score/concurrency/clock.h b/score/concurrency/clock.h -index 0fa7719..365a003 100644 ---- a/score/concurrency/clock.h -+++ b/score/concurrency/clock.h -@@ -15,6 +15,7 @@ - - #include - #include -+#include - - namespace score - { diff --git a/patches/baselibs/0002-RH-algorithm-header.patch b/patches/baselibs/0002-RH-algorithm-header.patch deleted file mode 100644 index 70fc3780a95..00000000000 --- a/patches/baselibs/0002-RH-algorithm-header.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/score/language/futurecpp/tests/member_iterator_test.cpp b/score/language/futurecpp/tests/member_iterator_test.cpp -index bea1361..6d649d2 100644 ---- a/score/language/futurecpp/tests/member_iterator_test.cpp -+++ b/score/language/futurecpp/tests/member_iterator_test.cpp -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - - #include - -diff --git a/score/language/futurecpp/tests/multi_span_test.cpp b/score/language/futurecpp/tests/multi_span_test.cpp -index 9b57903..c0da98b 100644 ---- a/score/language/futurecpp/tests/multi_span_test.cpp -+++ b/score/language/futurecpp/tests/multi_span_test.cpp -@@ -11,6 +11,7 @@ - #include - #include - #include -+#include - - #include - -diff --git a/score/mw/log/detail/logging_identifier.h b/score/mw/log/detail/logging_identifier.h -index ec02bac..b15bdfa 100644 ---- a/score/mw/log/detail/logging_identifier.h -+++ b/score/mw/log/detail/logging_identifier.h -@@ -19,6 +19,7 @@ - - #include - #include -+#include - - namespace score - { diff --git a/patches/baselibs/003-acl-fixes-for-aarch64.patch b/patches/baselibs/003-acl-fixes-for-aarch64.patch index 95ea478477d..14c0c4cac22 100644 --- a/patches/baselibs/003-acl-fixes-for-aarch64.patch +++ b/patches/baselibs/003-acl-fixes-for-aarch64.patch @@ -1,20 +1,8 @@ -From 37a6329193e94d93fef91fc184e95e9a8b67a98b Mon Sep 17 00:00:00 2001 -From: Pawel Rutka -Date: Mon, 9 Feb 2026 14:51:53 +0100 -Subject: [PATCH] T - -Signed-off-by: Pawel Rutka ---- - MODULE.bazel | 7 +++++++ - third_party/acl/BUILD | 6 +++++- - third_party/acl/acl.BUILD | 7 ++++--- - 3 files changed, 16 insertions(+), 4 deletions(-) - diff --git a/MODULE.bazel b/MODULE.bazel -index f7991cb..b78d618 100644 +index 7b6f319..efa7b1c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel -@@ -64,6 +64,13 @@ deb( +@@ -98,6 +98,13 @@ deb( visibility = ["//visibility:public"], ) @@ -29,10 +17,10 @@ index f7991cb..b78d618 100644 name = "valgrind-deb", build = "//third_party/valgrind:valgrind.BUILD", diff --git a/third_party/acl/BUILD b/third_party/acl/BUILD -index dfcac1e..c76bee3 100644 +index b71d5df..da07995 100644 --- a/third_party/acl/BUILD +++ b/third_party/acl/BUILD -@@ -1,5 +1,9 @@ +@@ -1,5 +1,8 @@ alias( name = "acl", - actual = "@acl-deb//:acl", @@ -40,11 +28,10 @@ index dfcac1e..c76bee3 100644 + "@platforms//cpu:aarch64": "@acl-deb-aarch64//:acl", + "//conditions:default": "@acl-deb//:acl", + }), - visibility = ["//visibility:public"], + visibility = ["//visibility:public"], ) -+ diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD -index 2163068..d86c7f7 100644 +index 718726c..b695a6a 100644 --- a/third_party/acl/acl.BUILD +++ b/third_party/acl/acl.BUILD @@ -1,8 +1,9 @@ @@ -60,6 +47,3 @@ index 2163068..d86c7f7 100644 hdrs = [ "usr/include/acl/libacl.h", "usr/include/sys/acl.h", --- -2.43.0 - diff --git a/patches/baselibs/fix_hard_coded_amd64.patch b/patches/baselibs/fix_hard_coded_amd64.patch deleted file mode 100644 index 91892e1b20b..00000000000 --- a/patches/baselibs/fix_hard_coded_amd64.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/MODULE.bazel b/MODULE.bazel -index 16776ba..683c131 100644 ---- a/MODULE.bazel -+++ b/MODULE.bazel -@@ -70,7 +70,7 @@ deb = use_repo_rule("@download_utils//download/deb:defs.bzl", "download_deb") - deb( - name = "acl-deb", - build = "//third_party/acl:acl.BUILD", -- urls = ["https://archive.ubuntu.com/ubuntu/pool/main/a/acl/libacl1-dev_2.2.52-3build1_amd64.deb"], -+ urls = ["https://launchpadlibrarian.net/581258948/libacl1-dev_2.3.1-1_arm64.deb"], - visibility = ["//visibility:public"], - ) - -diff --git a/third_party/acl/acl.BUILD b/third_party/acl/acl.BUILD -index 718726c..710befd 100644 ---- a/third_party/acl/acl.BUILD -+++ b/third_party/acl/acl.BUILD -@@ -1,7 +1,7 @@ - cc_library( - name = "acl", - srcs = [ -- "usr/lib/libacl.a", -+ "usr/lib/aarch64-linux-gnu/libacl.a", - ], - hdrs = [ - "usr/include/acl/libacl.h", -@@ -9,4 +9,4 @@ cc_library( - ], - includes = ["usr/include/"], - visibility = ["//visibility:public"], --) -+) diff --git a/patches/communication/001-expose-comm-examples.patch b/patches/communication/001-expose-comm-examples.patch new file mode 100644 index 00000000000..ae6b8a0f5b2 --- /dev/null +++ b/patches/communication/001-expose-comm-examples.patch @@ -0,0 +1,12 @@ +diff --git a/score/mw/com/example/ipc_bridge/BUILD b/score/mw/com/example/ipc_bridge/BUILD +index 525969e..19e0fc3 100644 +--- a/score/mw/com/example/ipc_bridge/BUILD ++++ b/score/mw/com/example/ipc_bridge/BUILD +@@ -31,6 +31,7 @@ cc_binary( + "@score_baselibs//score/language/futurecpp", + "@score_logging//score/mw/log", + ], ++ visibility = ["//visibility:public"], + ) + + cc_library( diff --git a/patches/communication/BUILD b/patches/communication/BUILD new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/known_good/models/module.py b/scripts/known_good/models/module.py index 2180b9fbc85..0ba65add530 100644 --- a/scripts/known_good/models/module.py +++ b/scripts/known_good/models/module.py @@ -14,11 +14,13 @@ class Metadata: Attributes: code_root_path: Root path to the code directory + extra_test_config: List of extra test configuration flags exclude_test_targets: List of test targets to exclude langs: List of languages supported (e.g., ["cpp", "rust"]) """ code_root_path: str = "//score/..." + extra_test_config: list[str] = field(default_factory=lambda: []) exclude_test_targets: list[str] = field(default_factory=lambda: []) langs: list[str] = field(default_factory=lambda: ["cpp", "rust"]) @@ -34,6 +36,7 @@ def from_dict(cls, data: Dict[str, Any]) -> Metadata: """ return cls( code_root_path=data.get("code_root_path", "//score/..."), + extra_test_config=data.get("extra_test_config", []), exclude_test_targets=data.get("exclude_test_targets", []), langs=data.get("langs", ["cpp", "rust"]), ) @@ -46,6 +49,7 @@ def to_dict(self) -> Dict[str, Any]: """ return { "code_root_path": self.code_root_path, + "extra_test_config": self.extra_test_config, "exclude_test_targets": self.exclude_test_targets, "langs": self.langs, } @@ -76,13 +80,14 @@ def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: - metadata (dict, optional): Metadata configuration Example: { "code_root_path": "path/to/code/root", + "extra_test_config": [""], "exclude_test_targets": [""], "langs": ["cpp", "rust"] } If not present, uses default Metadata values. - branch (str, optional): Git branch name (default: main) - pin_version (bool, optional): If true, module hash is not updated - to latest HEAD by update scripts (default: false) + to latest HEAD by update scripts (default: false) Returns: Module instance @@ -91,6 +96,12 @@ def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: # Support both 'hash' and 'commit' keys commit_hash = module_data.get("hash") or module_data.get("commit", "") version = module_data.get("version") + + if commit_hash and version: + raise ValueError( + f"Module '{name}' has both 'hash' and 'version' set. " + "Use either 'hash' (git_override) or 'version' (single_version_override), not both." + ) # Support both 'bazel_patches' and legacy 'patches' keys bazel_patches = module_data.get("bazel_patches") or module_data.get( "patches", [] @@ -100,6 +111,7 @@ def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: metadata_data = module_data.get("metadata") if metadata_data is not None: metadata = Metadata.from_dict(metadata_data) + # Enable once we are able to remove '*' in known_good.json # if any("*" in target for target in metadata.exclude_test_targets): # raise Exception( # f"Module {name} has wildcard '*' in exclude_test_targets, which is not allowed. " @@ -160,7 +172,7 @@ def owner_repo(self) -> str: # Split and validate owner/repo format parts = path.split("/", 2) # Split max 2 times to get owner and repo - if len(parts) < 2 or not parts[0] or not parts[1]: + if len(parts) != 2: raise ValueError(f"Cannot parse owner/repo from: {self.repo}") return f"{parts[0]}/{parts[1]}" @@ -171,13 +183,12 @@ def to_dict(self) -> Dict[str, Any]: Returns: Dictionary with module configuration """ - result: Dict[str, Any] = { - "repo": self.repo, - "hash": self.hash, - "metadata": self.metadata.to_dict(), - } + result: Dict[str, Any] = {"repo": self.repo} if self.version: result["version"] = self.version + else: + result["hash"] = self.hash + result["metadata"] = self.metadata.to_dict() if self.bazel_patches: result["bazel_patches"] = self.bazel_patches if self.branch and self.branch != "main": diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index 028e6159885..a7b9b253354 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -6,9 +6,9 @@ Usage: python3 scripts/known_good/update_module_from_known_good.py \ --known known_good.json \ - --output score_modules.MODULE.bazel + --output-dir bazel_common -The generated score_modules.MODULE.bazel file is included by MODULE.bazel. +The generated score_modules_NAME_.MODULE.bazel file is included by MODULE.bazel. Note: To override repository commits before generating the MODULE.bazel file, use scripts/known_good/override_known_good_repo.py first to create an updated known_good.json. diff --git a/scripts/quality_runners.py b/scripts/quality_runners.py index 5383bdd8ce6..2dc7b516e3d 100644 --- a/scripts/quality_runners.py +++ b/scripts/quality_runners.py @@ -18,26 +18,34 @@ class ProcessResult: exit_code: int +def print_centered(message: str, width: int = 120, fillchar: str = "-") -> None: + print(message.center(width, fillchar)) + + def run_unit_test_with_coverage(module: Module) -> dict[str, str | int]: - print("QR: Running unit tests...") - - call = [ - "bazel", - "coverage", # Call coverage instead of test to get .dat files already - "--test_verbose_timeout_warnings", - "--test_timeout=1200", - "--config=unit-tests", - "--test_summary=testcase", - "--test_output=errors", - "--nocache_test_results", - f"--instrumentation_filter=@{module.name}", - f"@{module.name}{module.metadata.code_root_path}", - "--", - ] + [ - # Exclude test targets specified in module metadata, if any - f"-@{module.name}{target}" - for target in module.metadata.exclude_test_targets - ] + print_centered("QR: Running unit tests") + + call = ( + [ + "bazel", + "coverage", # Call coverage instead of test to get .dat files already + "--test_verbose_timeout_warnings", + "--test_timeout=1200", + "--config=unit-tests", + "--test_summary=testcase", + "--test_output=errors", + "--nocache_test_results", + f"--instrumentation_filter=@{module.name}", + f"@{module.name}{module.metadata.code_root_path}", + ] + + [f"--@{module.name}{target}" for target in module.metadata.extra_test_config] + + ["--"] + + [ + # Exclude test targets specified in module metadata, if any + f"-@{module.name}{target}" + for target in module.metadata.exclude_test_targets + ] + ) result = run_command(call) summary = extract_ut_summary(result.stdout) @@ -45,7 +53,7 @@ def run_unit_test_with_coverage(module: Module) -> dict[str, str | int]: def run_cpp_coverage_extraction(module: Module, output_path: Path) -> int: - print("QR: Running cpp coverage analysis...") + print_centered("QR: Running cpp coverage analysis") result_cpp = cpp_coverage(module, output_path) summary = extract_coverage_summary(result_cpp.stdout) @@ -72,8 +80,6 @@ def cpp_coverage(module: Module, artifact_dir: Path) -> ProcessResult: "genhtml", f"{bazel_coverage_output_directory}/_coverage/_coverage_report.dat", f"--output-directory={output_dir}", - # f"--source-directory={bazel_source_directory}", - # "--synthesize-missing", "--show-details", "--legend", "--function-coverage", @@ -115,7 +121,7 @@ def extract_ut_summary(logs: str) -> dict[str, int]: if match := pattern_summary_line.search(logs): summary_line = match.group(0) else: - print("QR: Summary line not found in logs.") + print_centered("QR: Summary line not found in logs") return summary pattern_passed = re.compile(r"(\d+) passing") @@ -176,7 +182,9 @@ def run_command(command: list[str], **kwargs) -> ProcessResult: stdout_data = [] stderr_data = [] - print(f"QR: Running command: `{' '.join(command)}`") + print_centered("QR: Running command:") + print(f"{' '.join(command)}") + with Popen(command, stdout=PIPE, stderr=PIPE, text=True, bufsize=1, **kwargs) as p: # Use select to read from both streams without blocking streams = { @@ -227,6 +235,12 @@ def parse_arguments() -> argparse.Namespace: default=Path(__file__).parent.parent / "artifacts/coverage", help="Path to the directory for coverage output files", ) + parser.add_argument( + "--modules-to-test", + type=lambda modules: modules.split(","), + default=[], + help="List of modules to test", + ) return parser.parse_args() @@ -239,55 +253,25 @@ def main() -> bool: unit_tests_summary, coverage_summary = {}, {} - CURRENTLY_DISABLED_MODULES = [ - "score_communication", - "score_scrample", - "score_logging", - "score_lifecycle_health", - "score_feo", - ] + if args.modules_to_test: + print_centered( + f"QR: User requested tests only for specified modules: {', '.join(args.modules_to_test)}" + ) for module in known.modules["target_sw"].values(): - if module.name in CURRENTLY_DISABLED_MODULES: - print( - "########################################################################", - flush=True, - ) - print( - f"Skipping module {module.name} as it is currently disabled for unit tests.", - flush=True, - ) - print( - "########################################################################", - flush=True, - ) + if args.modules_to_test and module.name not in args.modules_to_test: + print_centered(f"QR: Skipping module {module.name}") continue - else: - print( - "########################################################################", - flush=True, - ) - print(f"QR: Testing module: {module.name}") - print( - "########################################################################", - flush=True, - ) + print_centered(f"QR: Testing module: {module.name}") unit_tests_summary[module.name] = run_unit_test_with_coverage(module=module) if "cpp" in module.metadata.langs: coverage_summary[module.name] = run_cpp_coverage_extraction( module=module, output_path=args.coverage_output_dir ) - print( - "########################################################################", - flush=True, - ) - print(f"QR: Finished testing module: {module.name}") - print( - "########################################################################", - flush=True, - ) + + print_centered(f"QR: Finished testing module: {module.name}") generate_markdown_report( unit_tests_summary, @@ -295,7 +279,7 @@ def main() -> bool: columns=["module", "passed", "failed", "skipped", "total"], output_path=path_to_docs / "unit_test_summary.md", ) - print("QR: UNIT TEST EXECUTION SUMMARY".center(120, "=")) + print_centered("QR: UNIT TEST EXECUTION SUMMARY", fillchar="=") pprint(unit_tests_summary, width=120) generate_markdown_report( @@ -304,7 +288,7 @@ def main() -> bool: columns=["module", "lines", "functions", "branches"], output_path=path_to_docs / "coverage_summary.md", ) - print("QR: COVERAGE ANALYSIS SUMMARY".center(120, "=")) + print_centered("QR: COVERAGE ANALYSIS SUMMARY", fillchar="=") pprint(coverage_summary, width=120) # Check all exit codes and return non-zero if any test or coverage extraction failed diff --git a/showcases/BUILD b/showcases/BUILD index ef1f3d7a062..a110fe8d22f 100644 --- a/showcases/BUILD +++ b/showcases/BUILD @@ -14,10 +14,9 @@ load("//bazel_common:bundlers.bzl", "score_pkg_bundle") score_pkg_bundle( name = "showcases_all", - # package_dir = "", bins = ["//showcases/cli" ], other_package_files = [ - "//showcases/standalone:standalone_pkg_files", + "//showcases/standalone:comm_pkg_files", "//showcases/kyron:kyron_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files", "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", diff --git a/showcases/standalone/BUILD b/showcases/standalone/BUILD index 5b4746fb264..ad5cc22a480 100644 --- a/showcases/standalone/BUILD +++ b/showcases/standalone/BUILD @@ -2,7 +2,13 @@ load("//bazel_common:bundlers.bzl", "score_pkg_bundle") score_pkg_bundle( - name = "standalone", + name = "comm", package_dir = "standalone", - bins = ["@score_scrample//src:scrample"], + bins = ["@score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp"], + custom_layout = { + "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json": "etc/mw_com_config.json" + }, + config_data = [ + "//showcases/standalone:com.score.json", + ], ) diff --git a/showcases/standalone/com.score.json b/showcases/standalone/com.score.json new file mode 100644 index 00000000000..2e4b57dd26f --- /dev/null +++ b/showcases/standalone/com.score.json @@ -0,0 +1,24 @@ +{ + "name": "Communication Sender Receiver Example", + "description": "Example for running communication sender and receiver", + "apps":[ + { + "path": "/showcases/bin/ipc_bridge_cpp", + "args": [ + "-n", "10", "-t", "100", "-m", "send" + ], + "env": { + }, + "dir": "/showcases/data/comm" + }, + { + "path": "/showcases/bin/ipc_bridge_cpp", + "args": [ + "-n", "5", "-t", "100", "-m", "recv" + ], + "env": { + }, + "dir": "/showcases/data/comm" + } + ] +} From 3409280fd5cd125ecb0032d03c439a16fa37282e Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Wed, 18 Feb 2026 15:04:05 +0100 Subject: [PATCH 29/55] fix paths in reusable workflow (#105) --- .github/workflows/reusable_integration-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml index 5aa65f613c3..e0d8ba682cb 100644 --- a/.github/workflows/reusable_integration-build.yml +++ b/.github/workflows/reusable_integration-build.yml @@ -113,8 +113,8 @@ jobs: echo "::endgroup::" echo "::group::update score_modules.MODULE.bazel" - python3 scripts/known_good/update_module_from_known_good.py --known known_good.updated.json - cat score_modules.MODULE.bazel + python3 scripts/known_good/update_module_from_known_good.py --known known_good.updated.json --output-dir bazel_common/ + cat bazel_common/score_modules.MODULE.bazel echo "::endgroup::" env: GITHUB_TOKEN: ${{ secrets.REPO_READ_TOKEN != '' && secrets.REPO_READ_TOKEN || github.token }} From b96b936e7cad1a03a1c91cd55f844fdf506f27eb Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Wed, 18 Feb 2026 15:51:47 +0100 Subject: [PATCH 30/55] Use Kyron examples from module itself (#104) --- images/autosd_x86_64/BUILD.bazel | 6 +-- images/qnx_x86_64/build/init.build | 2 + score_starter | 2 +- showcases/BUILD | 4 +- showcases/cli/README.md | 30 ++++++++++- showcases/cli/main.rs | 12 ++++- showcases/kyron/BUILD | 22 -------- showcases/kyron/kyron.score.json | 13 ----- showcases/kyron/main.rs | 50 ------------------- showcases/orchestration_persistency/main.rs | 15 +++++- .../orch_per.score.json | 2 +- showcases/standalone/BUILD | 10 ++++ showcases/standalone/kyron.score.json | 35 +++++++++++++ 13 files changed, 106 insertions(+), 97 deletions(-) delete mode 100644 showcases/kyron/BUILD delete mode 100644 showcases/kyron/kyron.score.json delete mode 100644 showcases/kyron/main.rs create mode 100644 showcases/standalone/kyron.score.json diff --git a/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel index 6c71e0e90e8..9e8806ba983 100644 --- a/images/autosd_x86_64/BUILD.bazel +++ b/images/autosd_x86_64/BUILD.bazel @@ -25,13 +25,11 @@ rpm_package( version = "0.6.0", binaries = [ "//showcases/cli:cli", - "//showcases/kyron:kyron_example", - "//showcases/orchestration_persistency:orch_per_example", + "//showcases/orchestration_persistency:orch_per_example", ], config_dir = "/etc/score", data = [ - "//showcases/kyron:kyron.score.json", - "//showcases/orchestration_persistency:orch_per.score.json" + "//showcases/orchestration_persistency:orch_per.score.json" ], data_dir = "/usr/share/score/examples", ) diff --git a/images/qnx_x86_64/build/init.build b/images/qnx_x86_64/build/init.build index bbec098e03d..fdc1d273390 100644 --- a/images/qnx_x86_64/build/init.build +++ b/images/qnx_x86_64/build/init.build @@ -95,5 +95,7 @@ libslog2.so.1 # System logging library (slog2_* functions) devb-eide # Block device driver for IDE/SATA hard drives and SSDs # Required for mounting QNX6 file systems from disk partitions +# Orchestrator example needed +[type=link] /data=/tmp_ram [+include] ${MAIN_BUILD_FILE_DIR}/system.build # Include additional system build configurations diff --git a/score_starter b/score_starter index 716b7720ad7..545b2187ae8 100755 --- a/score_starter +++ b/score_starter @@ -14,7 +14,7 @@ mEntries = [ ("Run Elektrobit Corbos aarch64 QEMU", "bazel --output_base=build/eb-aarch64 build --config eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run", "eb-aarch64"), ("Run Autosd x86_64 QEMU", - "bazel --output_base=build/autosd-x86_64 build --config autosd-x86_64 //images/autosd_x86_64:image", "autosd-x86_64"), + "bazel --output_base=build/autosd-x86_64 run --config autosd-x86_64 //images/autosd_x86_64:run", "autosd-x86_64"), ("Exit", "exit 0", "exit"), ] diff --git a/showcases/BUILD b/showcases/BUILD index a110fe8d22f..01395893a62 100644 --- a/showcases/BUILD +++ b/showcases/BUILD @@ -16,8 +16,8 @@ score_pkg_bundle( name = "showcases_all", bins = ["//showcases/cli" ], other_package_files = [ - "//showcases/standalone:comm_pkg_files", - "//showcases/kyron:kyron_pkg_files", + "//showcases/standalone:comm_pkg_files", + "//showcases/standalone:kyron_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files", "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", ], diff --git a/showcases/cli/README.md b/showcases/cli/README.md index 99c1c69a0e4..65d5d4e5955 100644 --- a/showcases/cli/README.md +++ b/showcases/cli/README.md @@ -22,7 +22,7 @@ To make this work each example shall deploy configuration file `name.score.json` "env": { // env to be used when running }, - "delay": "number" // Optional delay between two consecutive apps + "delay": "number" // Optional delay between two consecutive apps }, { // ... @@ -30,9 +30,37 @@ To make this work each example shall deploy configuration file `name.score.json` ] } +``` Each example can run multiple executables, providing additional `apps` configs. This will be started one after another but not blocking each-other. +Alternatively, the configuration file can contain a top-level array of configs, allowing multiple examples to be defined in a single file: + +```json +[ + { + "name": "First example", + "description": "Description of first example", + "apps": [ + { + "path": "exec_path", + "args": [], + "env": {} + } + ] + }, + { + "name": "Second example", + "description": "Description of second example", + "apps": [ + { + "path": "exec_path", + "args": [], + "env": {} + } + ] + } +] ``` You can customize where to look for examples using env `SCORE_CLI_INIT_DIR`. \ No newline at end of file diff --git a/showcases/cli/main.rs b/showcases/cli/main.rs index cb95f4302db..d0ba283a54a 100644 --- a/showcases/cli/main.rs +++ b/showcases/cli/main.rs @@ -111,9 +111,17 @@ fn visit_dir(dir: &Path, configs: &mut Vec) -> Result<()> { if is_score_file(&path) { let content = fs::read_to_string(&path) .with_context(|| format!("Failed reading {:?}", path))?; - let config: ScoreConfig = serde_json::from_str(&content) + let value: serde_json::Value = serde_json::from_str(&content) .with_context(|| format!("Invalid JSON in {:?}", path))?; - configs.push(config); + if value.is_array() { + let found: Vec = serde_json::from_value(value) + .with_context(|| format!("Invalid JSON array in {:?}", path))?; + configs.extend(found); + } else { + let config: ScoreConfig = serde_json::from_value(value) + .with_context(|| format!("Invalid JSON in {:?}", path))?; + configs.push(config); + } } } Ok(()) diff --git a/showcases/kyron/BUILD b/showcases/kyron/BUILD deleted file mode 100644 index a39af18d5b1..00000000000 --- a/showcases/kyron/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_rust//rust:defs.bzl", "rust_binary") -load("//bazel_common:bundlers.bzl", "score_pkg_bundle") - -exports_files(["kyron.score.json"]) - -rust_binary( - name = "kyron_example", - srcs = ["main.rs"], - deps = [ - "@score_kyron//src/kyron:libkyron", - "@score_kyron//src/kyron-foundation:libkyron_foundation", - "@score_crates//:tracing_subscriber", - ], - visibility = ["//visibility:public"], -) - - -score_pkg_bundle( - name = "kyron", - bins = [":kyron_example"], - config_data = ["//showcases/kyron:kyron.score.json"], -) diff --git a/showcases/kyron/kyron.score.json b/showcases/kyron/kyron.score.json deleted file mode 100644 index 910ce37f77c..00000000000 --- a/showcases/kyron/kyron.score.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "Kyron example", - "description": "Example for channel communication using safe async runtime - Kyron", - "apps":[ - { - "path": "/showcases/bin/kyron_example", - "args": [ - ], - "env": { - } - } - ] -} diff --git a/showcases/kyron/main.rs b/showcases/kyron/main.rs deleted file mode 100644 index cf644c73ae1..00000000000 --- a/showcases/kyron/main.rs +++ /dev/null @@ -1,50 +0,0 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation -// -// See the NOTICE file(s) distributed with this work for additional -// information regarding copyright ownership. -// -// This program and the accompanying materials are made available under the -// terms of the Apache License Version 2.0 which is available at -// -// -// SPDX-License-Identifier: Apache-2.0 -// - -use kyron::channels::spsc::*; -use kyron::spawn; -use kyron_foundation::prelude::*; - -/// Example entry point demonstrating the usage of the kyron async runtime -/// -/// This example shows how to set up a Kyron async runtime with default engine parameters. -/// It spawns a sender and receiver task using Kyron's channel and spawn utilities. -/// Useful for learning how to structure Kyron async applications and macro usage. -/// For more visit https://github.com/eclipse-score/orchestrator -#[kyron::main] -async fn main() { - tracing_subscriber::fmt() - .with_target(false) - .with_max_level(Level::INFO) - .init(); - - let (sender, mut receiver) = create_channel_default::(); - - let r = spawn(async move { - while let Some(value) = receiver.recv().await { - info!("Received {}", value); - } - }); - - let s = spawn(async move { - info!("Hello from Kyron sender!"); - - for i in 0..5_u32 { - info!("Sending {}", i); - sender.send(&i).unwrap(); - } - }); - - s.await.unwrap(); - r.await.unwrap(); -} diff --git a/showcases/orchestration_persistency/main.rs b/showcases/orchestration_persistency/main.rs index 1d61254d6f7..f9bf6446005 100644 --- a/showcases/orchestration_persistency/main.rs +++ b/showcases/orchestration_persistency/main.rs @@ -62,7 +62,7 @@ async fn on_shutdown() -> InvokeResult { // Configure backend with directory path (workaround: KvsBuilder::dir() not available in Rust) // change back to dir, if https://github.com/eclipse-score/persistency/issues/222 is resolved. let backend = JsonBackendBuilder::new() - .working_dir(PathBuf::from("./")) + .working_dir(PathBuf::from("/tmp")) .build(); let builder = KvsBuilder::new(instance_id) @@ -75,6 +75,19 @@ async fn on_shutdown() -> InvokeResult { kvs.flush().unwrap(); + let instance_id = kvs.parameters().instance_id; + let snapshot_id = SnapshotId(0); + match kvs.parameters().backend.as_any().downcast_ref(){ + Some(backend ) => { + let backend = backend as &JsonBackend; + let filename = backend.kvs_file_path(instance_id, snapshot_id); + info!("KVS snapshot saved to file: {:?}", filename); + }, + None => { + + }, + }; + Ok(()) } diff --git a/showcases/orchestration_persistency/orch_per.score.json b/showcases/orchestration_persistency/orch_per.score.json index 70fdab837c3..f3eb27c6701 100644 --- a/showcases/orchestration_persistency/orch_per.score.json +++ b/showcases/orchestration_persistency/orch_per.score.json @@ -1,5 +1,5 @@ { - "name": "Orchestration persistency - Kyron example", + "name": "Orchestration persistency example", "description": "Example for running orchestration graph with Kyron runtime and saving the state to disk", "apps":[ { diff --git a/showcases/standalone/BUILD b/showcases/standalone/BUILD index ad5cc22a480..e19ef0efa0f 100644 --- a/showcases/standalone/BUILD +++ b/showcases/standalone/BUILD @@ -12,3 +12,13 @@ score_pkg_bundle( "//showcases/standalone:com.score.json", ], ) + +score_pkg_bundle( + name = "kyron", + package_dir = "standalone", + bins = ["@score_kyron//src/kyron:select", "@score_kyron//src/kyron:safety_task", "@score_kyron//src/kyron:main_macro"], # TODO: kyron shall have public examples in examples folder + + config_data = [ + "//showcases/standalone:kyron.score.json", + ], +) diff --git a/showcases/standalone/kyron.score.json b/showcases/standalone/kyron.score.json new file mode 100644 index 00000000000..631f55fcdc5 --- /dev/null +++ b/showcases/standalone/kyron.score.json @@ -0,0 +1,35 @@ +[ + { + "name": "Kyron select example", + "description": "Example for select! macro using safe async runtime", + "apps": [ + { + "path": "/showcases/bin/select", + "args": [], + "env": {} + } + ] + }, + { + "name": "Kyron safety task example", + "description": "Example assuring that errors in safety task will always get reaction runtime even if worker can be blocked", + "apps": [ + { + "path": "/showcases/bin/safety_task", + "args": [], + "env": {} + } + ] + }, + { + "name": "Kyron basic example", + "description": "Example running async code via main! macro", + "apps": [ + { + "path": "/showcases/bin/main_macro", + "args": [], + "env": {} + } + ] + } +] From 05df0277131fd22d4a091c59f1560cb40774da15 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Thu, 19 Feb 2026 10:58:42 +0100 Subject: [PATCH 31/55] Rust coverage (#106) * add rust line coverage calculation * automatic generation of rust_coverage BUILD file --- .bazelrc | 11 +- .github/workflows/known_good_correct.yml | 2 +- .github/workflows/test_and_docs.yml | 1 + .../score_modules_tooling.MODULE.bazel | 5 +- known_good.json | 5 +- rust_coverage/BUILD | 96 ++++++++ .../update_module_from_known_good.py | 224 ++++++++++++------ scripts/quality_runners.py | 66 +++++- 8 files changed, 327 insertions(+), 83 deletions(-) create mode 100644 rust_coverage/BUILD diff --git a/.bazelrc b/.bazelrc index 48b177fec6b..ebc583f2d16 100644 --- a/.bazelrc +++ b/.bazelrc @@ -55,7 +55,16 @@ build:autosd-x86_64 --force_pic build:autosd-x86_64 --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 - +# Ferrocene Rust coverage config +build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Cinstrument-coverage +build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Clink-dead-code +build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Ccodegen-units=1 +build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Cdebuginfo=2 +build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Cinstrument-coverage +build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Clink-dead-code +build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Ccodegen-units=1 +build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Cdebuginfo=2 +test:ferrocene-coverage --run_under=@score_tooling//coverage:llvm_profile_wrapper test:unit-tests --config=linux-x86_64 test:unit-tests --build_tests_only diff --git a/.github/workflows/known_good_correct.yml b/.github/workflows/known_good_correct.yml index 83c7e88cf45..95ce6102988 100644 --- a/.github/workflows/known_good_correct.yml +++ b/.github/workflows/known_good_correct.yml @@ -32,7 +32,7 @@ jobs: - name: Check run: | ls -la - scripts/known_good/update_module_from_known_good.py --known known_good.json --output-dir integration/bazel_common + scripts/known_good/update_module_from_known_good.py --known known_good.json --output-dir-modules bazel_common if git diff --quiet; then echo "No changes" else diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index 366339ce7e7..fde8aceb6ee 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -94,6 +94,7 @@ jobs: run: | mkdir -p artifacts find bazel-testlogs/external -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/ + cp -r "$(bazel info bazel-bin)/coverage/rust-tests" artifacts/rust zip -r ${{ github.event.repository.name }}_test_reports.zip artifacts/ shell: bash diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 380bc1836bc..296c8af352a 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -27,10 +27,9 @@ single_version_override( ) bazel_dep(name = "score_tooling") -git_override( +single_version_override( module_name = "score_tooling", - remote = "https://github.com/eclipse-score/tooling.git", - commit = "17671026150db4b4cc1b35e48af81b97e13685e5", + version = "1.1.2", ) bazel_dep(name = "score_platform") diff --git a/known_good.json b/known_good.json index 5235f5eedee..27a62fd948e 100644 --- a/known_good.json +++ b/known_good.json @@ -28,6 +28,9 @@ "hash": "9f781acfb6d1a8fa06012ce772b0befb304acf31", "metadata": { "code_root_path": "//src/...", + "exclude_test_targets": [ + "//src/log/score_log_fmt_macro:tests" + ], "langs": [ "rust" ] @@ -119,7 +122,7 @@ }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", - "hash": "17671026150db4b4cc1b35e48af81b97e13685e5" + "version": "1.1.2" }, "score_platform": { "repo": "https://github.com/eclipse-score/score.git", diff --git a/rust_coverage/BUILD b/rust_coverage/BUILD new file mode 100644 index 00000000000..3aa658edaa4 --- /dev/null +++ b/rust_coverage/BUILD @@ -0,0 +1,96 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +# Generated from known_good.json at 2026-02-10T21:12:42+00:00Z +# Do not edit manually - use scripts/known_good/update_module_from_known_good.py + +load("@score_tooling//:defs.bzl", "rust_coverage_report") + + + +rust_coverage_report( + name = "rust_coverage_score_baselibs_rust", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_baselibs_rust//src/...) except @score_baselibs_rust//src/log/score_log_fmt_macro:tests', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_communication", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_communication//score/mw/com/impl/...) except @score_communication//score/mw/com/impl:unit_test_runtime_single_exec @score_communication//score/mw/com/impl/configuration:config_parser_test @score_communication//score/mw/com/impl/configuration:configuration_test @score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_persistency", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_persistency//src/...) except @score_persistency//src/cpp/tests:bm_kvs_cpp', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_orchestrator", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_orchestrator//src/...)', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_kyron", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_kyron//src/...)', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_lifecycle_health", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_lifecycle_health//src/...)', + visibility = ["//visibility:public"], +) + + +rust_coverage_report( + name = "rust_coverage_score_logging", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @score_logging//score/...) except @score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT @score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT @score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT @score_logging//score/datarouter/test/ut/ut_logging:socketserverUT @score_logging//score/mw/log/legacy_non_verbose_api:unit_test', + visibility = ["//visibility:public"], +) + \ No newline at end of file diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index a7b9b253354..4932bca4aa0 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -2,42 +2,47 @@ """ Read a known_good.json file and generate a score_modules.MODULE.bazel file with `bazel_dep` and `git_override` calls for each module in the JSON. +It generates also rust_coverage/BUILD file with `rust_coverage_report` for each module with rust impl. Usage: python3 scripts/known_good/update_module_from_known_good.py \ --known known_good.json \ - --output-dir bazel_common + --output-dir-modules bazel_common \ + --output-dir-coverage rust_coverage The generated score_modules_NAME_.MODULE.bazel file is included by MODULE.bazel. Note: To override repository commits before generating the MODULE.bazel file, use scripts/known_good/override_known_good_repo.py first to create an updated known_good.json. """ + import argparse +import logging import os import re -import logging -from typing import Dict, List, Optional from pathlib import Path +from typing import Dict, List, Optional from models import Module from models.known_good import load_known_good # Configure logging -logging.basicConfig(level=logging.WARNING, format='%(levelname)s: %(message)s') +logging.basicConfig(level=logging.WARNING, format="%(levelname)s: %(message)s") -def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[str, str]) -> List[str]: +def generate_git_override_blocks( + modules: List[Module], repo_commit_dict: Dict[str, str] +) -> List[str]: """Generate bazel_dep and git_override blocks for each module.""" blocks = [] - + for module in modules: commit = module.hash - + # Allow overriding specific repos via command line if module.repo in repo_commit_dict: commit = repo_commit_dict[module.repo] - + # Generate patches lines if bazel_patches exist patches_lines = "" if module.bazel_patches: @@ -45,61 +50,107 @@ def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[s for patch in module.bazel_patches: patches_lines += f' "{patch}",\n' patches_lines += " ],\n patch_strip = 1,\n" - + if module.version: # If version is provided, use bazel_dep with single_version_override block = ( f'bazel_dep(name = "{module.name}")\n' - 'single_version_override(\n' + "single_version_override(\n" f' module_name = "{module.name}",\n' f' version = "{module.version}",\n' - f'{patches_lines}' - ')\n' + f"{patches_lines}" + ")\n" ) else: if not module.repo or not commit: - logging.warning("Skipping module %s with missing repo or commit: repo=%s, commit=%s", - module.name, module.repo, commit) + logging.warning( + "Skipping module %s with missing repo or commit: repo=%s, commit=%s", + module.name, + module.repo, + commit, + ) continue # Validate commit hash format (7-40 hex characters) - if not re.match(r'^[a-fA-F0-9]{7,40}$', commit): - logging.warning("Skipping module %s with invalid commit hash: %s", module.name, commit) + if not re.match(r"^[a-fA-F0-9]{7,40}$", commit): + logging.warning( + "Skipping module %s with invalid commit hash: %s", + module.name, + commit, + ) continue - + # If no version, use bazel_dep with git_override block = ( f'bazel_dep(name = "{module.name}")\n' - 'git_override(\n' + "git_override(\n" f' module_name = "{module.name}",\n' f' remote = "{module.repo}",\n' f' commit = "{commit}",\n' - f'{patches_lines}' - ')\n' + f"{patches_lines}" + ")\n" ) - + blocks.append(block) - + return blocks + def generate_local_override_blocks(modules: List[Module]) -> List[str]: """Generate bazel_dep and local_path_override blocks for each module.""" blocks = [] - + for module in modules: block = ( f'bazel_dep(name = "{module.name}")\n' - 'local_path_override(\n' + "local_path_override(\n" f' module_name = "{module.name}",\n' f' path = "{module.name}",\n' - ')\n' + ")\n" ) - + blocks.append(block) - + return blocks -def generate_file_content(args: argparse.Namespace, modules: List[Module], repo_commit_dict: Dict[str, str], timestamp: Optional[str] = None) -> str: + +def generate_coverage_blocks(modules: List[Module]) -> List[str]: + """Generate rust_coverage_report blocks for each module with rust impl.""" + blocks = ["""load("@score_tooling//:defs.bzl", "rust_coverage_report")\n\n"""] + + for module in modules: + if "rust" not in module.metadata.langs: + continue + + if module.metadata.exclude_test_targets: + excluded_tests = f" except {' '.join([f'@{module.name}{target}' for target in module.metadata.exclude_test_targets])}" + else: + excluded_tests = "" + + block = f""" +rust_coverage_report( + name = "rust_coverage_{module.name}", + bazel_configs = [ + "linux-x86_64", + "ferrocene-coverage", + ], + query = 'kind("rust_test", @{module.name}{module.metadata.code_root_path}){excluded_tests}', + visibility = ["//visibility:public"], +) + """ + + blocks.append(block) + + return blocks + + +def generate_file_content( + args: argparse.Namespace, + modules: List[Module], + repo_commit_dict: Dict[str, str], + timestamp: Optional[str] = None, + file_type: str = "module", +) -> str: """Generate the complete content for score_modules.MODULE.bazel.""" # License header header = ( @@ -124,20 +175,23 @@ def generate_file_content(args: argparse.Namespace, modules: List[Module], repo_ "# Do not edit manually - use scripts/known_good/update_module_from_known_good.py\n" "\n" ) - - if args.override_type == "git": - blocks = generate_git_override_blocks(modules, repo_commit_dict) + if file_type == "module": + if args.override_type == "git": + blocks = generate_git_override_blocks(modules, repo_commit_dict) + else: + header += ( + "# Note: This file uses local_path overrides. Ensure that local paths are set up correctly.\n" + "\n" + ) + blocks = generate_local_override_blocks(modules) + elif file_type == "build": + blocks = generate_coverage_blocks(modules) else: - header += ( - "# Note: This file uses local_path overrides. Ensure that local paths are set up correctly.\n" - "\n" - ) - blocks = generate_local_override_blocks(modules) + raise ValueError(f"Invalid file_type: {file_type}") - if not blocks: raise SystemExit("No valid modules to generate git_override blocks") - + return header + "\n".join(blocks) @@ -156,7 +210,7 @@ def main() -> None: # Specify output directory for grouped modules python3 scripts/known_good/update_module_from_known_good.py \\ - --output-dir ./bazel_modules + --output-dir-modules ./bazel_modules # Preview without writing python3 scripts/known_good/update_module_from_known_good.py --dry-run @@ -164,38 +218,41 @@ def main() -> None: Note: - Generates score_modules_{group}.MODULE.bazel for each group - To override repository commits, use scripts/known_good/override_known_good_repo.py first. - """ + """, ) parser.add_argument( "--known", - default="known_good.json", - help="Path to known_good.json (default: known_good.json)" + default=Path(__file__).parents[2] / "known_good.json", + help="Path to known_good.json (default: known_good.json in repo root)", ) parser.add_argument( - "--output-dir", - default=".", - help="Output directory for grouped structure files (default: current directory)" + "--output-dir-modules", + default=Path(__file__).parents[2] / "bazel_common", + help="Output directory for grouped structure files (default: bazel_common in repo root)", + ) + parser.add_argument( + "--output-dir-coverage", + default=Path(__file__).parents[2] / "rust_coverage", + help="Output directory for BUILD coverage file (default: rust_coverage in repo root)", ) parser.add_argument( "--dry-run", action="store_true", - help="Print generated content instead of writing to file" + help="Print generated content instead of writing to file", ) parser.add_argument( - "-v", "--verbose", - action="store_true", - help="Enable verbose logging" + "-v", "--verbose", action="store_true", help="Enable verbose logging" ) parser.add_argument( "--repo-override", action="append", - help="Override commit for a specific repo (format: @)" + help="Override commit for a specific repo (format: @)", ) parser.add_argument( "--override-type", choices=["local_path", "git"], default="git", - help="Type of override to use (default: git)" + help="Type of override to use (default: git)", ) args = parser.parse_args() @@ -211,7 +268,9 @@ def main() -> None: # Parse repo overrides repo_commit_dict = {} if args.repo_override: - repo_pattern = re.compile(r'https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git@[a-fA-F0-9]{7,40}$') + repo_pattern = re.compile( + r"https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git@[a-fA-F0-9]{7,40}$" + ) for entry in args.repo_override: if not repo_pattern.match(entry): raise SystemExit( @@ -233,8 +292,8 @@ def main() -> None: raise SystemExit("No modules found in known_good.json") # Generate files based on structure (flat vs grouped) - output_dir = os.path.abspath(args.output_dir) - os.makedirs(output_dir, exist_ok=True) + output_dir_modules = os.path.abspath(args.output_dir_modules) + os.makedirs(output_dir_modules, exist_ok=True) generated_files = [] total_module_count = 0 @@ -249,26 +308,57 @@ def main() -> None: # Determine output filename: score_modules_{group}.MODULE.bazel output_filename = f"score_modules_{group_name}.MODULE.bazel" - output_path = os.path.join(output_dir, output_filename) + output_path_modules = os.path.join(output_dir_modules, output_filename) + output_path_coverage = args.output_dir_coverage / "BUILD" - # Generate file content - content = generate_file_content(args, modules, repo_commit_dict, known_good.timestamp) + # Generate file content of MODULE files + content_module = generate_file_content( + args, modules, repo_commit_dict, known_good.timestamp, file_type="module" + ) if args.dry_run: - print(f"\nDry run: would write to {output_path}\n") - print("---- BEGIN GENERATED CONTENT ----") - print(content) - print("---- END GENERATED CONTENT ----") - print(f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'") + print(f"\nDry run: would write to {output_path_modules}\n") + print("---- BEGIN GENERATED CONTENT FOR MODULE ----") + print(content_module) + print("---- END GENERATED CONTENT FOR MODULE ----") + print( + f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'" + ) else: - with open(output_path, "w", encoding="utf-8") as f: - f.write(content) - generated_files.append(output_path) + with open(output_path_modules, "w", encoding="utf-8") as f: + f.write(content_module) + generated_files.append(output_path_modules) total_module_count += len(modules) - print(f"Generated {output_path} with {len(modules)} {args.override_type}_override entries") + print( + f"Generated {output_path_modules} with {len(modules)} {args.override_type}_override entries" + ) + + # Generate file content of BUILD coverage files + if "target_sw" not in group_name: + continue # Only generate coverage for software modules + + content_build = generate_file_content( + args, modules, repo_commit_dict, known_good.timestamp, file_type="build" + ) + + if args.dry_run: + print(f"\nDry run: would write to {output_path_coverage}\n") + print("---- BEGIN GENERATED CONTENT FOR BUILD ----") + print(content_build) + print("---- END GENERATED CONTENT FOR BUILD ----") + print( + f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'" + ) + else: + with open(output_path_coverage, "w", encoding="utf-8") as f: + f.write(content_build) + generated_files.append(output_path_coverage) + print(f"Generated {output_path_coverage}") if not args.dry_run and generated_files: - print(f"\nSuccessfully generated {len(generated_files)} file(s) with {total_module_count} total modules") + print( + f"\nSuccessfully generated {len(generated_files)} file(s) with {total_module_count} total modules" + ) if __name__ == "__main__": diff --git a/scripts/quality_runners.py b/scripts/quality_runners.py index 2dc7b516e3d..2f37818ce0b 100644 --- a/scripts/quality_runners.py +++ b/scripts/quality_runners.py @@ -32,6 +32,7 @@ def run_unit_test_with_coverage(module: Module) -> dict[str, str | int]: "--test_verbose_timeout_warnings", "--test_timeout=1200", "--config=unit-tests", + "--config=ferrocene-coverage", "--test_summary=testcase", "--test_output=errors", "--nocache_test_results", @@ -61,6 +62,15 @@ def run_cpp_coverage_extraction(module: Module, output_path: Path) -> int: return {**summary, "exit_code": result_cpp.exit_code} +def run_rust_coverage_extraction(module: Module, output_path: Path) -> int: + print_centered("QR: Running rust coverage analysis") + + result_rust = rust_coverage(module, output_path) + summary = extract_coverage_summary(result_rust.stdout) + + return {**summary, "exit_code": result_rust.exit_code} + + def cpp_coverage(module: Module, artifact_dir: Path) -> ProcessResult: # .dat files are already generated in UT step @@ -90,6 +100,24 @@ def cpp_coverage(module: Module, artifact_dir: Path) -> ProcessResult: return genhtml_result +def rust_coverage(module: Module, artifact_dir: Path) -> ProcessResult: + # .profraw files are already generated in UT step + + # Run bazel covverage target + # Create dedicated output directory for this module's coverage reports + output_dir = artifact_dir / "rust" / module.name + output_dir.mkdir(parents=True, exist_ok=True) + + bazel_call = [ + "bazel", + "run", + f"//rust_coverage:rust_coverage_{module.name}", + ] + bazel_result = run_command(bazel_call) + + return bazel_result + + def generate_markdown_report( data: dict[str, dict[str, int]], title: str, @@ -142,10 +170,10 @@ def extract_ut_summary(logs: str) -> dict[str, int]: def extract_coverage_summary(logs: str) -> dict[str, str]: """ - Extract coverage summary from genhtml output. + Extract coverage summary from coverage output (genhtml / rust_coverage_report). Args: - logs: Output from genhtml command + logs: Output from coverage command Returns: Dictionary with coverage percentages for lines, functions, and branches @@ -154,17 +182,21 @@ def extract_coverage_summary(logs: str) -> dict[str, str]: # Pattern to match coverage percentages in genhtml output # Example: " lines......: 93.0% (1234 of 1327 lines)" - pattern_lines = re.compile(r"lines\.+:\s+([\d.]+%)") - pattern_functions = re.compile(r"functions\.+:\s+([\d.]+%)") - pattern_branches = re.compile(r"branches\.+:\s+([\d.]+%)") - - if match := pattern_lines.search(logs): + pattern_cpp_lines = re.compile(r"lines\.+:\s+([\d.]+%)") + pattern_cpp_functions = re.compile(r"functions\.+:\s+([\d.]+%)") + pattern_cpp_branches = re.compile(r"branches\.+:\s+([\d.]+%)") + if match := pattern_cpp_lines.search(logs): summary["lines"] = match.group(1) - if match := pattern_functions.search(logs): + if match := pattern_cpp_functions.search(logs): summary["functions"] = match.group(1) - if match := pattern_branches.search(logs): + if match := pattern_cpp_branches.search(logs): summary["branches"] = match.group(1) + # Rust coverage currently returns only line coverage + pattern_rust_lines = re.compile(r"line coverage:\s+([\d.]+%)") + if match := pattern_rust_lines.search(logs): + summary["lines"] = match.group(1) + return summary @@ -267,7 +299,21 @@ def main() -> bool: unit_tests_summary[module.name] = run_unit_test_with_coverage(module=module) if "cpp" in module.metadata.langs: - coverage_summary[module.name] = run_cpp_coverage_extraction( + coverage_summary[f"{module.name}_cpp"] = run_cpp_coverage_extraction( + module=module, output_path=args.coverage_output_dir + ) + + if "rust" in module.metadata.langs: + DISABLED_RUST_COVERAGE = [ + "score_communication", + "score_orchestrator", + ] # Known issues with coverage extraction for these modules, mostly proc_macro + if module.name in DISABLED_RUST_COVERAGE: + print_centered( + f"QR: Skipping rust coverage extraction for module {module.name} due to known issues" + ) + continue + coverage_summary[f"{module.name}_rust"] = run_rust_coverage_extraction( module=module, output_path=args.coverage_output_dir ) From b53e8d64f7f45d6175d99d49803126e171863997 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Thu, 19 Feb 2026 13:57:17 +0100 Subject: [PATCH 32/55] fix multiple exclusions in rust_coverage (#110) each excluded target needs to be prefixed individually --- rust_coverage/BUILD | 8 ++++---- scripts/known_good/update_module_from_known_good.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/rust_coverage/BUILD b/rust_coverage/BUILD index 3aa658edaa4..c900ed584a2 100644 --- a/rust_coverage/BUILD +++ b/rust_coverage/BUILD @@ -24,7 +24,7 @@ rust_coverage_report( "linux-x86_64", "ferrocene-coverage", ], - query = 'kind("rust_test", @score_baselibs_rust//src/...) except @score_baselibs_rust//src/log/score_log_fmt_macro:tests', + query = 'kind("rust_test", @score_baselibs_rust//src/...) -@score_baselibs_rust//src/log/score_log_fmt_macro:tests', visibility = ["//visibility:public"], ) @@ -35,7 +35,7 @@ rust_coverage_report( "linux-x86_64", "ferrocene-coverage", ], - query = 'kind("rust_test", @score_communication//score/mw/com/impl/...) except @score_communication//score/mw/com/impl:unit_test_runtime_single_exec @score_communication//score/mw/com/impl/configuration:config_parser_test @score_communication//score/mw/com/impl/configuration:configuration_test @score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test', + query = 'kind("rust_test", @score_communication//score/mw/com/impl/...) -@score_communication//score/mw/com/impl:unit_test_runtime_single_exec -@score_communication//score/mw/com/impl/configuration:config_parser_test -@score_communication//score/mw/com/impl/configuration:configuration_test -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test', visibility = ["//visibility:public"], ) @@ -46,7 +46,7 @@ rust_coverage_report( "linux-x86_64", "ferrocene-coverage", ], - query = 'kind("rust_test", @score_persistency//src/...) except @score_persistency//src/cpp/tests:bm_kvs_cpp', + query = 'kind("rust_test", @score_persistency//src/...) -@score_persistency//src/cpp/tests:bm_kvs_cpp', visibility = ["//visibility:public"], ) @@ -90,7 +90,7 @@ rust_coverage_report( "linux-x86_64", "ferrocene-coverage", ], - query = 'kind("rust_test", @score_logging//score/...) except @score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT @score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT @score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT @score_logging//score/datarouter/test/ut/ut_logging:socketserverUT @score_logging//score/mw/log/legacy_non_verbose_api:unit_test', + query = 'kind("rust_test", @score_logging//score/...) -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test', visibility = ["//visibility:public"], ) \ No newline at end of file diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index 4932bca4aa0..7812347cd24 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -123,7 +123,7 @@ def generate_coverage_blocks(modules: List[Module]) -> List[str]: continue if module.metadata.exclude_test_targets: - excluded_tests = f" except {' '.join([f'@{module.name}{target}' for target in module.metadata.exclude_test_targets])}" + excluded_tests = f" {' '.join([f'-@{module.name}{target}' for target in module.metadata.exclude_test_targets])}" else: excluded_tests = "" From ded62262c90306be688c6e90d569a7c7e178bcfa Mon Sep 17 00:00:00 2001 From: Leonardo Rossetti Date: Thu, 19 Feb 2026 12:02:19 -0300 Subject: [PATCH 33/55] fix showcases rpms + image building (#111) Signed-off-by: Leonardo Rossetti --- .bazelrc | 4 +- .github/workflows/build_and_test_autosd.yml | 11 ++-- .gitignore | 1 + bazel_common/score_basic_bazel.MODULE.bazel | 4 +- .../score_gcc_toolchains.MODULE.bazel | 2 +- images/autosd_x86_64/BUILD.bazel | 15 ++--- images/autosd_x86_64/build/.gitignore | 1 + images/autosd_x86_64/build/image.aib.yml | 57 ++++++++++++++----- 8 files changed, 60 insertions(+), 35 deletions(-) diff --git a/.bazelrc b/.bazelrc index ebc583f2d16..d06421f2e66 100644 --- a/.bazelrc +++ b/.bazelrc @@ -53,7 +53,7 @@ build:autosd-x86_64 --config=_common build:autosd-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux build:autosd-x86_64 --force_pic build:autosd-x86_64 --extra_toolchains=@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64 -build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchains:linux_x86_64 +build:autosd-x86_64 --extra_toolchains=@rules_rpm//toolchain:linux_x86_64 # Ferrocene Rust coverage config build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Cinstrument-coverage @@ -75,4 +75,4 @@ coverage --features=coverage coverage --combined_report=lcov # user specific overrides (like proxy settings) -try-import %workspace%/user.bazelrc \ No newline at end of file +try-import %workspace%/user.bazelrc diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 445c628f243..9ba9f347cad 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -49,18 +49,16 @@ jobs: sudo apt-get update -y sudo apt-get install -y podman curl qemu-system createrepo-c - - name: Build Showcases RPMs + - name: Build Showcases run: | - bazel build --config autosd-x86_64 //images/autosd_x86_64:score-reference-integration + bazel build --config autosd-x86_64 //images/autosd_x86_64:image working-directory: ./images/autosd_x86_64 - - name: Copy RPMs + - name: Copy showcases_all folder run: | set -e mkdir -p ./images/autosd_x86_64/build/rpms - cp bazel-bin/images/autosd_x86_64/score-reference-integration-0.6.0-1.x86_64.rpm ./images/autosd_x86_64/build/rpms - createrepo_c ./images/autosd_x86_64/build/rpms/ - ls -l ./images/autosd_x86_64/build/rpms/ + cp -R bazel-bin/showcases/showcases_all ./images/autosd_x86_64/build/files/ - name: Install AIB Tools run: | @@ -70,7 +68,6 @@ jobs: - name: Build AutoSD QEMU (x86_64) run: | - export AIB_PODMAN_OPTIONS="--tmpfs /var/tmp" export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage mkdir -p _build/containers-storage diff --git a/.gitignore b/.gitignore index a135a99038c..9d2f3dfceaf 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,5 @@ __pycache__/ /.gita/ /.gita-workspace.csv build +!images/autosd_x86_64/build/ artifacts diff --git a/bazel_common/score_basic_bazel.MODULE.bazel b/bazel_common/score_basic_bazel.MODULE.bazel index 65b9eeca8b9..d7f3c8088fc 100644 --- a/bazel_common/score_basic_bazel.MODULE.bazel +++ b/bazel_common/score_basic_bazel.MODULE.bazel @@ -1,11 +1,13 @@ bazel_dep(name = "rules_shell", version = "0.6.0") bazel_dep(name = "rules_cc", version = "0.1.1") bazel_dep(name = "rules_pkg", version = "1.2.0") + bazel_dep(name = "rules_rpm", version = "0.1.0") git_override( module_name = "rules_rpm", + remote = "https://github.com/eclipse-score/inc_os_autosd.git", branch = "main", - remote = "https://github.com/bilelmoussaoui/bazel-rpm.git", + strip_prefix = "rpm" ) bazel_dep(name = "flatbuffers", version = "25.9.23") diff --git a/bazel_common/score_gcc_toolchains.MODULE.bazel b/bazel_common/score_gcc_toolchains.MODULE.bazel index 5cc05b0792f..1a44306269b 100644 --- a/bazel_common/score_gcc_toolchains.MODULE.bazel +++ b/bazel_common/score_gcc_toolchains.MODULE.bazel @@ -69,7 +69,7 @@ autosd_10_gcc = use_extension("@os_autosd_toolchain//autosd_10_gcc:extensions.bz use_repo(autosd_10_gcc, "autosd_10_gcc_repo") # Register the RPM toolchain -rpm_toolchain = use_extension("@rules_rpm//toolchains:extensions.bzl", "rpm_toolchain") +rpm_toolchain = use_extension("@rules_rpm//toolchain:extensions.bzl", "rpm_toolchain") use_repo(rpm_toolchain, "rpm_toolchain") use_repo(eb, "gcc_toolchain", "gcc_toolchain_gcc") diff --git a/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel index 9e8806ba983..20ec8dabcab 100644 --- a/images/autosd_x86_64/BUILD.bazel +++ b/images/autosd_x86_64/BUILD.bazel @@ -10,7 +10,7 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -load("@rules_rpm//rpm:defs.bzl", "rpm_package") +load("@rules_rpm//:defs.bzl", "rpm_package") alias( name = "image", @@ -19,17 +19,12 @@ alias( ) rpm_package( - name = "score-reference-integration", - description = "Eclipse S-CORE Reference Integration", - summary = "Eclipse S-CORE Reference Integration", + name = "score-showcases", + description = "Eclipse S-CORE Reference Integration Showcases", + summary = "Eclipse S-CORE Reference Integration Showcases", version = "0.6.0", - binaries = [ - "//showcases/cli:cli", - "//showcases/orchestration_persistency:orch_per_example", - ], - config_dir = "/etc/score", data = [ - "//showcases/orchestration_persistency:orch_per.score.json" + "//showcases:showcases_all" ], data_dir = "/usr/share/score/examples", ) diff --git a/images/autosd_x86_64/build/.gitignore b/images/autosd_x86_64/build/.gitignore index 5c103a06418..7abec403223 100644 --- a/images/autosd_x86_64/build/.gitignore +++ b/images/autosd_x86_64/build/.gitignore @@ -1,4 +1,5 @@ _build/ +rpms/ outputs/ auto-image-builder.sh diff --git a/images/autosd_x86_64/build/image.aib.yml b/images/autosd_x86_64/build/image.aib.yml index 01ff154a4f9..4cc4f2cf59d 100644 --- a/images/autosd_x86_64/build/image.aib.yml +++ b/images/autosd_x86_64/build/image.aib.yml @@ -21,15 +21,10 @@ content: repos: - id: epel baseurl: https://dl.fedoraproject.org/pub/epel/10/Everything/$arch/ - - id: score - baseurl: file:///host/rpms + # removing it for now because the image is relying on copying globs + #- id: score + # baseurl: file:///host/rpms rpms: - - vim-enhanced - - gdb - - strace - - boost-devel - - tree - - dnf # For testing the image only: - openssh-server - openssh-clients @@ -38,8 +33,6 @@ content: - bluechi-controller - bluechi-agent - bluechi-ctl - # score - - score-reference-integration make_dirs: - path: /etc/containers/systemd/qm.container.d @@ -74,15 +67,55 @@ content: # lola test script - path: /usr/bin/lola-ipc-test source_path: files/lola-ipc-test + # showcases + - path: /usr/share/score/examples/showcases_all + source_glob: "files/showcases_all/**/*" + preserve_path: true + max_files: 50 + chmod_files: - path: /usr/bin/lola-ipc-test mode: "0755" + # the following is a workaround because copied files lost their permissions + - path: /usr/share/score/examples/showcases_all/bin/cli + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/control_daemon + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/cpp_supervised_app + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/ipc_bridge_cpp + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/launch_manager + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/lifecycle_signal.sh + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/orch_per_example + mode: "0755" + recursive: true + + - path: /usr/share/score/examples/showcases_all/bin/rust_supervised_app + mode: "0755" + recursive: true + # Required for testing the image only: systemd: enabled_services: # Enable ssh daemon - sshd.service + # bluechi services - bluechi-controller.service - bluechi-agent.service @@ -96,12 +129,8 @@ qm: repos: - id: epel baseurl: https://dl.fedoraproject.org/pub/epel/10/Everything/$arch/ - - id: score - baseurl: file:///host/rpms rpms: - - boost-devel - bluechi-agent - - score-reference-integration add_files: # lola service files - path: /etc/systemd/system/lola-ipc-sub.service From 0e0050ca9c2ab9cb70eff5f075f963fae10b8bfd Mon Sep 17 00:00:00 2001 From: Oliver Pajonk Date: Thu, 19 Feb 2026 17:15:39 +0100 Subject: [PATCH 34/55] Update EBcLfSA Integration (#112) Due to the previous refactoring, a few paths and targets were wrongly named. --- .github/workflows/build_and_test_ebclfsa.yml | 4 +- images/ebclfsa_aarch64/README.md | 39 +++++++++---------- .../persistency_integration/BUILD | 4 +- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index c84d186282a..46c7f986618 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -11,7 +11,7 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -name: EB Corbos Linux for Safety - Build & Integration Test +name: EB corbos Linux for Safety Applications - Build & Integration Test on: pull_request: @@ -53,4 +53,4 @@ jobs: with: name: test-logs path: | - ebclfsa/bazel-bin/scrample_integration/*.log + bazel-bin/images/ebclfsa_aarch64/scrample_integration/*.log diff --git a/images/ebclfsa_aarch64/README.md b/images/ebclfsa_aarch64/README.md index a7b6fa45dc9..0f7a95d5c52 100644 --- a/images/ebclfsa_aarch64/README.md +++ b/images/ebclfsa_aarch64/README.md @@ -24,7 +24,7 @@ However, please understand that we cannot advise you about possible costs in you > - Copy and paste the following command into the terminal and hit "Enter": > > ```bash -> cd ./ebclfsa && bazel build --config=aarch64-ebclfsa //scrample_integration:run +> bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run > ``` > > This will build and run the example. @@ -35,12 +35,12 @@ However, please understand that we cannot advise you about possible costs in you > > ```console > [...] -> Target //scrample_integration:run up-to-date: -> bazel-bin/scrample_integration/qemu_run.log -> bazel-bin/scrample_integration/ssh_scrample_run.log ->INFO: Elapsed time: 361.273s, Critical Path: 91.92s ->INFO: 836 processes: 10 internal, 826 local. ->INFO: Build completed successfully, 836 total actions +> Target //images/ebclfsa_aarch64/scrample_integration:run up-to-date: +> bazel-bin/images/ebclfsa_aarch64/scrample_integration/qemu_run.log +> bazel-bin/images/ebclfsa_aarch64/scrample_integration/ssh_scrample_run.log +> INFO: Elapsed time: 217.949s, Critical Path: 100.88s +> INFO: 932 processes: 9 action cache hit, 1 internal, 931 local. +> INFO: Build completed successfully, 932 total actions > ``` > > The two log files mentioned in this output are the main results of the test execution. @@ -220,16 +220,15 @@ This way `cflinit` keeps its static entrypoint for the Eclipse S-CORE example ap ### S-CORE Toolchain in Linux for Safety Applications -The demo SDK integrates the [S-CORE toolchain with two extensions](https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/tag/0.5.0-alpha): +The demo SDK integrates the [S-CORE toolchain with two extensions](https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/tag/0.5.0-beta): - Additional tooling for AArch64 cross-building. - Additional tool `lisa-elf-enabler`: It marks an ELF header of an application in a way that Linux for Safety Applications detects it as an HI application. - The tool is available to Bazel via `@eb_toolchain_gcc//:elf-enabler`. ### Bazel Rules for the Example Applications The example extends the [`scrample` example](https://github.com/eclipse-score/scrample) of S-CORE with the application setup and the toolchain extensions described above. -With those changes, the toolchain can be used via `bazel build --config=aarch64-ebclfsa //scrample_integration:`. +With those changes, the toolchain can be used via `bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:`. > [!IMPORTANT] > Building inside a sandbox is currently not possible. @@ -253,7 +252,7 @@ The following sections introduce some of the rules mentioned above. The `run` target provides an easy entry point, to build, post-process, deploy, run and stop the example: ```bash -bazel build --config=aarch64-ebclfsa //scrample_integration:run +bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run ``` This command will take a while to finish, since it performs some downloads and starts the fast-dev image. @@ -322,7 +321,7 @@ SDK:handler_do_el0_svc_pre: syscall __NR_clone3 (435) is not allowed Building all components of the example application can be performed with the `hi_app` rule. ```bash -bazel build --config=aarch64-ebclfsa //scrample_integration:hi_app +bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:hi_app ``` Due the dependencies towards `:scrample_sil` and `:scrample_sil_wrapper` this will build all required binaries. @@ -333,16 +332,16 @@ Including the LI `scrample` binary, a temporary `scrample_sil_wrapper` binary as The easiest way to setup the fast-dev image, is to use the `fastdev-image` rule. ```bash -bazel build --config=aarch64-ebclfsa //scrample_integration:fastdev-image +bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:fastdev-image ``` This will first download the image via the `fetch-fastdev-archive` rule and cache the archive. -Afterwards, the `fastdev-image` rule extracts the archive (containing a disk image and a kernel) to `bazel-bin/scrample_integration/deb-qemuarm64/`. +Afterwards, the `fastdev-image` rule extracts the archive (containing a disk image and a kernel) to `bazel-bin/images/ebclfsa_aarch64/scrample_integration/ebcl-qemuarm64/`. To start the unmodified base image (without the Eclipse S-CORE example application) manually, the included `run_qemu.sh` script can be used. ```bash -./scrample_integration/run_qemu.sh bazel-bin/scrample_integration/deb-qemuarm64/ +./images/ebclfsa_aarch64/scrample_integration/run_qemu.sh bazel-bin/images/ebclfsa_aarch64/scrample_integration/ebcl-qemuarm64/ ``` This is of course optional, and only needed if a deeper manual look into the image is wished. @@ -357,19 +356,19 @@ ssh -p 2222 root@localhost > [!NOTE] > Be aware, that running the image via qemu, will change the stored disk image. > Bazel will detect this change and overwrite the disk image with the original one from the downloaded archive. -> If it is planned to have persistent changes on the image, copy the content of `bazel-bin/scrample_integration/deb-qemuarm64/` to a location outside of `bazel-bin` and adapt the command line argument in the above `run_qemu.sh` call accordingly. +> If it is planned to have persistent changes on the image, copy the content of `bazel-bin/images/ebclfsa_aarch64/scrample_integration/ebcl-qemuarm64/` to a location outside of `bazel-bin` and adapt the command line argument in the above `run_qemu.sh` call accordingly. For deploying the example application to the image, the `upload` rule is available, which will start the image based on the content of `bazel-bin/scrample_integration/deb-qemuarm64/` and deploy all needed files via `scp`. ```bash -bazel build --config=aarch64-ebclfsa //scrample_integration:upload +bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:upload ``` -Since the deployment step will change the stored disk image, the `upload` rule stores its output in `bazel-bin/scrample_integration/deb-qemuarm64-modified/`. +Since the deployment step will change the stored disk image, the `upload` rule stores its output in `bazel-bin/images/ebclfsa_aarch64/scrample_integration/ebcl-qemuarm64-modified/`. Running the image with the deployed example applications works the same way as before, just with a different folder for the used image and kernel: ```bash -./scrample_integration/run_qemu.sh bazel-bin/scrample_integration/deb-qemuarm64-modified/ +./images/ebclfsa_aarch64/scrample_integration/run_qemu.sh bazel-bin/images/ebclfsa_aarch64/scrample_integration/ebcl-qemuarm64-modified/ ``` Like before you can interact with the image via the serial console or ssh. @@ -394,5 +393,5 @@ crinit-ctl poweroff * The toolchain and librares are provided for demonstration and prototyping purposes without further qualification. * A second test case for S-CORE persistency is also integrated. You can run it via - `bazel build --config=aarch64-ebclfsa //persistency_integration:run` + `bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/persistency_integration:run` However, this is not integrated as HI application to avoid the additional complexity of the required wrapper. diff --git a/images/ebclfsa_aarch64/persistency_integration/BUILD b/images/ebclfsa_aarch64/persistency_integration/BUILD index ce66c5b2634..fdb5c75f0a6 100644 --- a/images/ebclfsa_aarch64/persistency_integration/BUILD +++ b/images/ebclfsa_aarch64/persistency_integration/BUILD @@ -32,7 +32,7 @@ genrule( genrule( name = "upload", srcs = [ - "@score_persistency//tests/cpp_test_scenarios:cpp_test_scenarios", + "@score_persistency//tests/test_scenarios/cpp:test_scenarios", ":fastdev-image", "scripts/cpp_tests_persistency.sh", "run_qemu.sh", @@ -42,7 +42,7 @@ genrule( cp $(RULEDIR)/ebcl-qemuarm64/* $(RULEDIR)/ebcl-qemuarm64-modified/ &&\ $(location run_qemu.sh) $(RULEDIR)/ebcl-qemuarm64-modified -pidfile $(RULEDIR)/qemu.pid > $(RULEDIR)/qemu_upload.log &\ sleep 30 ; \ - sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location @score_persistency//tests/cpp_test_scenarios:cpp_test_scenarios) root@localhost:/usr/bin/cpp_tests_persistency &&\ + sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location @score_persistency//tests/test_scenarios/cpp:test_scenarios) root@localhost:/usr/bin/cpp_tests_persistency &&\ sshpass -p linux scp -o StrictHostKeyChecking=no -P 2222 $(location scripts/cpp_tests_persistency.sh) root@localhost:/usr/bin/cpp_tests_persistency.sh &&\ sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost sync &&\ sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ From c529ff3a12d3c808bd21900830eaae6167628125 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Fri, 20 Feb 2026 08:16:40 +0100 Subject: [PATCH 35/55] disable caching for unit tests (#113) --- .github/workflows/test_and_docs.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index fde8aceb6ee..07fcc9abd0b 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -43,11 +43,12 @@ jobs: - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 - with: - bazelisk-cache: true - disk-cache: ${{ github.workflow }} - repository-cache: true - cache-save: ${{ github.event_name == 'push' }} + # Currently disabled due to issue in testing not finding correct libraries + # with: + # bazelisk-cache: true + # disk-cache: ${{ github.workflow }} + # repository-cache: true + # cache-save: ${{ github.event_name == 'push' }} - name: Set up Python 3 uses: actions/setup-python@v5 From bf43bf40ae8bb8daf7c8692c3dbaa9a6bfbbbb0e Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Fri, 20 Feb 2026 12:58:03 +0100 Subject: [PATCH 36/55] build proper documentation (#115) * build proper documentation * patch duplicated needs names in persistency --- BUILD | 18 +++- .../score_modules_target_sw.MODULE.bazel | 4 + .../score_modules_tooling.MODULE.bazel | 4 + docs/index.rst | 46 ++++++---- docs/place_holder/communication.rst | 5 - docs/place_holder/orchestrator.rst | 5 - docs/place_holder/persistency.rst | 5 - known_good.json | 8 +- patches/docs-as-code/BUILD | 0 .../docs-as-code/fix-extra-properties.patch | 23 +++++ patches/persistency/BUILD | 0 .../fix-duplicated-needs-name.patch | 92 +++++++++++++++++++ 12 files changed, 171 insertions(+), 39 deletions(-) delete mode 100644 docs/place_holder/communication.rst delete mode 100644 docs/place_holder/orchestrator.rst delete mode 100644 docs/place_holder/persistency.rst create mode 100644 patches/docs-as-code/BUILD create mode 100644 patches/docs-as-code/fix-extra-properties.patch create mode 100644 patches/persistency/BUILD create mode 100644 patches/persistency/fix-duplicated-needs-name.patch diff --git a/BUILD b/BUILD index f8273c81269..78223a1ed53 100644 --- a/BUILD +++ b/BUILD @@ -15,13 +15,21 @@ load("@score_docs_as_code//:docs.bzl", "docs") docs( data = [ - "@score_platform//:needs_json", - #"@score_persistency//:needs_json", # cannot be included, as it does not contain any needs? - #"@score_orchestrator//:needs_json", # some issue about score_toolchains_qnx? - #"@score_communication//:needs_json", # no docs yet? + # Software components + "@score_persistency//:needs_json", + "@score_orchestrator//:needs_json", + "@score_kyron//:needs_json", + "@score_baselibs//:needs_json", + "@score_baselibs_rust//:needs_json", + # "@score_communication//:needs_json", # no docs_sources + # "@score_lifecycle_health//:needs_json", # unreadable images - relative paths issue + # "@score_logging//:needs_json", # duplicated labels + "@score_logging//:needs_json", # "@score_feo//:needs_json", - "@score_docs_as_code//:needs_json", + # Tools + "@score_platform//:needs_json", "@score_process//:needs_json", + "@score_docs_as_code//:needs_json", ], source_dir = "docs", ) diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 61f88f087d3..b35cb7467d1 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -48,6 +48,10 @@ git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", commit = "9692dadab51c677183262e8870c5425ab1797c4f", + patches = [ + "//patches/persistency:fix-duplicated-needs-name.patch", + ], + patch_strip = 1, ) bazel_dep(name = "score_orchestrator") diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 296c8af352a..8d907db7ebc 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -56,6 +56,10 @@ bazel_dep(name = "score_docs_as_code") single_version_override( module_name = "score_docs_as_code", version = "3.0.1", + patches = [ + "//patches/docs-as-code:fix-extra-properties.patch", + ], + patch_strip = 1, ) bazel_dep(name = "score_process") diff --git a/docs/index.rst b/docs/index.rst index a9ae458ee31..74d223ce073 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,28 +17,38 @@ Reference Integration Documentation Newest Release Notes: :need:`doc__score_v05_beta_release_note` -Verification Reports Summaries ------------------------------- .. toctree:: - verification/verification + :caption: Software Components + :titlesonly: + :maxdepth: 1 + + + _collections/score_persistency/docs/index + _collections/score_orchestrator/docs/index + _collections/score_kyron/docs/index + _collections/score_baselibs/docs/index + _collections/score_baselibs_rust/docs/index + _collections/score_logging/docs/index + +.. toctree:: + :caption: Process, Methods, and Tools + :titlesonly: + :maxdepth: 1 -.. if-collection:: score_platform + _collections/score_platform/docs/index + _collections/score_process/process/index + _collections/score_docs_as_code/docs/index - .. toctree:: - :maxdepth: 1 - :titlesonly: - :caption: Platform and Modules +.. toctree:: + :caption: Code Quality + :titlesonly: + :glob: - S-CORE Platform <_collections/score_platform/docs/index> - place_holder/persistency - place_holder/orchestrator - place_holder/communication + verification/verification - .. toctree:: - :maxdepth: 1 - :titlesonly: - :caption: Process, Methods, and Tools +.. toctree:: + :hidden: + :glob: - _collections/score_process/process/index - _collections/score_docs_as_code/docs/index + verification/* diff --git a/docs/place_holder/communication.rst b/docs/place_holder/communication.rst deleted file mode 100644 index d20d5accaf5..00000000000 --- a/docs/place_holder/communication.rst +++ /dev/null @@ -1,5 +0,0 @@ -============= -Communication -============= - -No communication available yet. diff --git a/docs/place_holder/orchestrator.rst b/docs/place_holder/orchestrator.rst deleted file mode 100644 index fed4aeab225..00000000000 --- a/docs/place_holder/orchestrator.rst +++ /dev/null @@ -1,5 +0,0 @@ -============ -Orchestrator -============ - -Actual documentation is found here: https://eclipse-score.github.io/orchestrator/main/ diff --git a/docs/place_holder/persistency.rst b/docs/place_holder/persistency.rst deleted file mode 100644 index 6785100156d..00000000000 --- a/docs/place_holder/persistency.rst +++ /dev/null @@ -1,5 +0,0 @@ -=========== -Persistency -=========== - -Actual documentation is found here: https://eclipse-score.github.io/persistency/main/ diff --git a/known_good.json b/known_good.json index 27a62fd948e..a10dd355c60 100644 --- a/known_good.json +++ b/known_good.json @@ -55,6 +55,9 @@ "score_persistency": { "repo": "https://github.com/eclipse-score/persistency.git", "hash": "9692dadab51c677183262e8870c5425ab1797c4f", + "bazel_patches": [ + "//patches/persistency:fix-duplicated-needs-name.patch" + ], "metadata": { "code_root_path": "//src/...", "exclude_test_targets": [ @@ -138,7 +141,10 @@ }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "version": "3.0.1" + "version": "3.0.1", + "bazel_patches": [ + "//patches/docs-as-code:fix-extra-properties.patch" + ] }, "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", diff --git a/patches/docs-as-code/BUILD b/patches/docs-as-code/BUILD new file mode 100644 index 00000000000..e69de29bb2d diff --git a/patches/docs-as-code/fix-extra-properties.patch b/patches/docs-as-code/fix-extra-properties.patch new file mode 100644 index 00000000000..4b9a3039320 --- /dev/null +++ b/patches/docs-as-code/fix-extra-properties.patch @@ -0,0 +1,23 @@ +diff --git a/src/extensions/score_source_code_linker/testlink.py b/src/extensions/score_source_code_linker/testlink.py +index 50066fe3..51311f3e 100644 +--- a/src/extensions/score_source_code_linker/testlink.py ++++ b/src/extensions/score_source_code_linker/testlink.py +@@ -93,7 +93,17 @@ class DataOfTestCase: + + @classmethod + def from_dict(cls, data: dict[str, Any]): # type-ignore +- return cls(**data) # type-ignore ++ return cls( ++ name=data.get("name", ""), ++ file=data.get("file", ""), ++ line=data.get("line", ""), ++ result=data.get("result", ""), ++ TestType=data.get("TestType", ""), ++ DerivationTechnique=data.get("DerivationTechnique", ""), ++ result_text=data.get("result_text", ""), ++ PartiallyVerifies=data.get("PartiallyVerifies", ""), ++ FullyVerifies=data.get("FullyVerifies", ""), ++ ) + + @classmethod + def clean_text(cls, text: str): diff --git a/patches/persistency/BUILD b/patches/persistency/BUILD new file mode 100644 index 00000000000..e69de29bb2d diff --git a/patches/persistency/fix-duplicated-needs-name.patch b/patches/persistency/fix-duplicated-needs-name.patch new file mode 100644 index 00000000000..410aa312f84 --- /dev/null +++ b/patches/persistency/fix-duplicated-needs-name.patch @@ -0,0 +1,92 @@ +diff --git a/docs/persistency/kvs/docs/requirements/statistics.rst b/docs/persistency/kvs/docs/requirements/statistics.rst +index b109225..20f8fb6 100644 +--- a/docs/persistency/kvs/docs/requirements/statistics.rst ++++ b/docs/persistency/kvs/docs/requirements/statistics.rst +@@ -1,12 +1,12 @@ + .. _statistics: + +-Component Requirements Statistics +-================================= ++Persistency Component Requirements Statistics ++============================================= + + Overview + -------- + +-.. needpie:: Requirements Status ++.. needpie:: Persistency Requirements Status + :labels: not valid, valid but not tested, valid and tested + :colors: red,yellow, green + +@@ -22,7 +22,7 @@ In Detail + + .. grid-item-card:: + +- .. needpie:: Requirements marked as Valid ++ .. needpie:: Persistency Requirements marked as Valid + :labels: not valid, valid + :colors: red, orange, green + +@@ -31,7 +31,7 @@ In Detail + + .. grid-item-card:: + +- .. needpie:: Requirements with Codelinks ++ .. needpie:: Persistency Requirements with Codelinks + :labels: no codelink, with codelink + :colors: red, green + +@@ -40,7 +40,7 @@ In Detail + + .. grid-item-card:: + +- .. needpie:: Test Results ++ .. needpie:: Persistency Test Results + :labels: passed, failed, skipped + :colors: green, red, orange + +@@ -56,7 +56,7 @@ In Detail + + *Hint: This table should be empty. Before a PR can be merged all tests have to be successful.* + +- .. needtable:: FAILED TESTS ++ .. needtable:: Persistency FAILED TESTS + :filter: result == "failed" + :tags: TEST + :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" +@@ -65,7 +65,7 @@ In Detail + + Skipped / Disabled Tests + +- .. needtable:: SKIPPED/DISABLED TESTS ++ .. needtable:: Persistency SKIPPED/DISABLED TESTS + :filter: result != "failed" and result != "passed" + :tags: TEST + :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" +@@ -76,7 +76,7 @@ In Detail + All passed Tests + ----------------- + +-.. needtable:: SUCCESSFUL TESTS ++.. needtable:: Persistency SUCCESSFUL TESTS + :filter: result == "passed" + :tags: TEST + :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" +@@ -85,7 +85,7 @@ All passed Tests + Details About Testcases + ------------------------ + +-.. needpie:: Test Types Used In Testcases ++.. needpie:: Persistency Test Types Used In Testcases + :labels: static-code-analysis, structural-statement-coverage, structural-branch-coverage, walkthrough, inspection, interface-test, requirements-based, resource-usage, control-flow-analysis, data-flow-analysis, fault-injection, struct-func-cov, struct-call-cov + :legend: + +@@ -104,7 +104,7 @@ Details About Testcases + type == 'testcase' and test_type == 'struct-call-cov' + + +-.. needpie:: Derivation Techniques Used In Testcases ++.. needpie:: Persistency Derivation Techniques Used In Testcases + :labels: requirements-analysis, boundary-values, equivalence-classes, fuzz-testing, error-guessing, explorative-testing + :legend: + From a8c51857b25918373a83a83e7660ada254625d13 Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Fri, 20 Feb 2026 13:59:12 +0100 Subject: [PATCH 37/55] Bring back caching (#117) --- .bazelrc | 6 ++++++ .github/workflows/test_and_docs.yml | 11 +++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.bazelrc b/.bazelrc index d06421f2e66..a47392fb22a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -66,6 +66,9 @@ build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Cco build:ferrocene-coverage --@rules_rust//rust/settings:extra_exec_rustc_flag=-Cdebuginfo=2 test:ferrocene-coverage --run_under=@score_tooling//coverage:llvm_profile_wrapper +# Coverage needs to have all intermediate .rlibs to be able to proceed +build:ferrocene-coverage --remote_download_all + test:unit-tests --config=linux-x86_64 test:unit-tests --build_tests_only test:unit-tests --test_tag_filters=-manual @@ -76,3 +79,6 @@ coverage --combined_report=lcov # user specific overrides (like proxy settings) try-import %workspace%/user.bazelrc + +# Try import setting from home (CI setup-bazel action for caching uses this to provide proper args like --disk-cache) +try-import ~/.bazelrc diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index 07fcc9abd0b..fde8aceb6ee 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -43,12 +43,11 @@ jobs: - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 - # Currently disabled due to issue in testing not finding correct libraries - # with: - # bazelisk-cache: true - # disk-cache: ${{ github.workflow }} - # repository-cache: true - # cache-save: ${{ github.event_name == 'push' }} + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }} + repository-cache: true + cache-save: ${{ github.event_name == 'push' }} - name: Set up Python 3 uses: actions/setup-python@v5 From 409178f63950c68799e2f0a2e8fae0447d5cbd82 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Fri, 20 Feb 2026 14:10:50 +0100 Subject: [PATCH 38/55] new patch with unique name (#119) --- patches/persistency/fix-duplicated-needs-name.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/patches/persistency/fix-duplicated-needs-name.patch b/patches/persistency/fix-duplicated-needs-name.patch index 410aa312f84..b9caf7c2c67 100644 --- a/patches/persistency/fix-duplicated-needs-name.patch +++ b/patches/persistency/fix-duplicated-needs-name.patch @@ -1,9 +1,10 @@ diff --git a/docs/persistency/kvs/docs/requirements/statistics.rst b/docs/persistency/kvs/docs/requirements/statistics.rst -index b109225..20f8fb6 100644 +index b109225..3b56254 100644 --- a/docs/persistency/kvs/docs/requirements/statistics.rst +++ b/docs/persistency/kvs/docs/requirements/statistics.rst @@ -1,12 +1,12 @@ - .. _statistics: +-.. _statistics: ++.. _persistency_statistics: -Component Requirements Statistics -================================= From 286ff68980310377e2d30ac8400ca79a8db01e25 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Tue, 24 Feb 2026 13:12:09 +0100 Subject: [PATCH 39/55] align main branch with v0.6 release (#154) --- .github/codeql/codeql-config.yml | 5 +- .../workflows/codeql-multiple-repo-scan.yml | 4 +- .github/workflows/release_verification.yml | 72 ----------- BUILD | 1 - README.md | 118 ++++++------------ .../score_modules_target_sw.MODULE.bazel | 12 +- .../score_modules_tooling.MODULE.bazel | 31 +++-- docs/index.rst | 2 +- known_good.json | 29 ++--- patches/persistency/BUILD | 0 .../fix-duplicated-needs-name.patch | 93 -------------- 11 files changed, 78 insertions(+), 289 deletions(-) delete mode 100644 .github/workflows/release_verification.yml delete mode 100644 patches/persistency/BUILD delete mode 100644 patches/persistency/fix-duplicated-needs-name.patch diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 2c41924f668..bfe715cbcf6 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -1,7 +1,10 @@ name: "Custom CodeQL Configuration for MISRA" +paths: + - repos paths-ignore: - "**/*test*" - "**/*mock*" - "**/test/**" - - "**/mock/**" \ No newline at end of file + - "**/mock/**" + - "**/codeql-coding-standards-repo/**" diff --git a/.github/workflows/codeql-multiple-repo-scan.yml b/.github/workflows/codeql-multiple-repo-scan.yml index c23e71b83fe..d8b3ed23866 100644 --- a/.github/workflows/codeql-multiple-repo-scan.yml +++ b/.github/workflows/codeql-multiple-repo-scan.yml @@ -140,7 +140,7 @@ jobs: (cd "$path" && git checkout "$ref") else echo " Detected branch/tag. Cloning with --branch." - git clone --depth 1 --branch "$ref" "$url" "$path" + git clone --depth 1 --branch v"$ref" "$url" "$path" fi # Append the path to the list, separated by commas @@ -209,4 +209,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: codeql-html-report - path: codeql-report.html \ No newline at end of file + path: codeql-report.html diff --git a/.github/workflows/release_verification.yml b/.github/workflows/release_verification.yml deleted file mode 100644 index 6692980ee73..00000000000 --- a/.github/workflows/release_verification.yml +++ /dev/null @@ -1,72 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* - -# Workflow configuration for S-CORE CI - Release Check -# This workflow runs Bazel build and test when triggered by tag creation. - -name: Test reference integration -on: - push: - tags: - - 'v*' # Triggers on version tags like v1.0.0 - - 'release-*' # Triggers on release tags like release-1.0.0 - -permissions: - contents: write - -jobs: - test_target: - runs-on: ubuntu-22.04 - steps: - - name: Checkout repository - uses: actions/checkout@v4.2.2 - - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.9.1 - - name: Setup QNX License - env: - SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }} - run: | - mkdir -p /opt/score_qnx/license - echo "${SCORE_QNX_LICENSE}" | base64 --decode > /opt/score_qnx/license/licenses - - name: Install qemu - run: | - sudo apt-get update - sudo apt-get install -y qemu-system - - name: Enable KVM group perms - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - name: Bazel execute itf qnx_qemu tests - env: - SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} - SCORE_QNX_PASSWORD: ${{ secrets.SCORE_QNX_PASSWORD }} - run: | - cd qnx_qemu - bazel test --config=qemu-integration --test_output=streamed --credential_helper=*.qnx.com=${{ github.workspace }}/.github/tools/qnx_credential_helper.py -- \ - //:test_ssh_qemu \ - //:test_scrample_qemu \ - //:test_persistency_qemu \ - - name: Bazel execute showcase examples - run: | - bazel build --config x86_64-linux //feature_showcase:all_examples - release_verification: - runs-on: ubuntu-latest - needs: [test_target] - if: always() && (needs.test_target.result == 'failure') - steps: - - name: Remove release and tag (if exists) - uses: nikhilbadyal/ghaction-rm-releases@v0.7.0 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_PATTERN: ${{ github.ref_name }} diff --git a/BUILD b/BUILD index 78223a1ed53..e54b90d0e01 100644 --- a/BUILD +++ b/BUILD @@ -25,7 +25,6 @@ docs( # "@score_lifecycle_health//:needs_json", # unreadable images - relative paths issue # "@score_logging//:needs_json", # duplicated labels "@score_logging//:needs_json", - # "@score_feo//:needs_json", # Tools "@score_platform//:needs_json", "@score_process//:needs_json", diff --git a/README.md b/README.md index c58358601fb..5069bbeba85 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # Score Reference Integration -This workspace integrates multiple Eclipse Score modules (baselibs, communication, persistency, orchestrator, feo, etc.) to validate cross-repository builds and detect integration issues early in the development cycle. +This workspace integrates multiple Eclipse Score modules (baselibs, communication, persistency, orchestrator, etc.) to validate cross-repository builds and detect integration issues early in the development cycle. ## Overview The reference integration workspace serves as a single Bazel build environment to: + - Validate cross-module dependency graphs - Detect label and repository boundary issues - Test toolchain and platform support (Linux, QNX, LLVM/GCC) - Prepare for release validation workflows - ## Get started Simply run `./score_starter` and select which integration You want to run. Once running, You will be guided by our welcome cli to run selected examples. @@ -20,48 +20,56 @@ Simply run `./score_starter` and select which integration You want to run. Once Intention for each folder is described below ### bazel_common + Used to keep a common bazel functionalities for `images` like: + - toolchain setups - common tooling deps - common S-CORE modules deps - common `.bzl` extensions needed to streamline images - ### showcases + Used to keep `S-CORE` wide **showcases** implementation to showcase S-CORE in certain deployments (images). Contains: + - proxy target bundling all `standalone` examples from all `S-CORE` repos to deploy then as single bazel target into image - implementation of certain **showcases** that shall be deployed into images #### cli -Contains a CLI tool to be used on runner that is showcasing the S-CORE functionality. It will provide superior user experience and will guide user to run examples. -How to use it in Your image, look [here](./showcases/cli/README.md) +Contains a CLI tool to be used on runner that is showcasing the S-CORE functionality. It will provide superior user experience and will guide user to run examples. +How to use it in Your image, look [here] (./showcases/cli/README.md) ### images + Used to keep concrete `images` for given target platform as bazel modules. Each platform shall have it's own folder with name `{platform}_{arch}` ie. `qnx_aarch64`. This `images` shall: - - deploy all `showcases` into image so they can be run inside - - other specific code for given `image` + +- deploy all `showcases` into image so they can be run inside +- other specific code for given `image` ### runners + Used to keep thin logic ro reuse `runners` between images, like docker runner etc. ## Docs To generate a full documentation of all integrated modules, run: + ```bash bazel run //:docs_combo_experimental ``` + ## Operating system integrations > [!NOTE] > Please refer to the README documents in the respective sub-directories for details about the specific integration. -* [QNX](./images/qnx_x86_64//README.md) -* [Red Hat AutoSD](./images/autosd_x86_64/build/README.md) -* [Elektrobit corbos Linux for Safety Applications](./images/ebclfsa_aarch64/README.md) -* [Linux x86_64]() +- [QNX](./images/qnx_x86_64//README.md) +- [Red Hat AutoSD](./images/autosd_x86_64/build/README.md) +- [Elektrobit corbos Linux for Safety Applications](./images/ebclfsa_aarch64/README.md) +- Linux x86_64 ## Workspace support @@ -73,48 +81,33 @@ This helps with cross-module development, debugging, and generally "trying out t > You can do this manually as well, of course (e.g. if you do not use the devcontainer). > Take a look at `.devcontainer/prepare_workspace.sh`, which contains the setup script. -> [!NOTE] -> Not all Bazel targets are supported yet. -> Running `./scripts/integration_test.sh` will work, though. -> Take a look at the [Known Issues](#known-issues-️) below to see which Bazel targets are available and working. - -The supported workspace managers are: - -| Name | Description | -|------|-------------| -| [Gita](https://github.com/nosarthur/gita) | "a command-line tool to manage multiple git repos" | - -A description of how to use these workspace managers, together with their advantages and drawbacks, is beyond the scope of this document. -In case of doubt, choose the first. - ### Initialization of the workspace -> [!WARNING] -> This will change the file `score_modules.MODULE.bazel`. -> Do **not** commit these changes! - 1. Switch to local path overrides, using the VSCode Task (`Terminal`->`Run Task...`) "Switch Bazel modules to `local_path_overrides`". Note that you can switch back to `git_overrides` (the default) using the task "Switch Bazel modules to `git_overrides`" - + **Command line:** + ```bash python3 scripts/known_good/update_module_from_known_good.py --override-type local_path ``` - + 2. Update workspace metadata from known good, using the VSCode Task "Update workspace metadata from known good". This will generate the `.gita-workspace.csv` file based on `known_good.json`. - + **Command line:** + ```bash python3 scripts/known_good/known_good_to_workspace_metadata.py ``` - + 3. Run VSCode Task "<Name>: Generate workspace", e.g. "Gita: Generate workspace". This will clone all modules using the chosen workspace manager. The modules will be in sub-directories starting with `score_`. Note that the usage of different workspace managers is mutually exclusive. - + **Command line:** + ```bash gita clone --preserve-path --from-file .gita-workspace.csv ``` @@ -124,67 +117,34 @@ You can make local changes to each module, which will be directly reflected in t ## Known Issues ⚠️ -### Orchestrator -**Issue:** Direct toolchain loading at `BUILD:14` -``` -load("@score_toolchains_qnx//rules/fs:ifs.bzl", "qnx_ifs") -``` -**Resolution needed:** Refactor to use proper toolchain resolution instead of direct load statements. - -**Issue:** clang needs to be installed -``` -sudo apt install clang -``` -**Resolution needed:** why is this happening with -extra_toolchains=@gcc_toolchain//:host_gcc_12 ? - ### Communication + **Module:** `score/mw/com/requirements` **Issues when building from external repository:** + 1. **Label inconsistency:** Some `BUILD` files use `@//third_party` instead of `//third_party` (repository-qualified vs. local label). Should standardize on local labels within the module. 2. **Outdated path reference:** `runtime_test.cpp:get_path` checks for `safe_posix_platform` (likely obsolete module name) instead of `external/score_communication+/`. -### Persistency -**Test failures in `src/cpp/tests`:** -1. **Dependency misconfiguration:** `google_benchmark` should not be a dev-only dependency if required by tests. Consider separating benchmark targets. -2. **Compiler-specific issue in `test_kvs.cpp`:** Contains GCC-specific self-move handling that is incorrect and fails with GCC (only builds with LLVM). Needs portable fix or removal of undefined behavior. - -## Build Blockers 🚧 - -The following builds are currently failing: +### Coverage -### FEO (Full Build) -```bash -bazel build @feo//... --verbose_failures -``` - -### Persistency (Full Build) -```bash -bazel build --config x86_64-linux @score_persistency//src/... --verbose_failures -``` +Running coverage has to be executed on Ubuntu 22.04, newer versions are not supported and might have issues. ## System Dependencies -### Required Packages for FEO -Install the following system packages before building FEO: +Install the following system packages: + ```bash sudo apt-get update -sudo apt-get install -y protobuf-compiler libclang-dev +sudo apt-get install -y protobuf-compiler libclang-dev lcov ``` -## Pending Tasks 🧪 - -- [ ] Add test targets once cross-repository visibility constraints are clarified -- [ ] Normalize third-party label usage across all `BUILD` files -- [ ] Resolve FEO build failures -- [ ] Fix Persistency full build -- [ ] Address compiler-specific issues in test suites - ## Proxy & External Dependencies 🌐 ### Current Issue The `starpls.bzl` file ([source](https://github.com/eclipse-score/tooling/blob/main/starpls/starpls.bzl)) uses `curl` directly for downloading dependencies, which: + - Bypasses Bazel's managed fetch lifecycle and dependency tracking - Breaks reproducibility and remote caching expectations - May fail in corporate proxy-restricted environments @@ -201,19 +161,13 @@ export HTTPS_PROXY=http://127.0.0.1:3128 ``` Add this to your `MODULE.bazel`: + ```python local_path_override(module_name = "score_tooling", path = "../tooling") ``` -### Suggested Improvements -- Replace raw `curl` calls with Bazel `http_archive` or `repository_ctx.download` for reproducibility. -- Parameterize proxy usage via environment or Bazel config flags. - ## IDE support ### Rust Use `scripts/generate_rust_analyzer_support.sh` to generate rust_analyzer settings that will let VS Code work. - -## 🗂 Notes -Keep this file updated as integration issues are resolved. Prefer converting ad-hoc shell steps into Bazel rules or documented scripts under `scripts/` for repeatability. \ No newline at end of file diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index b35cb7467d1..60c20fb8bf2 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -29,7 +29,7 @@ bazel_dep(name = "score_baselibs_rust") git_override( module_name = "score_baselibs_rust", remote = "https://github.com/eclipse-score/baselibs_rust.git", - commit = "9f781acfb6d1a8fa06012ce772b0befb304acf31", + commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", ) bazel_dep(name = "score_communication") @@ -47,11 +47,7 @@ bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", remote = "https://github.com/eclipse-score/persistency.git", - commit = "9692dadab51c677183262e8870c5425ab1797c4f", - patches = [ - "//patches/persistency:fix-duplicated-needs-name.patch", - ], - patch_strip = 1, + commit = "438bf9b5c447fd41ad43b321679dd3d1b3a6c737", ) bazel_dep(name = "score_orchestrator") @@ -78,6 +74,6 @@ git_override( bazel_dep(name = "score_logging") git_override( module_name = "score_logging", - remote = "https://github.com/qorix-group/logging.git", - commit = "3718923aafc273531b1d0b3a240d821db24afbbc", + remote = "https://github.com/eclipse-score/logging.git", + commit = "80feaae8ffaa2448c3872011b724e1668ad2930e", ) diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 8d907db7ebc..91807743a17 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -15,47 +15,52 @@ # Do not edit manually - use scripts/known_good/update_module_from_known_good.py bazel_dep(name = "score_crates") -single_version_override( +git_override( module_name = "score_crates", - version = "0.0.7", + remote = "https://github.com/eclipse-score/score-crates.git", + commit = "372438042bafe21146899dc1f89771a031d12ed0", ) bazel_dep(name = "score_itf") -single_version_override( +git_override( module_name = "score_itf", - version = "0.1.0", + remote = "https://github.com/eclipse-score/itf.git", + commit = "7c87a904ec54628f57a63af8b0c364db83b735cf", ) bazel_dep(name = "score_tooling") -single_version_override( +git_override( module_name = "score_tooling", - version = "1.1.2", + remote = "https://github.com/eclipse-score/tooling.git", + commit = "1159dcf9d35981ac4877265eff7a1e7a24452161", ) bazel_dep(name = "score_platform") git_override( module_name = "score_platform", remote = "https://github.com/eclipse-score/score.git", - commit = "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e", + commit = "bf8502071d750cb70d88f1cb5cfbf5e5e7407f27", ) bazel_dep(name = "score_bazel_platforms") -single_version_override( +git_override( module_name = "score_bazel_platforms", - version = "0.0.4", + remote = "https://github.com/eclipse-score/bazel_platforms.git", + commit = "2286de89c35d5660ad183906a6f010b33fcac8db", ) bazel_dep(name = "score_test_scenarios") git_override( module_name = "score_test_scenarios", remote = "https://github.com/eclipse-score/testing_tools.git", - commit = "6b5e85863e8fb5687251c19f5bb81e0a3afdf581", + commit = "c3d385c8e5562b594a409e92a8f493207b53b49d", ) bazel_dep(name = "score_docs_as_code") -single_version_override( +git_override( module_name = "score_docs_as_code", - version = "3.0.1", + remote = "https://github.com/eclipse-score/docs-as-code.git", + commit = "7349eb22430febb367765ced3fbabfc0ef2988d0", patches = [ "//patches/docs-as-code:fix-extra-properties.patch", ], @@ -66,5 +71,5 @@ bazel_dep(name = "score_process") git_override( module_name = "score_process", remote = "https://github.com/eclipse-score/process_description.git", - commit = "6c772cf05a493218a5ac6071361bf0b66c5427b2", + commit = "fbe68f10041eb34fb791f08e31006afce8c9564a", ) diff --git a/docs/index.rst b/docs/index.rst index 74d223ce073..fa9763883f7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,7 +15,7 @@ Reference Integration Documentation =================================== -Newest Release Notes: :need:`doc__score_v05_beta_release_note` +Newest Release Notes: :need:`doc__score_v06_release_note` .. toctree:: diff --git a/known_good.json b/known_good.json index a10dd355c60..7c89d188a67 100644 --- a/known_good.json +++ b/known_good.json @@ -25,7 +25,7 @@ }, "score_baselibs_rust": { "repo": "https://github.com/eclipse-score/baselibs_rust.git", - "hash": "9f781acfb6d1a8fa06012ce772b0befb304acf31", + "hash": "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", "metadata": { "code_root_path": "//src/...", "exclude_test_targets": [ @@ -54,10 +54,7 @@ }, "score_persistency": { "repo": "https://github.com/eclipse-score/persistency.git", - "hash": "9692dadab51c677183262e8870c5425ab1797c4f", - "bazel_patches": [ - "//patches/persistency:fix-duplicated-needs-name.patch" - ], + "hash": "438bf9b5c447fd41ad43b321679dd3d1b3a6c737", "metadata": { "code_root_path": "//src/...", "exclude_test_targets": [ @@ -93,14 +90,14 @@ } }, "score_logging": { - "repo": "https://github.com/qorix-group/logging.git", - "hash": "3718923aafc273531b1d0b3a240d821db24afbbc", + "repo": "https://github.com/eclipse-score/logging.git", + "hash": "80feaae8ffaa2448c3872011b724e1668ad2930e", "metadata": { "extra_test_config": [ "//score/datarouter/build_configuration_flags:persistent_logging=False", "//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False", "//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False", - "//score/datarouter/build_configuration_flags:enable_dynamic_configuration_in_datarouter=False", + "//score/datarouter/build_configuration_flags:enable_dynamic_configuration=False", "//score/datarouter/build_configuration_flags:file_transfer=False", "//score/datarouter/build_configuration_flags:use_local_vlan=True" ], @@ -117,38 +114,38 @@ "tooling": { "score_crates": { "repo": "https://github.com/eclipse-score/score-crates.git", - "version": "0.0.7" + "hash": "372438042bafe21146899dc1f89771a031d12ed0" }, "score_itf": { "repo": "https://github.com/eclipse-score/itf.git", - "version": "0.1.0" + "hash": "7c87a904ec54628f57a63af8b0c364db83b735cf" }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", - "version": "1.1.2" + "hash": "1159dcf9d35981ac4877265eff7a1e7a24452161" }, "score_platform": { "repo": "https://github.com/eclipse-score/score.git", - "hash": "22aed6f3bb7339fa50cc7e004de3c5af3d2eab6e" + "hash": "bf8502071d750cb70d88f1cb5cfbf5e5e7407f27" }, "score_bazel_platforms": { "repo": "https://github.com/eclipse-score/bazel_platforms.git", - "version": "0.0.4" + "hash": "2286de89c35d5660ad183906a6f010b33fcac8db" }, "score_test_scenarios": { "repo": "https://github.com/eclipse-score/testing_tools.git", - "hash": "6b5e85863e8fb5687251c19f5bb81e0a3afdf581" + "hash": "c3d385c8e5562b594a409e92a8f493207b53b49d" }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "version": "3.0.1", + "hash": "7349eb22430febb367765ced3fbabfc0ef2988d0", "bazel_patches": [ "//patches/docs-as-code:fix-extra-properties.patch" ] }, "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", - "hash": "6c772cf05a493218a5ac6071361bf0b66c5427b2" + "hash": "fbe68f10041eb34fb791f08e31006afce8c9564a" } } }, diff --git a/patches/persistency/BUILD b/patches/persistency/BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/patches/persistency/fix-duplicated-needs-name.patch b/patches/persistency/fix-duplicated-needs-name.patch deleted file mode 100644 index b9caf7c2c67..00000000000 --- a/patches/persistency/fix-duplicated-needs-name.patch +++ /dev/null @@ -1,93 +0,0 @@ -diff --git a/docs/persistency/kvs/docs/requirements/statistics.rst b/docs/persistency/kvs/docs/requirements/statistics.rst -index b109225..3b56254 100644 ---- a/docs/persistency/kvs/docs/requirements/statistics.rst -+++ b/docs/persistency/kvs/docs/requirements/statistics.rst -@@ -1,12 +1,12 @@ --.. _statistics: -+.. _persistency_statistics: - --Component Requirements Statistics --================================= -+Persistency Component Requirements Statistics -+============================================= - - Overview - -------- - --.. needpie:: Requirements Status -+.. needpie:: Persistency Requirements Status - :labels: not valid, valid but not tested, valid and tested - :colors: red,yellow, green - -@@ -22,7 +22,7 @@ In Detail - - .. grid-item-card:: - -- .. needpie:: Requirements marked as Valid -+ .. needpie:: Persistency Requirements marked as Valid - :labels: not valid, valid - :colors: red, orange, green - -@@ -31,7 +31,7 @@ In Detail - - .. grid-item-card:: - -- .. needpie:: Requirements with Codelinks -+ .. needpie:: Persistency Requirements with Codelinks - :labels: no codelink, with codelink - :colors: red, green - -@@ -40,7 +40,7 @@ In Detail - - .. grid-item-card:: - -- .. needpie:: Test Results -+ .. needpie:: Persistency Test Results - :labels: passed, failed, skipped - :colors: green, red, orange - -@@ -56,7 +56,7 @@ In Detail - - *Hint: This table should be empty. Before a PR can be merged all tests have to be successful.* - -- .. needtable:: FAILED TESTS -+ .. needtable:: Persistency FAILED TESTS - :filter: result == "failed" - :tags: TEST - :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" -@@ -65,7 +65,7 @@ In Detail - - Skipped / Disabled Tests - -- .. needtable:: SKIPPED/DISABLED TESTS -+ .. needtable:: Persistency SKIPPED/DISABLED TESTS - :filter: result != "failed" and result != "passed" - :tags: TEST - :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" -@@ -76,7 +76,7 @@ In Detail - All passed Tests - ----------------- - --.. needtable:: SUCCESSFUL TESTS -+.. needtable:: Persistency SUCCESSFUL TESTS - :filter: result == "passed" - :tags: TEST - :columns: name as "testcase";result;fully_verifies;partially_verifies;test_type;derivation_technique;id as "link" -@@ -85,7 +85,7 @@ All passed Tests - Details About Testcases - ------------------------ - --.. needpie:: Test Types Used In Testcases -+.. needpie:: Persistency Test Types Used In Testcases - :labels: static-code-analysis, structural-statement-coverage, structural-branch-coverage, walkthrough, inspection, interface-test, requirements-based, resource-usage, control-flow-analysis, data-flow-analysis, fault-injection, struct-func-cov, struct-call-cov - :legend: - -@@ -104,7 +104,7 @@ Details About Testcases - type == 'testcase' and test_type == 'struct-call-cov' - - --.. needpie:: Derivation Techniques Used In Testcases -+.. needpie:: Persistency Derivation Techniques Used In Testcases - :labels: requirements-analysis, boundary-values, equivalence-classes, fuzz-testing, error-guessing, explorative-testing - :legend: - From 8b8110cafe6b76f9b7b153ceff6ba33f2f58571f Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Wed, 25 Feb 2026 10:54:03 +0100 Subject: [PATCH 40/55] Find newest release notes (#156) * bazel: remove redundant import bazelrc from home is included by default unless explicitly defined otherwise * docs: find newest release notes always newest release notes linked --- .bazelrc | 3 --- docs/index.rst | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.bazelrc b/.bazelrc index a47392fb22a..3ec25056a8a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -79,6 +79,3 @@ coverage --combined_report=lcov # user specific overrides (like proxy settings) try-import %workspace%/user.bazelrc - -# Try import setting from home (CI setup-bazel action for caching uses this to provide proper args like --disk-cache) -try-import ~/.bazelrc diff --git a/docs/index.rst b/docs/index.rst index fa9763883f7..188e48d8a8f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,9 +15,23 @@ Reference Integration Documentation =================================== -Newest Release Notes: :need:`doc__score_v06_release_note` +Newest Release Notes +-------------------- +.. needlist:: + import re + all_release_notes = [] + + for need in needs: + if "wp__platform_sw_release_note" in need["realizes"]: + all_release_notes.append(need) + + newest_release_note = max(all_release_notes, key=lambda s: int(re.search(r'v(\d+)', s["id"]).group(1))) + results = [newest_release_note] + +Explore the documentation +------------------------- .. toctree:: :caption: Software Components :titlesonly: From 74d9e9c6cfad5f04cbcd1f353f9b1411b37884e6 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Wed, 25 Feb 2026 14:54:51 +0100 Subject: [PATCH 41/55] Improve showcases (#159) * bazel: fix rust_analyzer support - update targets - add config * showcases: use kyron public examples * showcases: add graceful exit - apply formatting * showcases: add cli - parse selected showcases - `all` to run all showcases --- .../score_modules_target_sw.MODULE.bazel | 4 +- known_good.json | 4 +- scripts/generate_rust_analyzer_support.sh | 5 +- showcases/cli/BUILD | 1 + showcases/cli/main.rs | 135 ++++++++++++------ showcases/standalone/BUILD | 2 +- 6 files changed, 104 insertions(+), 47 deletions(-) diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 60c20fb8bf2..0f0460c45ae 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -54,14 +54,14 @@ bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", remote = "https://github.com/eclipse-score/orchestrator.git", - commit = "675007a2baa226fad1e2979ed732360dc111d056", + commit = "600fdd8186305ffbf495e4fc788195c077de79ac", ) bazel_dep(name = "score_kyron") git_override( module_name = "score_kyron", remote = "https://github.com/eclipse-score/kyron.git", - commit = "d4d0afc1dd733a0c8a4aba9cc2b2b3a58d38ebf6", + commit = "5acfb1a593ec65cf4f64424f581c6ddd04813ee7", ) bazel_dep(name = "score_lifecycle_health") diff --git a/known_good.json b/known_good.json index 7c89d188a67..ff7ab511493 100644 --- a/known_good.json +++ b/known_good.json @@ -64,7 +64,7 @@ }, "score_orchestrator": { "repo": "https://github.com/eclipse-score/orchestrator.git", - "hash": "675007a2baa226fad1e2979ed732360dc111d056", + "hash": "600fdd8186305ffbf495e4fc788195c077de79ac", "metadata": { "code_root_path": "//src/...", "langs": [ @@ -74,7 +74,7 @@ }, "score_kyron": { "repo": "https://github.com/eclipse-score/kyron.git", - "hash": "d4d0afc1dd733a0c8a4aba9cc2b2b3a58d38ebf6", + "hash": "5acfb1a593ec65cf4f64424f581c6ddd04813ee7", "metadata": { "code_root_path": "//src/...", "langs": [ diff --git a/scripts/generate_rust_analyzer_support.sh b/scripts/generate_rust_analyzer_support.sh index 23998bb4cec..de16c4b973f 100755 --- a/scripts/generate_rust_analyzer_support.sh +++ b/scripts/generate_rust_analyzer_support.sh @@ -3,4 +3,7 @@ set -e # Manual targets are not take into account, must be set explicitly -bazel run @rules_rust//tools/rust_analyzer:gen_rust_project -- "@//feature_showcase/..." "@//feature_integration_tests/rust_test_scenarios:rust_test_scenarios" \ No newline at end of file +bazel run @rules_rust//tools/rust_analyzer:gen_rust_project -- \ + "@//showcases/..." \ + "@//feature_integration_tests/test_scenarios/rust/..." \ + --config=linux-x86_64 diff --git a/showcases/cli/BUILD b/showcases/cli/BUILD index d94be0f2956..3a516cdd7c6 100644 --- a/showcases/cli/BUILD +++ b/showcases/cli/BUILD @@ -17,6 +17,7 @@ rust_binary( name = "cli", srcs = ["main.rs"], deps = [ + "@score_crates//:clap", "@score_crates//:cliclack", "@score_crates//:serde", "@score_crates//:serde_json", diff --git a/showcases/cli/main.rs b/showcases/cli/main.rs index d0ba283a54a..3b8fdc273b8 100644 --- a/showcases/cli/main.rs +++ b/showcases/cli/main.rs @@ -1,15 +1,21 @@ use anyhow::{Context, Result}; +use clap::Parser; use serde::Deserialize; -use std::{ - collections::HashMap, - env, fs, - path::Path, -}; +use std::{collections::HashMap, env, fs, path::Path}; -use cliclack::{clear_screen, intro, multiselect, outro, confirm}; -use std::time::Duration; -use std::process::Command; +use cliclack::{clear_screen, confirm, intro, multiselect, outro}; use std::process::Child; +use std::process::Command; +use std::time::Duration; + +#[derive(Parser)] +#[command(name = "SCORE CLI")] +#[command(about = "SCORE CLI showcase entrypoint", long_about = None)] +struct Args { + /// Examples to run (comma-separated names, or "all" to run all examples, skips interactive selection) + #[arg(long)] + examples: Option, +} #[derive(Debug, Deserialize, Clone)] struct AppConfig { @@ -30,7 +36,7 @@ struct ScoreConfig { fn print_banner() { let color_code = "\x1b[38;5;99m"; let reset_code = "\x1b[0m"; - + let banner = r#" ███████╗ ██████╗ ██████╗ ██████╗ ███████╗ ██╔════╝ ██╔════╝██╔═══██╗██╔══██╗██╔════╝ @@ -39,26 +45,25 @@ fn print_banner() { ███████║ ╚██████╗╚██████╔╝██║ ██║███████╗ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ "#; - + println!("{}{}{}", color_code, banner, reset_code); } fn pause_for_enter() -> Result<()> { - confirm("Press Enter to select examples to run...") + let result = confirm("Do you want to select examples to run?") .initial_value(true) .interact()?; + if !result { + outro("Falling back to the console. Goodbye!")?; + std::process::exit(0); + } Ok(()) } fn main() -> Result<()> { - print_banner(); - intro("WELCOME TO SHOWCASE ENTRYPOINT")?; - pause_for_enter()?; + let args = Args::parse(); - clear_screen()?; - - let root_dir = env::var("SCORE_CLI_INIT_DIR") - .unwrap_or_else(|_| "/showcases".to_string()); + let root_dir = env::var("SCORE_CLI_INIT_DIR").unwrap_or_else(|_| "/showcases".to_string()); let mut configs = Vec::new(); visit_dir(Path::new(&root_dir), &mut configs)?; @@ -67,50 +72,93 @@ fn main() -> Result<()> { anyhow::bail!("No *.score.json files found under {}", root_dir); } - // Create options for multiselect - let options: Vec<(usize, String, String)> = configs - .iter() - .enumerate() - .map(|(i, c)| (i, c.name.clone(), c.description.clone())) - .collect(); + let selected = if let Some(examples_str) = args.examples { + // Non-interactive mode: use provided examples + let mut selected_indices = Vec::new(); + + if examples_str.to_lowercase() == "all" { + // Select all available examples + selected_indices = (0..configs.len()).collect(); + println!("Running all {} examples", configs.len()); + } else { + // Match specific examples + let requested_examples: Vec<&str> = examples_str.split(',').map(|s| s.trim()).collect(); + + for (i, config) in configs.iter().enumerate() { + if requested_examples.contains(&config.name.as_str()) { + selected_indices.push(i); + } + } + + if selected_indices.is_empty() { + anyhow::bail!( + "No examples found matching: {}. Available examples: {}", + examples_str, + configs + .iter() + .map(|c| c.name.as_str()) + .collect::>() + .join(", ") + ); + } - let selected: Vec = multiselect("Select examples to run (use space to select (multiselect supported), enter to run examples):") - .items(&options) - .interact()?; + println!("Running examples: {}", examples_str); + } - if selected.is_empty() { - outro("No examples selected. Goodbye!")?; - return Ok(()); - } + selected_indices + } else { + // Interactive mode + print_banner(); + intro("WELCOME TO SHOWCASE ENTRYPOINT")?; + pause_for_enter()?; + + clear_screen()?; + + // Create options for multiselect + let options: Vec<(usize, String, String)> = configs + .iter() + .enumerate() + .map(|(i, c)| (i, c.name.clone(), c.description.clone())) + .collect(); + + let selected: Vec = multiselect("Select examples to run (use space to select (multiselect supported), enter to run examples):") + .items(&options) + .interact()?; + + if selected.is_empty() { + outro("No examples selected. Goodbye!")?; + return Ok(()); + } + + selected + }; for index in selected { run_score(&configs[index])?; } outro("All done!")?; - + Ok(()) } fn visit_dir(dir: &Path, configs: &mut Vec) -> Result<()> { - for entry in fs::read_dir(dir) - .with_context(|| format!("Failed to read directory {:?}", dir))? - { + for entry in fs::read_dir(dir).with_context(|| format!("Failed to read directory {:?}", dir))? { let entry = entry?; let path = entry.path(); - + if path.is_symlink() { continue; } - + if path.is_dir() { visit_dir(&path, configs)?; continue; } - + if is_score_file(&path) { - let content = fs::read_to_string(&path) - .with_context(|| format!("Failed reading {:?}", path))?; + let content = + fs::read_to_string(&path).with_context(|| format!("Failed reading {:?}", path))?; let value: serde_json::Value = serde_json::from_str(&content) .with_context(|| format!("Invalid JSON in {:?}", path))?; if value.is_array() { @@ -146,7 +194,12 @@ fn run_score(config: &ScoreConfig) -> Result<()> { if let Some(delay_secs) = app.delay { if delay_secs > 0 { - println!("{:?} App {}: waiting {} seconds before start...", now.elapsed(), i + 1, delay_secs); + println!( + "{:?} App {}: waiting {} seconds before start...", + now.elapsed(), + i + 1, + delay_secs + ); std::thread::sleep(Duration::from_secs(delay_secs)); } } diff --git a/showcases/standalone/BUILD b/showcases/standalone/BUILD index e19ef0efa0f..607aa68bcaa 100644 --- a/showcases/standalone/BUILD +++ b/showcases/standalone/BUILD @@ -16,7 +16,7 @@ score_pkg_bundle( score_pkg_bundle( name = "kyron", package_dir = "standalone", - bins = ["@score_kyron//src/kyron:select", "@score_kyron//src/kyron:safety_task", "@score_kyron//src/kyron:main_macro"], # TODO: kyron shall have public examples in examples folder + bins = ["@score_kyron//examples:select", "@score_kyron//examples:safety_task", "@score_kyron//examples:main_macro"], config_data = [ "//showcases/standalone:kyron.score.json", From cbdb2251e76c973cc8b6b2c7ff1674a0fceb60a9 Mon Sep 17 00:00:00 2001 From: Lukasz Tekieli Date: Thu, 26 Feb 2026 10:36:55 +0100 Subject: [PATCH 42/55] Bump ITF and adapt test cases (#158) - update test targets to use correct plugin specification - replace legacy target config with bridge config and update test args to --qemu-config / --qemu-image - switch ITF Bazel config from build: to test:itf-qnx-x86_64 and enable --test_output=errors - add showcase ITF test, remove obsolete persistency test, and align SSH tests to target.ssh() --- .bazelrc | 10 ++-- .../score_modules_tooling.MODULE.bazel | 2 +- feature_integration_tests/configs/BUILD | 2 +- .../configs/qemu_bridge_config.json | 12 +++++ .../configs/qemu_target_config.json | 30 ----------- feature_integration_tests/itf/BUILD | 13 +++-- .../itf/test_persistency.py | 38 ------------- .../{test_scrample.py => test_showcases.py} | 18 +++---- feature_integration_tests/itf/test_ssh.py | 25 +++++---- images/qnx_x86_64/BUILD | 54 ++++--------------- images/qnx_x86_64/configs/network_setup.sh | 3 +- images/qnx_x86_64/configs/startup.sh | 2 +- known_good.json | 4 +- runners/qemu_x86_64/scripts/BUILD | 2 +- 14 files changed, 62 insertions(+), 153 deletions(-) create mode 100644 feature_integration_tests/configs/qemu_bridge_config.json delete mode 100644 feature_integration_tests/configs/qemu_target_config.json delete mode 100644 feature_integration_tests/itf/test_persistency.py rename feature_integration_tests/itf/{test_scrample.py => test_showcases.py} (65%) diff --git a/.bazelrc b/.bazelrc index 3ec25056a8a..d2dd1d15646 100644 --- a/.bazelrc +++ b/.bazelrc @@ -33,12 +33,6 @@ build:qnx-x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp build:qnx-x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64 build:qnx-x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 -build:itf-qnx-x86_64 --config=qnx-x86_64 -build:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu -build:itf-qnx-x86_64 --test_arg="--qemu" -build:itf-qnx-x86_64 --test_arg="--os=qnx" - - build:linux-x86_64 --config=_common build:linux-x86_64 --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix build:linux-x86_64 --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix @@ -69,6 +63,10 @@ test:ferrocene-coverage --run_under=@score_tooling//coverage:llvm_profile_wrappe # Coverage needs to have all intermediate .rlibs to be able to proceed build:ferrocene-coverage --remote_download_all +test:itf-qnx-x86_64 --config=qnx-x86_64 +test:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu +test:itf-qnx-x86_64 --test_output=errors + test:unit-tests --config=linux-x86_64 test:unit-tests --build_tests_only test:unit-tests --test_tag_filters=-manual diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 91807743a17..3dd52913278 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -25,7 +25,7 @@ bazel_dep(name = "score_itf") git_override( module_name = "score_itf", remote = "https://github.com/eclipse-score/itf.git", - commit = "7c87a904ec54628f57a63af8b0c364db83b735cf", + commit = "1f4655af3daa85c03f91f584a3a9a1ea3ab54e62", ) bazel_dep(name = "score_tooling") diff --git a/feature_integration_tests/configs/BUILD b/feature_integration_tests/configs/BUILD index 49587392d54..6a7ef1fbbb4 100644 --- a/feature_integration_tests/configs/BUILD +++ b/feature_integration_tests/configs/BUILD @@ -12,7 +12,7 @@ # ******************************************************************************* exports_files( [ - "qemu_target_config.json", + "qemu_bridge_config.json", ], ) diff --git a/feature_integration_tests/configs/qemu_bridge_config.json b/feature_integration_tests/configs/qemu_bridge_config.json new file mode 100644 index 00000000000..3bef2b9c13e --- /dev/null +++ b/feature_integration_tests/configs/qemu_bridge_config.json @@ -0,0 +1,12 @@ +{ + "networks": [ + { + "name": "tap0", + "ip_address": "169.254.158.190", + "gateway": "169.254.21.88" + } + ], + "ssh_port": 22, + "qemu_num_cores": 2, + "qemu_ram_size": "1G" +} diff --git a/feature_integration_tests/configs/qemu_target_config.json b/feature_integration_tests/configs/qemu_target_config.json deleted file mode 100644 index e90afd90815..00000000000 --- a/feature_integration_tests/configs/qemu_target_config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "S_CORE_ECU_QEMU": { - "performance_processor": { - "name": "S_CORE_ECU_QEMU_PP", - "ip_address": "169.254.158.190", - "ext_ip_address": "169.254.158.190", - "ssh_port": 22, - "diagnostic_ip_address": "169.254.158.190", - "diagnostic_address": "0x91", - "serial_device": "", - "network_interfaces": [], - "ecu_name": "s_core_ecu_qemu_pp", - "data_router_config": { - "vlan_address": "127.0.0.1", - "multicast_addresses": [] - }, - "qemu_num_cores": 2, - "qemu_ram_size": "1G" - }, - "safety_processor": { - "name": "S_CORE_ECU_QEMU_SC", - "ip_address": "169.254.158.190", - "diagnostic_ip_address": "169.254.158.190", - "diagnostic_address": "0x90", - "serial_device": "", - "use_doip": true - }, - "other_processors": {} - } -} diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index c757563a0f7..73af43ccd6d 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -1,7 +1,10 @@ -exports_files( - [ +filegroup( + name = "all_tests", + srcs = [ + "test_showcases.py", "test_ssh.py", - "test_scrample.py", - "test_persistency.py", ], -) \ No newline at end of file + visibility = [ + "//images/qnx_x86_64:__pkg__", + ], +) diff --git a/feature_integration_tests/itf/test_persistency.py b/feature_integration_tests/itf/test_persistency.py deleted file mode 100644 index 96c16fc1654..00000000000 --- a/feature_integration_tests/itf/test_persistency.py +++ /dev/null @@ -1,38 +0,0 @@ -# ******************************************************************************* -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# ******************************************************************************* -from itf.plugins.com.ping import ping -from itf.plugins.com.ssh import execute_command_output -import logging - -logger = logging.getLogger(__name__) - - -def test_persistency_test_app_is_deployed(target_fixture): - with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, "test -f cpp_tests_persistency" - ) - assert exit_code == 0, "SSH command failed" - -def test_persistency_test_app_is_running(target_fixture): - with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, "./cpp_tests_persistency --name basic.basic --input '{\"kvs_parameters\":{\"instance_id\":0}}'", - timeout = 30, max_exec_time = 180, - logger_in = logger, verbose = True, - ) - - logger.info (stdout) - logger.info (stderr) - - assert exit_code == 0, "SSH command failed" diff --git a/feature_integration_tests/itf/test_scrample.py b/feature_integration_tests/itf/test_showcases.py similarity index 65% rename from feature_integration_tests/itf/test_scrample.py rename to feature_integration_tests/itf/test_showcases.py index 5acf1d9ef0c..89e6df8dc1d 100644 --- a/feature_integration_tests/itf/test_scrample.py +++ b/feature_integration_tests/itf/test_showcases.py @@ -10,24 +10,22 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -import logging -from itf.plugins.com.ssh import execute_command_output +import logging logger = logging.getLogger(__name__) -def test_scrample_app_is_deployed(target_fixture): - with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output(ssh, "test -f scrample") +def test_showcase_app_is_deployed(target): + with target.ssh() as ssh: + exit_code, stdout, stderr = ssh.execute_command_output("test -f /showcases/bin/ipc_bridge_cpp") assert exit_code == 0, "SSH command failed" -def test_scrample_app_is_running(target_fixture): - with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, - "./scrample -n 10 -t 100 -m send & ./scrample -n 5 -t 100 -m recv", +def test_showcase_app_is_running(target): + with target.ssh() as ssh: + exit_code, stdout, stderr = ssh.execute_command_output( + "cd /showcases/data/comm; /showcases/bin/ipc_bridge_cpp -n 10 -t 100 -m send & /showcases/bin/ipc_bridge_cpp -n 5 -t 100 -m recv", timeout=30, max_exec_time=180, logger_in=logger, diff --git a/feature_integration_tests/itf/test_ssh.py b/feature_integration_tests/itf/test_ssh.py index 6fe77281d61..f9c3ef170f7 100644 --- a/feature_integration_tests/itf/test_ssh.py +++ b/feature_integration_tests/itf/test_ssh.py @@ -10,14 +10,13 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -from itf.plugins.com.ping import ping -from itf.plugins.com.ssh import execute_command_output +# from itf.plugins.com.ping import ping -def test_ssh_with_default_user(target_fixture): - with target_fixture.sut.ssh() as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, "echo 'Username:' $USER && uname -a" +def test_ssh_with_default_user(target): + with target.ssh() as ssh: + exit_code, stdout, stderr = ssh.execute_command_output( + "echo 'Username:' $USER && uname -a" ) assert exit_code == 0, "SSH command failed" assert "Username: root" in stdout[0], "Expected username not found in output" @@ -27,11 +26,11 @@ def test_ssh_with_default_user(target_fixture): assert stderr == [], "Expected no error output" -def test_ssh_with_qnx_user(target_fixture): +def test_ssh_with_qnx_user(target): user = "qnxuser" - with target_fixture.sut.ssh(username=user) as ssh: - exit_code, stdout, stderr = execute_command_output( - ssh, "echo 'Username:' $USER && uname -a" + with target.ssh(username=user) as ssh: + exit_code, stdout, stderr = ssh.execute_command_output( + "echo 'Username:' $USER && uname -a" ) assert exit_code == 0, "SSH command failed" assert f"Username: {user}" in stdout[0], "Expected username not found in output" @@ -41,6 +40,6 @@ def test_ssh_with_qnx_user(target_fixture): assert stderr == [], "Expected no error output" -def test_ping_ok(target_fixture): - is_reachable = ping(target_fixture.sut.ip_address) - assert is_reachable, "QNX Target is not reachable via ping" +# def test_ping_ok(target_fixture): +# is_reachable = ping(target_fixture.sut.ip_address) +# assert is_reachable, "QNX Target is not reachable via ping" diff --git a/images/qnx_x86_64/BUILD b/images/qnx_x86_64/BUILD index 2ae1748607c..924e6d100ef 100644 --- a/images/qnx_x86_64/BUILD +++ b/images/qnx_x86_64/BUILD @@ -12,6 +12,7 @@ # ******************************************************************************* load("@rules_shell//shell:sh_binary.bzl", "sh_binary") load("@score_itf//:defs.bzl", "py_itf_test") +load("@score_itf//score/itf/plugins:plugins.bzl", "dlt", "qemu") alias( name = "image", @@ -36,58 +37,23 @@ sh_binary( # For now we keep this not in /feature_integration_tests but locally within images py_itf_test( - name = "test_ssh", + name = "test_qnx_8_x86_64", srcs = [ - "//feature_integration_tests/itf:test_ssh.py", + "//feature_integration_tests/itf:all_tests", ], args = [ - "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location :image)", - ], - plugins = [ - "itf.plugins.base.base_plugin", + "--qemu-config=$(location //feature_integration_tests/configs:qemu_bridge_config.json)", + "--qemu-image=$(location :image)", ], data = [ ":image", - "//feature_integration_tests/configs:qemu_target_config.json", - ], -) - -py_itf_test( - name = "test_scrample", - srcs = [ - "//feature_integration_tests/itf:test_scrample.py", - ], - args = [ - "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location :image)", + "//feature_integration_tests/configs:qemu_bridge_config.json", ], plugins = [ - "itf.plugins.base.base_plugin", - ], - data = [ - ":image", - "//feature_integration_tests/configs:qemu_target_config.json", + qemu, ], -) - -py_itf_test( - name = "test_persistency", - srcs = [ - "//feature_integration_tests/itf:test_persistency.py", - ], - args = [ - "--target_config=$(location //feature_integration_tests/configs:qemu_target_config.json)", - "--ecu=s_core_ecu_qemu", - "--qemu_image=$(location :image)", - ], - plugins = [ - "itf.plugins.base.base_plugin", - ], - data = [ - ":image", - "//feature_integration_tests/configs:qemu_target_config.json", + tags = [ + "local", + "manual", ], ) diff --git a/images/qnx_x86_64/configs/network_setup.sh b/images/qnx_x86_64/configs/network_setup.sh index b40af8b3e78..184a7c0a5ba 100644 --- a/images/qnx_x86_64/configs/network_setup.sh +++ b/images/qnx_x86_64/configs/network_setup.sh @@ -26,7 +26,8 @@ waitfor /dev/socket # Wait for socket device to become availa echo "---> Configuring network interface" # Bring up the interface and configure with bridge-accessible IP for direct ping if_up -p vtnet0 # Bring up the vtnet0 network interface in promiscuous mode -ifconfig vtnet0 10.0.2.15 netmask 255.255.255.0 # Configure IP address and subnet mask for vtnet0 +ifconfig vtnet0 10.0.2.15 netmask 255.255.255.0 # Configure IP address and subnet mask for vtnet0 +ifconfig vtnet0 169.254.158.190 netmask 255.255.0.0 # Configure IP address and subnet mask for vtnet0 # Configure system network settings sysctl -w net.inet.icmp.bmcastecho=1 > /dev/null # Enable ICMP broadcast echo (responds to broadcast pings) diff --git a/images/qnx_x86_64/configs/startup.sh b/images/qnx_x86_64/configs/startup.sh index 1127eaa4ad7..c4b9fd79bb4 100644 --- a/images/qnx_x86_64/configs/startup.sh +++ b/images/qnx_x86_64/configs/startup.sh @@ -59,7 +59,7 @@ devb-eide cam user=20:20 blk cache=64M,auto=partition,vnode=2000,ncache=2000,com waitfor /dev/hd0 # Wait for first hard disk to be detected echo "---> Configuring network" -# /etc/network_setup.sh # fixed IP setup --> commented out as dhcp is now in use +/etc/network_setup.sh # fixed IP setup mkdir -p /tmp_ram/var/run/dhcpcd mkdir -p /tmp_ram/var/db ln -sP /tmp_ram/var/db /var/db diff --git a/known_good.json b/known_good.json index ff7ab511493..ce01659879c 100644 --- a/known_good.json +++ b/known_good.json @@ -118,7 +118,7 @@ }, "score_itf": { "repo": "https://github.com/eclipse-score/itf.git", - "hash": "7c87a904ec54628f57a63af8b0c364db83b735cf" + "hash": "1f4655af3daa85c03f91f584a3a9a1ea3ab54e62" }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", @@ -150,4 +150,4 @@ } }, "timestamp": "2026-02-10T21:12:42+00:00Z" -} \ No newline at end of file +} diff --git a/runners/qemu_x86_64/scripts/BUILD b/runners/qemu_x86_64/scripts/BUILD index 1ba1d2b847b..44ff61c805e 100644 --- a/runners/qemu_x86_64/scripts/BUILD +++ b/runners/qemu_x86_64/scripts/BUILD @@ -1 +1 @@ -exports_files(["run_qemu.sh"]) \ No newline at end of file +exports_files(["run_qemu.sh"]) From c2a9843a715d42a2c7a9f687ace1eedab6e1576f Mon Sep 17 00:00:00 2001 From: Lukasz Tekieli Date: Thu, 26 Feb 2026 12:34:42 +0100 Subject: [PATCH 43/55] Add test for docker (#161) --- .bazelrc | 4 ++- .github/workflows/build_and_test_linux.yml | 5 ++- MODULE.bazel | 15 +++++++++ .../score_modules_tooling.MODULE.bazel | 2 +- feature_integration_tests/itf/BUILD | 21 ++++++++++++ .../itf/test_showcases.py | 32 +++++++++---------- feature_integration_tests/itf/test_ssh.py | 10 +++--- images/linux_x86_64/BUILD | 32 ++++++++++++++++++- known_good.json | 2 +- 9 files changed, 96 insertions(+), 27 deletions(-) diff --git a/.bazelrc b/.bazelrc index d2dd1d15646..d990313d0d9 100644 --- a/.bazelrc +++ b/.bazelrc @@ -63,9 +63,11 @@ test:ferrocene-coverage --run_under=@score_tooling//coverage:llvm_profile_wrappe # Coverage needs to have all intermediate .rlibs to be able to proceed build:ferrocene-coverage --remote_download_all +# Output only failed test logs +test --test_output=errors + test:itf-qnx-x86_64 --config=qnx-x86_64 test:itf-qnx-x86_64 --run_under=@score_itf//scripts:run_under_qemu -test:itf-qnx-x86_64 --test_output=errors test:unit-tests --config=linux-x86_64 test:unit-tests --build_tests_only diff --git a/.github/workflows/build_and_test_linux.yml b/.github/workflows/build_and_test_linux.yml index 09c98021126..0d1dc69b202 100644 --- a/.github/workflows/build_and_test_linux.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -33,6 +33,9 @@ jobs: - name: Checkout repository uses: actions/checkout@v4.2.2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.8.0 + - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 with: @@ -47,4 +50,4 @@ jobs: - name: Integration tests run: | - echo "NOT YET IMPLEMENTED" + bazel test --config=linux-x86_64 //feature_integration_tests/itf:linux_x86_64 diff --git a/MODULE.bazel b/MODULE.bazel index b6ea37b719d..bce23a99077 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -62,3 +62,18 @@ toolchains_qnx.sdp( ) use_repo(toolchains_qnx, "toolchains_qnx_sdp") use_repo(toolchains_qnx, "toolchains_qnx_ifs") + + +bazel_dep(name = "rules_oci", version = "1.8.0") + +oci = use_extension("@rules_oci//oci:extensions.bzl", "oci") + +oci.pull( + name = "ubuntu_22_04", + digest = "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", + image = "ubuntu", + platforms = ["linux/amd64"], + tag = "22.04", +) + +use_repo(oci, "ubuntu_22_04") diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 3dd52913278..9bc0caa9d83 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -25,7 +25,7 @@ bazel_dep(name = "score_itf") git_override( module_name = "score_itf", remote = "https://github.com/eclipse-score/itf.git", - commit = "1f4655af3daa85c03f91f584a3a9a1ea3ab54e62", + commit = "e1243f3818fd78b72f79741082016fd3d7c85329", ) bazel_dep(name = "score_tooling") diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index 73af43ccd6d..b91adfcb84e 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -1,3 +1,7 @@ +load("@score_itf//:defs.bzl", "py_itf_test") +load("@score_itf//score/itf/plugins:plugins.bzl", "docker") + + filegroup( name = "all_tests", srcs = [ @@ -8,3 +12,20 @@ filegroup( "//images/qnx_x86_64:__pkg__", ], ) + +py_itf_test( + name = "linux_x86_64", + srcs = [ + ":all_tests", + ], + args = [ + "--docker-image-bootstrap=$(location //images/linux_x86_64:docker_image_tarball)", + "--docker-image=score_showcases:latest", + ], + data = [ + "//images/linux_x86_64:docker_image_tarball", + ], + plugins = [ + docker, + ], +) diff --git a/feature_integration_tests/itf/test_showcases.py b/feature_integration_tests/itf/test_showcases.py index 89e6df8dc1d..1f925dbd167 100644 --- a/feature_integration_tests/itf/test_showcases.py +++ b/feature_integration_tests/itf/test_showcases.py @@ -13,26 +13,26 @@ import logging + logger = logging.getLogger(__name__) -def test_showcase_app_is_deployed(target): - with target.ssh() as ssh: - exit_code, stdout, stderr = ssh.execute_command_output("test -f /showcases/bin/ipc_bridge_cpp") - assert exit_code == 0, "SSH command failed" +def test_ipc_bridge_cpp_app_is_deployed(target): + exit_code, out = target.execute("test -f /showcases/bin/ipc_bridge_cpp") + assert exit_code == 0 -def test_showcase_app_is_running(target): - with target.ssh() as ssh: - exit_code, stdout, stderr = ssh.execute_command_output( - "cd /showcases/data/comm; /showcases/bin/ipc_bridge_cpp -n 10 -t 100 -m send & /showcases/bin/ipc_bridge_cpp -n 5 -t 100 -m recv", - timeout=30, - max_exec_time=180, - logger_in=logger, - verbose=True, - ) +def test_ipc_bridge_cpp_app_is_running(target): + exit_code, out = target.execute( + "cd /showcases/data/comm; /showcases/bin/ipc_bridge_cpp -n 10 -t 100 -m send & /showcases/bin/ipc_bridge_cpp -n 5 -t 100 -m recv" + ) + logger.info(out) + assert exit_code == 0 - logger.info(stdout) - logger.info(stderr) - assert exit_code == 0, "SSH command failed" +def test_run_all_showcases(target): + exit_code, out = target.execute( + "/showcases/bin/cli --examples=all" + ) + logger.info(out) + assert exit_code == 0 diff --git a/feature_integration_tests/itf/test_ssh.py b/feature_integration_tests/itf/test_ssh.py index f9c3ef170f7..d778393544b 100644 --- a/feature_integration_tests/itf/test_ssh.py +++ b/feature_integration_tests/itf/test_ssh.py @@ -10,9 +10,11 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -# from itf.plugins.com.ping import ping +import score.itf + +@score.itf.plugins.core.requires_capabilities("ssh") def test_ssh_with_default_user(target): with target.ssh() as ssh: exit_code, stdout, stderr = ssh.execute_command_output( @@ -26,6 +28,7 @@ def test_ssh_with_default_user(target): assert stderr == [], "Expected no error output" +@score.itf.plugins.core.requires_capabilities("ssh") def test_ssh_with_qnx_user(target): user = "qnxuser" with target.ssh(username=user) as ssh: @@ -38,8 +41,3 @@ def test_ssh_with_qnx_user(target): "Expected QNX kernel information not found in output" ) assert stderr == [], "Expected no error output" - - -# def test_ping_ok(target_fixture): -# is_reachable = ping(target_fixture.sut.ip_address) -# assert is_reachable, "QNX Target is not reachable via ping" diff --git a/images/linux_x86_64/BUILD b/images/linux_x86_64/BUILD index 89f762468cb..fc303826ce3 100644 --- a/images/linux_x86_64/BUILD +++ b/images/linux_x86_64/BUILD @@ -11,6 +11,8 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@rules_shell//shell:sh_binary.bzl", "sh_binary") +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") +load("@rules_pkg//pkg:tar.bzl", "pkg_tar") alias( name = "image", @@ -27,4 +29,32 @@ sh_binary( data = [ ":image", ], -) \ No newline at end of file +) + +pkg_tar( + name = "showcases_archive", + srcs = [ + "//showcases:showcases_all", + ], + symlinks = { + "showcases": "showcases_all", + } +) + +oci_image( + name = "docker_image", + base = "@ubuntu_22_04", + tars = [ + ":showcases_archive", + ], +) + +oci_tarball( + name = "docker_image_tarball", + image = ":docker_image", + repo_tags = ["score_showcases:latest"], + visibility = [ + "//feature_integration_tests/itf:__pkg__", + ], +) + diff --git a/known_good.json b/known_good.json index ce01659879c..4e64982df61 100644 --- a/known_good.json +++ b/known_good.json @@ -118,7 +118,7 @@ }, "score_itf": { "repo": "https://github.com/eclipse-score/itf.git", - "hash": "1f4655af3daa85c03f91f584a3a9a1ea3ab54e62" + "hash": "e1243f3818fd78b72f79741082016fd3d7c85329" }, "score_tooling": { "repo": "https://github.com/eclipse-score/tooling.git", From 23637b5ee73707fe797c1ba5a1945cd1ea0d2454 Mon Sep 17 00:00:00 2001 From: Lukasz Tekieli Date: Thu, 26 Feb 2026 13:35:17 +0100 Subject: [PATCH 44/55] Run QNX ITF tests (#162) --- .github/workflows/build_and_test_qnx.yml | 21 ++++++++++++++++++- feature_integration_tests/itf/BUILD | 26 +++++++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index e67e5e568c4..cc5bc39529e 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -57,6 +57,21 @@ jobs: sudo mkdir -p "${LICENSE_DIR}" echo "${SCORE_QNX_LICENSE}" | base64 --decode | sudo tee "${LICENSE_DIR}/licenses" >/dev/null + - name: Install qemu + run: | + sudo apt-get update + sudo apt-get install -y qemu-system + + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Allow unprivileged user namespaces + run: | + sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 + - name: Build with QNX toolchain env: SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} @@ -64,6 +79,10 @@ jobs: run: | bazel build --config qnx-x86_64 //images/qnx_x86_64:image + - name: Run integration tests + run: | + bazel test --config=itf-qnx-x86_64 //feature_integration_tests/itf:qnx_x86_64 + - name: Cleanup QNX license if: always() - run: sudo rm -rf /opt/score_qnx \ No newline at end of file + run: sudo rm -rf /opt/score_qnx diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index b91adfcb84e..0e4c65fb1b3 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -1,5 +1,5 @@ load("@score_itf//:defs.bzl", "py_itf_test") -load("@score_itf//score/itf/plugins:plugins.bzl", "docker") +load("@score_itf//score/itf/plugins:plugins.bzl", "docker", "qemu") filegroup( @@ -28,4 +28,28 @@ py_itf_test( plugins = [ docker, ], + tags = [ + "manual", + ], +) + +py_itf_test( + name = "qnx_x86_64", + srcs = [ + ":all_tests", + ], + args = [ + "--qemu-config=$(location //feature_integration_tests/configs:qemu_bridge_config.json)", + "--qemu-image=$(location //images/qnx_x86_64:image)", + ], + data = [ + "//feature_integration_tests/configs:qemu_bridge_config.json", + "//images/qnx_x86_64:image", + ], + plugins = [ + qemu, + ], + tags = [ + "manual", + ], ) From 55d8776f67fa8fecc39d1ae9fe0e753cac9ad653 Mon Sep 17 00:00:00 2001 From: Lukasz Tekieli Date: Fri, 27 Feb 2026 09:17:23 +0100 Subject: [PATCH 45/55] Remove old test target (#164) --- feature_integration_tests/itf/BUILD | 3 --- images/qnx_x86_64/BUILD | 26 -------------------------- 2 files changed, 29 deletions(-) diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index 0e4c65fb1b3..465800f86cb 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -8,9 +8,6 @@ filegroup( "test_showcases.py", "test_ssh.py", ], - visibility = [ - "//images/qnx_x86_64:__pkg__", - ], ) py_itf_test( diff --git a/images/qnx_x86_64/BUILD b/images/qnx_x86_64/BUILD index 924e6d100ef..b2694b26343 100644 --- a/images/qnx_x86_64/BUILD +++ b/images/qnx_x86_64/BUILD @@ -11,8 +11,6 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@rules_shell//shell:sh_binary.bzl", "sh_binary") -load("@score_itf//:defs.bzl", "py_itf_test") -load("@score_itf//score/itf/plugins:plugins.bzl", "dlt", "qemu") alias( name = "image", @@ -33,27 +31,3 @@ sh_binary( "@toolchains_qnx_sdp//:host_dir", ], ) - -# For now we keep this not in /feature_integration_tests but locally within images - -py_itf_test( - name = "test_qnx_8_x86_64", - srcs = [ - "//feature_integration_tests/itf:all_tests", - ], - args = [ - "--qemu-config=$(location //feature_integration_tests/configs:qemu_bridge_config.json)", - "--qemu-image=$(location :image)", - ], - data = [ - ":image", - "//feature_integration_tests/configs:qemu_bridge_config.json", - ], - plugins = [ - qemu, - ], - tags = [ - "local", - "manual", - ], -) From 004a565465f74368d0cc16e5d1c2de69969af7fb Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Fri, 27 Feb 2026 09:45:04 +0100 Subject: [PATCH 46/55] Make parsing know_good.json be more verbose on errors (#160) --- .github/workflows/known_good_correct.yml | 1 - scripts/known_good/models/known_good.py | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/known_good_correct.yml b/.github/workflows/known_good_correct.yml index 95ce6102988..03b65360034 100644 --- a/.github/workflows/known_good_correct.yml +++ b/.github/workflows/known_good_correct.yml @@ -31,7 +31,6 @@ jobs: uses: actions/checkout@v4.2.2 - name: Check run: | - ls -la scripts/known_good/update_module_from_known_good.py --known known_good.json --output-dir-modules bazel_common if git diff --quiet; then echo "No changes" diff --git a/scripts/known_good/models/known_good.py b/scripts/known_good/models/known_good.py index 788af688316..a0ea9766550 100644 --- a/scripts/known_good/models/known_good.py +++ b/scripts/known_good/models/known_good.py @@ -95,8 +95,24 @@ def load_known_good(path: Path) -> KnownGood: """ with open(path, "r", encoding="utf-8") as f: - data = json.load(f) - + text = f.read() + try: + data = json.loads(text) + except json.JSONDecodeError as e: + lines = text.splitlines() + line = lines[e.lineno - 1] if 0 <= e.lineno - 1 < len(lines) else "" + pointer = " " * (e.colno - 1) + "^" + + hint = "" + if "Expecting value" in e.msg: + hint = "Possible causes: trailing comma, missing value, or extra comma." + + raise ValueError( + f"Invalid JSON at line {e.lineno}, column {e.colno}\n" + f"{line}\n{pointer}\n" + f"{e.msg}. {hint}" + ) from None + if not isinstance(data, dict) or not isinstance(data.get("modules"), dict): raise ValueError( f"Invalid known_good.json at {path} (expected object with 'modules' dict)" From b8971b5a93e558606e325306c55ff3ec60898e18 Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Fri, 27 Feb 2026 15:27:52 +0100 Subject: [PATCH 47/55] Basic repo setup: formatting, copyrights (#163) * bazel: add starlark, formatting, copyright checks * format: apply for python * format: apply for rust * format: apply for bazel * format: apply for yaml * format: apply copyright headers * cicd: add format checks * update known_good script to match expected bazel formatting * format: empty line in the end for bash * cicd: use reusable format check --- .github/codeql/codeql-config.yml | 13 +- .github/codeql/coding-standards.yml | 12 + .github/tools/qnx_credential_helper.py | 6 +- .github/workflows/build_and_test_autosd.yml | 22 +- .github/workflows/build_and_test_ebclfsa.yml | 8 - .github/workflows/build_and_test_linux.yml | 55 ++-- .github/workflows/build_and_test_qnx.yml | 13 - .../workflows/codeql-multiple-repo-scan.yml | 230 ++++----------- .github/workflows/docs_cleanup.yml | 4 - .github/workflows/format.yml | 21 ++ .github/workflows/known_good_correct.yml | 4 - .../workflows/reusable_integration-build.yml | 18 +- .github/workflows/reusable_smoke-test.yml | 21 +- .github/workflows/test_and_docs.yml | 21 -- .github/workflows/test_integration.yml | 2 - .vscode/rustfmt.sh | 3 + .vscode/settings.json | 3 + BUILD | 36 +++ MODULE.bazel | 19 +- bazel_common/bundlers.bzl | 33 ++- bazel_common/score_basic_bazel.MODULE.bazel | 19 +- .../score_gcc_toolchains.MODULE.bazel | 27 +- .../score_modules_target_sw.MODULE.bazel | 20 +- .../score_modules_tooling.MODULE.bazel | 18 +- bazel_common/score_python.MODULE.bazel | 16 +- .../score_qnx_toolchains.MODULE.bazel | 15 +- .../score_rust_toolchains.MODULE.bazel | 18 +- feature_integration_tests/configs/BUILD | 2 +- feature_integration_tests/itf/BUILD | 13 +- .../itf/test_showcases.py | 4 +- feature_integration_tests/itf/test_ssh.py | 16 +- feature_integration_tests/test_cases/BUILD | 18 +- .../test_cases/conftest.py | 12 + .../test_cases/fit_scenario.py | 12 + .../test_cases/pytest.ini | 12 + .../test_cases/test_properties.py | 12 + .../test_orchestration_with_persistency.py | 12 + .../test_scenarios/rust/BUILD | 14 +- .../rust/src/internals/kyron/mod.rs | 6 +- .../src/internals/kyron/runtime_helper.rs | 36 +-- .../test_scenarios/rust/src/internals/mod.rs | 6 +- .../src/internals/persistency/kvs_instance.rs | 16 +- .../internals/persistency/kvs_parameters.rs | 12 + .../rust/src/internals/persistency/mod.rs | 12 + .../test_scenarios/rust/src/main.rs | 13 +- .../rust/src/scenarios/basic/mod.rs | 5 +- .../basic/orchestration_with_persistency.rs | 20 +- .../test_scenarios/rust/src/scenarios/mod.rs | 6 +- .../rust/src/scenarios/persistency/mod.rs | 5 +- .../persistency/multiple_kvs_per_app.rs | 26 +- images/autosd_x86_64/BUILD.bazel | 14 +- images/autosd_x86_64/build/image.aib.yml | 21 +- images/autosd_x86_64/build/vars-devel.yml | 1 - images/autosd_x86_64/build/vars.yml | 1 - images/ebclfsa_aarch64/BUILD | 12 + .../persistency_integration/BUILD | 24 +- .../persistency_integration/run_qemu.sh | 13 +- .../scripts/cpp_tests_persistency.sh | 12 + .../scrample_integration/BUILD | 28 +- .../scrample_integration/run_qemu.sh | 13 +- images/linux_x86_64/BUILD | 5 +- images/qnx_x86_64/build/BUILD | 35 ++- images/qnx_x86_64/configs/BUILD | 3 +- .../qnx_x86_64/configs/network_setup_dhcp.sh | 2 +- pyproject.toml | 98 +++++++ runners/docker_x86_64/scripts/BUILD | 14 +- runners/qemu_x86_64/BUILD | 1 - runners/qemu_x86_64/scripts/BUILD | 12 + rust_coverage/BUILD | 9 - scripts/__init__.py | 12 + scripts/generate_rust_analyzer_support.sh | 13 +- scripts/integration_test.py | 227 ++++++++------- scripts/known_good/__init__.py | 12 + .../known_good_to_workspace_metadata.py | 44 ++- scripts/known_good/models/__init__.py | 12 + scripts/known_good/models/known_good.py | 218 +++++++------- scripts/known_good/models/module.py | 16 +- .../known_good/override_known_good_repo.py | 114 ++++---- .../update_module_from_known_good.py | 71 +++-- scripts/known_good/update_module_latest.py | 268 ++++++++++-------- scripts/models/__init__.py | 12 + scripts/models/build_config.py | 29 +- scripts/publish_integration_summary.py | 12 + scripts/quality_runners.py | 42 ++- scripts/workflow/checkout_repos.sh | 47 +++ scripts/workflow/parse_repos.sh | 54 ++++ scripts/workflow/recategorize_guidelines.sh | 28 ++ showcases/BUILD | 5 +- showcases/cli/BUILD | 6 +- showcases/cli/main.rs | 40 +-- showcases/orchestration_persistency/BUILD | 7 +- showcases/orchestration_persistency/main.rs | 85 ++---- showcases/simple_lifecycle/BUILD | 44 ++- showcases/simple_lifecycle/configs/BUILD | 16 +- .../simple_lifecycle/lifecycle_signal.sh | 12 + showcases/standalone/BUILD | 30 +- 96 files changed, 1623 insertions(+), 1138 deletions(-) create mode 100644 .github/workflows/format.yml create mode 100755 .vscode/rustfmt.sh create mode 100644 pyproject.toml create mode 100755 scripts/workflow/checkout_repos.sh create mode 100755 scripts/workflow/parse_repos.sh create mode 100755 scripts/workflow/recategorize_guidelines.sh diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index bfe715cbcf6..88d151e9ae3 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -1,5 +1,16 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* name: "Custom CodeQL Configuration for MISRA" - paths: - repos paths-ignore: diff --git a/.github/codeql/coding-standards.yml b/.github/codeql/coding-standards.yml index 8675280ae03..14d249f95f5 100644 --- a/.github/codeql/coding-standards.yml +++ b/.github/codeql/coding-standards.yml @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* deviations: [] guideline-recategorizations: [] deviation-permits: [] diff --git a/.github/tools/qnx_credential_helper.py b/.github/tools/qnx_credential_helper.py index 06ae795160a..ed2673ee13e 100755 --- a/.github/tools/qnx_credential_helper.py +++ b/.github/tools/qnx_credential_helper.py @@ -49,9 +49,7 @@ def eprint(*args, **kwargs): eprint("Failed getting credentials from .netrc") sys.exit(1) - data = urllib.parse.urlencode( - {"userlogin": login, "password": password, "UseCookie": "1"} - ) + data = urllib.parse.urlencode({"userlogin": login, "password": password, "UseCookie": "1"}) data = data.encode("ascii") cookie_jar = http.cookiejar.CookieJar() @@ -65,7 +63,7 @@ def eprint(*args, **kwargs): sys.exit(1) cookies = {c.name: c.value for c in list(cookie_jar)} - if not "myQNX" in cookies: + if "myQNX" not in cookies: eprint("Failed to get myQNX cookie from login page") sys.exit(1) diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 9ba9f347cad..9bcead89ded 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -10,32 +10,24 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: AutoSD - Build & Integration Test - on: pull_request: types: [opened, reopened, synchronize] - merge_group: types: [checks_requested] - push: branches: - main - jobs: build: name: x86_64 runs-on: ubuntu-latest - steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 - - name: Checkout repository uses: actions/checkout@v4 - - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 with: @@ -43,36 +35,31 @@ jobs: disk-cache: ${{ github.workflow }} repository-cache: true cache-save: ${{ github.event_name == 'push' }} - - name: Install System Dependencies run: | sudo apt-get update -y sudo apt-get install -y podman curl qemu-system createrepo-c - - name: Build Showcases run: | bazel build --config autosd-x86_64 //images/autosd_x86_64:image working-directory: ./images/autosd_x86_64 - - name: Copy showcases_all folder run: | set -e mkdir -p ./images/autosd_x86_64/build/rpms cp -R bazel-bin/showcases/showcases_all ./images/autosd_x86_64/build/files/ - - name: Install AIB Tools run: | curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads" chmod +x auto-image-builder.sh working-directory: ./images/autosd_x86_64/build - - name: Build AutoSD QEMU (x86_64) run: | export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage mkdir -p _build/containers-storage sudo -E ./auto-image-builder.sh build-builder --distro=autosd10-sig - + sudo -E ./auto-image-builder.sh build \ --distro=autosd10-sig \ --target=qemu \ @@ -85,26 +72,23 @@ jobs: sudo chown $(id -u):$(id -u) _build/disk.qcow2 working-directory: ./images/autosd_x86_64/build - - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - - name: Test QEMU image run: | sshcmd() { sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 root@localhost $@ } - + ./scripts/run_qemu - + sshcmd 'cat /etc/os-release' working-directory: ./images/autosd_x86_64/build env: SSH_PASSWORD: password - - name: Archive QEMU disk image (x86_64) uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index 46c7f986618..d03c4cadedb 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -10,15 +10,12 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: EB corbos Linux for Safety Applications - Build & Integration Test - on: pull_request: types: [opened, reopened, synchronize] merge_group: types: [checks_requested] - push: branches: - main @@ -28,14 +25,11 @@ jobs: runs-on: ubuntu-latest container: image: ghcr.io/eclipse-score/devcontainer:v1.1.0 - steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 - - name: Checkout repository uses: actions/checkout@v4 - - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 with: @@ -43,11 +37,9 @@ jobs: disk-cache: ${{ github.workflow }} repository-cache: true cache-save: ${{ github.event_name == 'push' }} - - name: Build for EB corbos Linux for Safety Applications and run tests run: | bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run - - name: Upload test logs uses: actions/upload-artifact@v5 with: diff --git a/.github/workflows/build_and_test_linux.yml b/.github/workflows/build_and_test_linux.yml index 0d1dc69b202..583b0b402ca 100644 --- a/.github/workflows/build_and_test_linux.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -10,7 +10,6 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: Linux - Build & Integration Test on: workflow_dispatch: @@ -21,33 +20,27 @@ on: branches: - main jobs: - x86_64: - runs-on: ubuntu-latest - permissions: - contents: write # required to upload release assets - - steps: - - name: Clean disk space - uses: eclipse-score/more-disk-space@v1 - - - name: Checkout repository - uses: actions/checkout@v4.2.2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3.8.0 - - - name: Setup Bazel - uses: bazel-contrib/setup-bazel@0.18.0 - with: - bazelisk-cache: true - disk-cache: ${{ github.workflow }} - repository-cache: true - cache-save: ${{ github.event_name == 'push' }} - - - name: Build image - run: | - bazel build --config=linux-x86_64 //images/linux_x86_64:image - - - name: Integration tests - run: | - bazel test --config=linux-x86_64 //feature_integration_tests/itf:linux_x86_64 + x86_64: + runs-on: ubuntu-latest + permissions: + contents: write # required to upload release assets + steps: + - name: Clean disk space + uses: eclipse-score/more-disk-space@v1 + - name: Checkout repository + uses: actions/checkout@v4.2.2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.8.0 + - name: Setup Bazel + uses: bazel-contrib/setup-bazel@0.18.0 + with: + bazelisk-cache: true + disk-cache: ${{ github.workflow }} + repository-cache: true + cache-save: ${{ github.event_name == 'push' }} + - name: Build image + run: | + bazel build --config=linux-x86_64 //images/linux_x86_64:image + - name: Integration tests + run: | + bazel test --config=linux-x86_64 //feature_integration_tests/itf:linux_x86_64 diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index cc5bc39529e..7810829f672 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -10,19 +10,15 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: QNX8 - Build & Integration Test on: pull_request_target: types: [opened, reopened, synchronize] - merge_group: types: [checks_requested] - push: branches: - main - jobs: qnx-build-x86_64: name: x86_64 @@ -31,14 +27,12 @@ jobs: permissions: contents: read pull-requests: read - steps: - name: Checkout repository (Handle all events) uses: actions/checkout@v4.2.2 with: ref: ${{ github.head_ref || github.event.pull_request.head.ref || github.ref }} repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - - name: Setup Bazel with shared caching uses: bazel-contrib/setup-bazel@0.18.0 with: @@ -46,7 +40,6 @@ jobs: repository-cache: true bazelisk-cache: true cache-save: ${{ github.event_name == 'push' }} - - name: Prepare QNX license env: SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }} @@ -56,33 +49,27 @@ jobs: LICENSE_DIR="/opt/score_qnx/license" sudo mkdir -p "${LICENSE_DIR}" echo "${SCORE_QNX_LICENSE}" | base64 --decode | sudo tee "${LICENSE_DIR}/licenses" >/dev/null - - name: Install qemu run: | sudo apt-get update sudo apt-get install -y qemu-system - - name: Enable KVM group perms run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - - name: Allow unprivileged user namespaces run: | sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 - - name: Build with QNX toolchain env: SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} SCORE_QNX_PASSWORD: ${{ secrets.SCORE_QNX_PASSWORD }} run: | bazel build --config qnx-x86_64 //images/qnx_x86_64:image - - name: Run integration tests run: | bazel test --config=itf-qnx-x86_64 //feature_integration_tests/itf:qnx_x86_64 - - name: Cleanup QNX license if: always() run: sudo rm -rf /opt/score_qnx diff --git a/.github/workflows/codeql-multiple-repo-scan.yml b/.github/workflows/codeql-multiple-repo-scan.yml index d8b3ed23866..13c27a83d9d 100644 --- a/.github/workflows/codeql-multiple-repo-scan.yml +++ b/.github/workflows/codeql-multiple-repo-scan.yml @@ -10,9 +10,7 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: "CodeQL - Multi-Repo Source Scan" - on: pull_request: types: [opened, reopened, synchronize] @@ -23,11 +21,9 @@ on: - main release: types: [created] - workflow_dispatch: - + workflow_dispatch: permissions: contents: write - jobs: analyze-repos: name: Analyze Multiple Repositories @@ -37,176 +33,56 @@ jobs: packages: read actions: read contents: read - steps: - - name: Checkout central repository - uses: actions/checkout@v4 - - - name: Checkout CodeQL Coding Standards scripts - uses: actions/checkout@v4 - with: - repository: github/codeql-coding-standards - path: codeql-coding-standards-repo # Klonen in diesen Ordner - ref: main # Oder eine spezifische Release-Version, z.B. 'v2.53.0-dev' - - # Add coding standard packages and dependencies - - name: Install Python dependencies for Coding Standards scripts - run: | - python3 -m pip install --upgrade pip - pip3 install pyyaml jsonpath-ng jsonschema jsonpatch jsonpointer pytest sarif-tools - - - name: Parse known_good.json and create repos.json - id: parse-repos - run: | - sudo apt-get update && sudo apt-get install -y jq - JSON_FILE="./known_good.json" - - # Check if the file exists - if [ ! -f "$JSON_FILE" ]; then - echo "Error file not found '$JSON_FILE' " - ls -la . - exit 1 - fi - - # Create repos.json from known_good.json - # This jq command transforms the 'modules' object into an array of repository objects - # with 'name', 'url', 'version' (branch/tag/hash), and 'path'. - jq '[.modules.target_sw | to_entries[] | { - name: .key, - url: .value.repo, - version: (.value.branch // .value.hash // .value.version), - path: ("repos/" + .key) - }]' "$JSON_FILE" > repos.json - - echo "Generated repos.json:" - cat repos.json - echo "" # Add a newline for better readability - - # The following GITHUB_OUTPUT variables are set for each module. - # These might be useful for other steps, but are not directly used by the 'checkout-repos' step - # which now reads 'repos.json' directly. - echo "MODULE_COUNT=$(jq '.modules.target_sw | length' "$JSON_FILE")" >> $GITHUB_OUTPUT - - jq -c '.modules.target_sw | to_entries[]' "$JSON_FILE" | while read -r module_entry; do - module_name=$(echo "$module_entry" | jq -r '.key') - repo_url=$(echo "$module_entry" | jq -r '.value.repo // empty') - version=$(echo "$module_entry" | jq -r '.value.version // empty') - branch=$(echo "$module_entry" | jq -r '.value.branch // empty') - hash=$(echo "$module_entry" | jq -r '.value.hash // empty') - - echo "${module_name}_url=$repo_url" >> $GITHUB_OUTPUT - - if [ -n "$version" ]; then - echo "${module_name}_version=$version" >> $GITHUB_OUTPUT - fi - - if [ -n "$branch" ]; then - echo "${module_name}_branch=$branch" >> $GITHUB_OUTPUT - fi - - if [ -n "$hash" ]; then - echo "${module_name}_hash=$hash" >> $GITHUB_OUTPUT - fi - done - - - name: Checkout all pinned repositories - id: checkout-repos - run: | - # jq is already installed by the previous step. - - # Read repositories from the repos.json file created by the previous step - repos=$(cat repos.json) - repo_count=$(echo "$repos" | jq length) - - # Initialize an empty string for paths to be outputted - repo_paths_output="" - - for i in $(seq 0 $((repo_count-1))); do - name=$(echo "$repos" | jq -r ".[$i].name") - url=$(echo "$repos" | jq -r ".[$i].url") - ref=$(echo "$repos" | jq -r ".[$i].version") # This can be a branch, tag, or commit hash - path=$(echo "$repos" | jq -r ".[$i].path") # e.g., "repos/score_baselibs" - - echo "Checking out $name ($ref) to $path" - - # Create the parent directory if it doesn't exist - mkdir -p "$(dirname "$path")" - - # Check if 'ref' looks like a commit hash (e.g., 40 hex characters) - # This is a heuristic; a more robust check might involve fetching refs first. - if [[ "$ref" =~ ^[0-9a-fA-F]{40}$ ]]; then - echo " Detected commit hash. Cloning and then checking out." - git clone "$url" "$path" - (cd "$path" && git checkout "$ref") - else - echo " Detected branch/tag. Cloning with --branch." - git clone --depth 1 --branch v"$ref" "$url" "$path" - fi - - # Append the path to the list, separated by commas - if [ -z "$repo_paths_output" ]; then - repo_paths_output="$path" - else - repo_paths_output="$repo_paths_output,$path" - fi - done - - # Output all paths as a single variable - echo "repo_paths=$repo_paths_output" >> $GITHUB_OUTPUT - - - name: Initialize CodeQL for all repositories - uses: github/codeql-action/init@v4 - with: - languages: cpp - build-mode: none - packs: codeql/misra-cpp-coding-standards - config-file: ./.github/codeql/codeql-config.yml - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 - with: - upload-database: false # Don't upload databases for each repo - output: sarif-results/ - category: "multi-repo-scan" - - - name: Recategorize Guidelines - if: always() - run: | - RECATEGORIZE_SCRIPT="codeql-coding-standards-repo/scripts/guideline_recategorization/recategorize.py" - CODING_STANDARDS_CONFIG="./.github/codeql/coding-standards.yml" - - CODING_STANDARDS_SCHEMA="codeql-coding-standards-repo/schemas/coding-standards-schema-1.0.0.json" - SARIF_SCHEMA="codeql-coding-standards-repo/schemas/sarif-schema-2.1.0.json" - - - SARIF_FILE="sarif-results/cpp.sarif" - - mkdir -p sarif-results-recategorized - echo "Processing $SARIF_FILE for recategorization..." - python3 "$RECATEGORIZE_SCRIPT" \ - --coding-standards-schema-file "$CODING_STANDARDS_SCHEMA" \ - --sarif-schema-file "$SARIF_SCHEMA" \ - "$CODING_STANDARDS_CONFIG" \ - "$SARIF_FILE" \ - "sarif-results-recategorized/$(basename "$SARIF_FILE")" - - rm "$SARIF_FILE" - mv "sarif-results-recategorized/$(basename "$SARIF_FILE")" "$SARIF_FILE" - - - name: Generate HTML Report from SARIF - run: | - SARIF_FILE="sarif-results/cpp.sarif" - sarif html "$SARIF_FILE" --output codeql-report.html - - - name: Upload SARIF results as artifact - uses: actions/upload-artifact@v4 - with: - name: codeql-sarif-results - path: sarif-results/ - - - - name: Upload HTML Report as artifact - uses: actions/upload-artifact@v4 - with: - name: codeql-html-report - path: codeql-report.html + - name: Checkout central repository + uses: actions/checkout@v4 + - name: Checkout CodeQL Coding Standards scripts + uses: actions/checkout@v4 + with: + repository: github/codeql-coding-standards + path: codeql-coding-standards-repo # Klonen in diesen Ordner + ref: main # Oder eine spezifische Release-Version, z.B. 'v2.53.0-dev' + # Add coding standard packages and dependencies + - name: Install Python dependencies for Coding Standards scripts + run: | + python3 -m pip install --upgrade pip + pip3 install pyyaml jsonpath-ng jsonschema jsonpatch jsonpointer pytest sarif-tools + - name: Parse known_good.json and create repos.json + id: parse-repos + run: | + scripts/workflow/parse_repos.sh + - name: Checkout all pinned repositories + id: checkout-repos + run: | + scripts/workflow/checkout_repos.sh + - name: Initialize CodeQL for all repositories + uses: github/codeql-action/init@v4 + with: + languages: cpp + build-mode: none + packs: codeql/misra-cpp-coding-standards + config-file: ./.github/codeql/codeql-config.yml + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v4 + with: + upload-database: false # Don't upload databases for each repo + output: sarif-results/ + category: "multi-repo-scan" + - name: Recategorize Guidelines + if: always() + run: | + scripts/workflow/recategorize_guidelines.sh + - name: Generate HTML Report from SARIF + run: | + SARIF_FILE="sarif-results/cpp.sarif" + sarif html "$SARIF_FILE" --output codeql-report.html + - name: Upload SARIF results as artifact + uses: actions/upload-artifact@v4 + with: + name: codeql-sarif-results + path: sarif-results/ + - name: Upload HTML Report as artifact + uses: actions/upload-artifact@v4 + with: + name: codeql-html-report + path: codeql-report.html diff --git a/.github/workflows/docs_cleanup.yml b/.github/workflows/docs_cleanup.yml index cfa4ae24449..d845653f7bf 100644 --- a/.github/workflows/docs_cleanup.yml +++ b/.github/workflows/docs_cleanup.yml @@ -10,18 +10,14 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: Documentation Cleanup - permissions: contents: write pages: write id-token: write - on: schedule: - cron: '0 0 * * *' # Runs every day at midnight UTC - jobs: docs-cleanup: uses: eclipse-score/cicd-workflows/.github/workflows/docs-cleanup.yml@main diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml new file mode 100644 index 00000000000..6664722abd5 --- /dev/null +++ b/.github/workflows/format.yml @@ -0,0 +1,21 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Formatting checks +on: + pull_request: + types: [opened, reopened, synchronize] + merge_group: + types: [checks_requested] +jobs: + formatting-check: + uses: eclipse-score/cicd-workflows/.github/workflows/format.yml@main diff --git a/.github/workflows/known_good_correct.yml b/.github/workflows/known_good_correct.yml index 03b65360034..094db421b30 100644 --- a/.github/workflows/known_good_correct.yml +++ b/.github/workflows/known_good_correct.yml @@ -10,18 +10,14 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: Known Good Matches Bazel - on: pull_request: types: [opened, reopened, synchronize] merge_group: types: [checks_requested] - permissions: contents: write - jobs: check-known-good-matches-bazel: name: Check Known Good Matches with Bazel diff --git a/.github/workflows/reusable_integration-build.yml b/.github/workflows/reusable_integration-build.yml index e0d8ba682cb..c3811fb34d1 100644 --- a/.github/workflows/reusable_integration-build.yml +++ b/.github/workflows/reusable_integration-build.yml @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Module Integration Build Workflow # # Summary: @@ -49,7 +61,6 @@ # REPO_READ_TOKEN: ${{ secrets.REPO_READ_TOKEN }} # name: Module Integration Build - on: workflow_call: secrets: @@ -75,10 +86,8 @@ on: required: false type: string default: 'main' - env: REFERENCE_INTEGRATION_REPO: ${{ vars.REFERENCE_INTEGRATION_REPO != '' && vars.REFERENCE_INTEGRATION_REPO || 'eclipse-score/reference_integration' }} - jobs: integration-test: name: Integration Test @@ -86,7 +95,6 @@ jobs: steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 - - name: Checkout repository uses: actions/checkout@v4.2.2 with: @@ -111,7 +119,7 @@ jobs: EOF cat known_good.updated.json echo "::endgroup::" - + echo "::group::update score_modules.MODULE.bazel" python3 scripts/known_good/update_module_from_known_good.py --known known_good.updated.json --output-dir bazel_common/ cat bazel_common/score_modules.MODULE.bazel diff --git a/.github/workflows/reusable_smoke-test.yml b/.github/workflows/reusable_smoke-test.yml index ec9b7ac8c22..afc095df06d 100644 --- a/.github/workflows/reusable_smoke-test.yml +++ b/.github/workflows/reusable_smoke-test.yml @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Module Smoke Test Workflow # # Summary: @@ -49,9 +61,7 @@ # # Notes: # - Extend the matrix in `integration-test` to cover additional configs. - name: Module Smoke Test - on: workflow_call: inputs: @@ -73,10 +83,8 @@ on: REPO_READ_TOKEN: description: 'Token for reading repositories' required: false - env: REFERENCE_INTEGRATION_REPO: ${{ vars.reference_integration_repo != '' && vars.reference_integration_repo || 'eclipse-score/reference_integration' }} - jobs: preparation: name: Preparation @@ -106,7 +114,7 @@ jobs: cat known_good.updated.json echo "::endgroup::" fi - + # Output the content as a JSON string echo "known_good_updated<> $GITHUB_OUTPUT cat known_good.updated.json >> $GITHUB_OUTPUT @@ -122,7 +130,6 @@ jobs: with: name: known_good.updated.json path: known_good.updated.json - docs: name: Generate Documentation runs-on: ubuntu-latest @@ -130,7 +137,6 @@ jobs: steps: - name: not implemented run: echo "Documentation generation not yet implemented here." - integration-test: name: Integration Testing (${{ matrix.config }}) needs: preparation @@ -150,7 +156,6 @@ jobs: config: ${{ matrix.config }} repo_runner_labels: ${{ inputs.repo_runner_labels }} target_branch: ${{ inputs.target_branch }} - summary: name: Publish Summary runs-on: ubuntu-latest diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index fde8aceb6ee..4d7a03e2fd1 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -10,15 +10,12 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - name: Code Quality & Documentation - permissions: contents: write pages: write pull-requests: write id-token: write - on: pull_request_target: # Allows forks to trigger the docs build types: [opened, reopened, synchronize] @@ -29,18 +26,15 @@ on: types: [checks_requested] release: types: [created] - jobs: test_and_docs: runs-on: ubuntu-22.04 permissions: contents: write # required to upload release assets pull-requests: write - steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 - - name: Setup Bazel uses: bazel-contrib/setup-bazel@0.18.0 with: @@ -48,32 +42,26 @@ jobs: disk-cache: ${{ github.workflow }} repository-cache: true cache-save: ${{ github.event_name == 'push' }} - - name: Set up Python 3 uses: actions/setup-python@v5 with: python-version: '3.12' - - name: Install lcov run: | sudo apt-get update sudo apt-get install -y lcov - - name: Checkout repository (pull_request_target via workflow_call) if: ${{ github.event_name == 'pull_request_target' }} uses: actions/checkout@v4 with: ref: ${{ github.head_ref || github.event.pull_request.head.ref || github.ref }} repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - - name: Checkout repository if: ${{ github.event_name != 'pull_request_target' }} uses: actions/checkout@v4 - - name: Execute Unit Tests with Coverage Analysis run: | python ./scripts/quality_runners.py - - name: Publish build summary if: always() run: | @@ -88,7 +76,6 @@ jobs: else echo "No coverage summary file found (docs/verification/coverage_summary.md)" >> "$GITHUB_STEP_SUMMARY" fi - - name: Create archive of test reports if: github.ref_type == 'tag' run: | @@ -97,7 +84,6 @@ jobs: cp -r "$(bazel info bazel-bin)/coverage/rust-tests" artifacts/rust zip -r ${{ github.event.repository.name }}_test_reports.zip artifacts/ shell: bash - - name: Upload release asset (attach ZIP to GitHub Release) uses: softprops/action-gh-release@v2.5.0 if: github.ref_type == 'tag' @@ -105,13 +91,11 @@ jobs: files: ${{ github.event.repository.name }}_test_reports.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Install Graphviz uses: eclipse-score/apt-install@main with: packages: graphviz cache: false - - name: Build documentation run: | bazel --output_base="/home/runner/.cache/bazel/output_base" run \ @@ -123,7 +107,6 @@ jobs: --github_repo=${{ github.event.repository.name }} tar -cf github-pages.tar _build - - name: Upload documentation artifact uses: actions/upload-artifact@v4.4.0 with: @@ -131,7 +114,6 @@ jobs: path: github-pages.tar retention-days: 3 if-no-files-found: error - docs-deploy: name: Deploy Documentation to GitHub Pages runs-on: ${{ vars.REPO_RUNNER_LABELS && fromJSON(vars.REPO_RUNNER_LABELS) || 'ubuntu-latest' }} @@ -196,15 +178,12 @@ jobs: fi - name: Checkout repository uses: actions/checkout@v4.2.2 - - name: Download documentation artifact uses: actions/download-artifact@v4.1.8 with: name: github-pages-${{ github.event.pull_request.head.sha || github.sha }} - - name: Untar documentation artifact run: mkdir -p extracted_docs && tar -xf github-pages.tar -C extracted_docs - - name: Deploy 🚀 id: pages-deployment uses: eclipse-score/cicd-workflows/.github/actions/deploy-versioned-pages@main diff --git a/.github/workflows/test_integration.yml b/.github/workflows/test_integration.yml index 96850ed2d2c..34a961e529f 100644 --- a/.github/workflows/test_integration.yml +++ b/.github/workflows/test_integration.yml @@ -10,10 +10,8 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - # Workflow configuration for S-CORE CI - Bazel Build & Test baselibs # This workflow runs Bazel build and test when triggered by specific pull request events. - name: build latest mains on: workflow_dispatch: diff --git a/.vscode/rustfmt.sh b/.vscode/rustfmt.sh new file mode 100755 index 00000000000..b0481d52a7b --- /dev/null +++ b/.vscode/rustfmt.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +bazel run @score_tooling//format_checker:rustfmt_with_policies diff --git a/.vscode/settings.json b/.vscode/settings.json index c64d045842c..63fd2983291 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,9 @@ "rust-analyzer.linkedProjects": [ "rust-project.json" ], + "rust-analyzer.rustfmt.overrideCommand": [ + "${workspaceFolder}/.vscode/rustfmt.sh" + ], "python.testing.pytestArgs": [ "feature_integration_tests" ], diff --git a/BUILD b/BUILD index e54b90d0e01..12c556345e6 100644 --- a/BUILD +++ b/BUILD @@ -12,7 +12,9 @@ # ******************************************************************************* load("@score_docs_as_code//:docs.bzl", "docs") +load("@score_tooling//:defs.bzl", "copyright_checker", "setup_starpls", "use_format_targets") +# Docs-as-code docs( data = [ # Software components @@ -32,3 +34,37 @@ docs( ], source_dir = "docs", ) + +# Bazel formatting +setup_starpls( + name = "starpls_server", + visibility = ["//visibility:public"], +) + +# Copyright check +copyright_checker( + name = "copyright", + srcs = [ + ".github", + "bazel_common", + "docs", + "feature_integration_tests", + "images", + "runners", + "rust_coverage", + "scripts", + "showcases", + "//:BUILD", + "//:MODULE.bazel", + ], + config = "@score_tooling//cr_checker/resources:config", + template = "@score_tooling//cr_checker/resources:templates", + visibility = ["//visibility:public"], +) + +# Add target for formatting checks +use_format_targets() + +exports_files([ + "MODULE.bazel", +]) diff --git a/MODULE.bazel b/MODULE.bazel index bce23a99077..1c218423420 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -20,13 +20,13 @@ module( include("//bazel_common:score_basic_bazel.MODULE.bazel") # GCC toolchains -include ("//bazel_common:score_gcc_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain +include("//bazel_common:score_gcc_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain # GCC toolchains -include ("//bazel_common:score_qnx_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain +include("//bazel_common:score_qnx_toolchains.MODULE.bazel") # WIP: Not used yet as have problems with IFS toolchain # Rust toolchains -include ("//bazel_common:score_rust_toolchains.MODULE.bazel") +include("//bazel_common:score_rust_toolchains.MODULE.bazel") # Python support include("//bazel_common:score_python.MODULE.bazel") @@ -40,10 +40,15 @@ include("//bazel_common:score_modules_target_sw.MODULE.bazel") bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") archive_override( module_name = "rules_boost", - urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], strip_prefix = "rules_boost-master", + urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"], ) +# Implicit dependencies for score_tooling +bazel_dep(name = "aspect_rules_lint", version = "2.0.0") +bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2") +bazel_dep(name = "score_rust_policies", version = "0.0.3") + # TRLC dependency for requirements traceability bazel_dep(name = "trlc") git_override( @@ -54,7 +59,8 @@ git_override( # Currently required for ifs tooling bazel_dep(name = "score_toolchains_qnx", version = "0.0.7") -toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency=True) + +toolchains_qnx = use_extension("@score_toolchains_qnx//:extensions.bzl", "toolchains_qnx", dev_dependency = True) toolchains_qnx.sdp( sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", strip_prefix = "installation", @@ -63,11 +69,9 @@ toolchains_qnx.sdp( use_repo(toolchains_qnx, "toolchains_qnx_sdp") use_repo(toolchains_qnx, "toolchains_qnx_ifs") - bazel_dep(name = "rules_oci", version = "1.8.0") oci = use_extension("@rules_oci//oci:extensions.bzl", "oci") - oci.pull( name = "ubuntu_22_04", digest = "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", @@ -75,5 +79,4 @@ oci.pull( platforms = ["linux/amd64"], tag = "22.04", ) - use_repo(oci, "ubuntu_22_04") diff --git a/bazel_common/bundlers.bzl b/bazel_common/bundlers.bzl index 31d8be3239d..173116d5773 100644 --- a/bazel_common/bundlers.bzl +++ b/bazel_common/bundlers.bzl @@ -1,10 +1,21 @@ -load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* load("@rules_pkg//pkg:mappings.bzl", "pkg_files") +load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") +def score_pkg_bundle(name, bins, config_data = None, package_dir = None, other_package_files = [], custom_layout = {}): + """ Creates a reusable bundle by chaining Bazel packaging rules: -def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_package_files = [], custom_layout = {}): - """ - Creates a reusable bundle by chaining Bazel packaging rules: - Collects binaries and config files into a pkg_files target, renaming them into subdirectories. - Packs them into a tar archive using pkg_tar, optionally with additional package files and a custom package directory. - Extracts the tar archive using a custom untar rule. @@ -23,11 +34,15 @@ def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_pa "//app:data.txt": "resources/data.txt", "//lib:helper.sh": "scripts/helper.sh", } + Returns: + A dict with the following keys: + - "all_files": Label of the pkg_files target that collects all files with their renamed paths. + - "tar": Label of the pkg_tar target that creates the tar archive. + - "tree": Label of the untar target that extracts the tar archive. """ all_files_name = name + "_pkg_files" bundle_name = name + "_pkg_tar" - all_cfg = name + "_configs" untar_name = name rename_dict = {} @@ -42,17 +57,16 @@ def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_pa if config_data != None: config_data_arr = config_data - if custom_layout == None: custom_layout = {} for label, dst in custom_layout.items(): rename_dict[label] = "data/" + name + "/" + dst - + # Step 1: pkg_files pkg_files( name = all_files_name, - srcs = bins + config_data_arr + list(custom_layout.keys()), + srcs = bins + config_data_arr + list(custom_layout.keys()), renames = rename_dict, visibility = ["//visibility:public"], ) @@ -80,7 +94,6 @@ def score_pkg_bundle(name, bins, config_data= None, package_dir = None, other_pa "tree": ":" + untar_name, } - def _untar_impl(ctx): out = ctx.actions.declare_directory(ctx.label.name) @@ -98,4 +111,4 @@ untar = rule( attrs = { "src": attr.label(allow_single_file = True), }, -) \ No newline at end of file +) diff --git a/bazel_common/score_basic_bazel.MODULE.bazel b/bazel_common/score_basic_bazel.MODULE.bazel index d7f3c8088fc..c3f4e1c60ed 100644 --- a/bazel_common/score_basic_bazel.MODULE.bazel +++ b/bazel_common/score_basic_bazel.MODULE.bazel @@ -1,13 +1,24 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* bazel_dep(name = "rules_shell", version = "0.6.0") -bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "rules_cc", version = "0.2.16") bazel_dep(name = "rules_pkg", version = "1.2.0") - bazel_dep(name = "rules_rpm", version = "0.1.0") git_override( module_name = "rules_rpm", - remote = "https://github.com/eclipse-score/inc_os_autosd.git", branch = "main", - strip_prefix = "rpm" + remote = "https://github.com/eclipse-score/inc_os_autosd.git", + strip_prefix = "rpm", ) bazel_dep(name = "flatbuffers", version = "25.9.23") diff --git a/bazel_common/score_gcc_toolchains.MODULE.bazel b/bazel_common/score_gcc_toolchains.MODULE.bazel index 1a44306269b..733c733d66c 100644 --- a/bazel_common/score_gcc_toolchains.MODULE.bazel +++ b/bazel_common/score_gcc_toolchains.MODULE.bazel @@ -11,10 +11,9 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.2") -gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) +gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) gcc.toolchain( name = "score_gcc_x86_64_toolchain", target_cpu = "x86_64", @@ -43,28 +42,31 @@ gcc.toolchain( # ) # Workaround until above is fixed -bazel_dep(name = "score_toolchains_gcc", dev_dependency=True) -git_override( # Elektrobit corbos Linux for Safety Applications needs a specific toolchain - module_name = "score_toolchains_gcc", - remote = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc.git", - tag = "0.5.0-beta" # corresponds to git sha 158921ffd9aabef41a2a03bca5baeaa9f4aa9d33 +bazel_dep(name = "score_toolchains_gcc", dev_dependency = True) +git_override( + # Elektrobit corbos Linux for Safety Applications needs a specific toolchain + module_name = "score_toolchains_gcc", + remote = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc.git", + tag = "0.5.0-beta", # corresponds to git sha 158921ffd9aabef41a2a03bca5baeaa9f4aa9d33 ) -eb = use_extension("@score_toolchains_gcc//extensions:gcc.bzl", "gcc", dev_dependency=True) + +eb = use_extension("@score_toolchains_gcc//extensions:gcc.bzl", "gcc", dev_dependency = True) eb.toolchain( - url = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz", sha256 = "05b57bbc8d99d46df6b57f774c39a5a2664964ea7eb94147cbece08508c1f121", strip_prefix = "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64", + url = "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz", ) - bazel_dep(name = "os_autosd_toolchain", version = "0.0.1") + # override with git git_override( module_name = "os_autosd_toolchain", - remote = "https://github.com/eclipse-score/inc_os_autosd.git", branch = "main", - strip_prefix = "toolchain" + remote = "https://github.com/eclipse-score/inc_os_autosd.git", + strip_prefix = "toolchain", ) + autosd_10_gcc = use_extension("@os_autosd_toolchain//autosd_10_gcc:extensions.bzl", "autosd_10_gcc_extension") use_repo(autosd_10_gcc, "autosd_10_gcc_repo") @@ -73,6 +75,7 @@ rpm_toolchain = use_extension("@rules_rpm//toolchain:extensions.bzl", "rpm_toolc use_repo(rpm_toolchain, "rpm_toolchain") use_repo(eb, "gcc_toolchain", "gcc_toolchain_gcc") + use_repo( gcc, "score_gcc_x86_64_toolchain", diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 0f0460c45ae..4ee74d63985 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -17,63 +17,63 @@ bazel_dep(name = "score_baselibs") git_override( module_name = "score_baselibs", - remote = "https://github.com/eclipse-score/baselibs.git", commit = "158fe6a7b791c58f6eac5f7e4662b8db0cf9ac6e", + patch_strip = 1, patches = [ "//patches/baselibs:003-acl-fixes-for-aarch64.patch", ], - patch_strip = 1, + remote = "https://github.com/eclipse-score/baselibs.git", ) bazel_dep(name = "score_baselibs_rust") git_override( module_name = "score_baselibs_rust", - remote = "https://github.com/eclipse-score/baselibs_rust.git", commit = "0eba2934fa8b0e1a343ec6bf6f7ff00cec27d81c", + remote = "https://github.com/eclipse-score/baselibs_rust.git", ) bazel_dep(name = "score_communication") git_override( module_name = "score_communication", - remote = "https://github.com/eclipse-score/communication.git", commit = "56448a5589a5f7d3921b873e8127b824a8c1ca95", + patch_strip = 1, patches = [ "//patches/communication:001-expose-comm-examples.patch", ], - patch_strip = 1, + remote = "https://github.com/eclipse-score/communication.git", ) bazel_dep(name = "score_persistency") git_override( module_name = "score_persistency", - remote = "https://github.com/eclipse-score/persistency.git", commit = "438bf9b5c447fd41ad43b321679dd3d1b3a6c737", + remote = "https://github.com/eclipse-score/persistency.git", ) bazel_dep(name = "score_orchestrator") git_override( module_name = "score_orchestrator", - remote = "https://github.com/eclipse-score/orchestrator.git", commit = "600fdd8186305ffbf495e4fc788195c077de79ac", + remote = "https://github.com/eclipse-score/orchestrator.git", ) bazel_dep(name = "score_kyron") git_override( module_name = "score_kyron", - remote = "https://github.com/eclipse-score/kyron.git", commit = "5acfb1a593ec65cf4f64424f581c6ddd04813ee7", + remote = "https://github.com/eclipse-score/kyron.git", ) bazel_dep(name = "score_lifecycle_health") git_override( module_name = "score_lifecycle_health", - remote = "https://github.com/eclipse-score/lifecycle.git", commit = "14ee704eeac03e03ca10bece5de8b694d3c5e2dd", + remote = "https://github.com/eclipse-score/lifecycle.git", ) bazel_dep(name = "score_logging") git_override( module_name = "score_logging", - remote = "https://github.com/eclipse-score/logging.git", commit = "80feaae8ffaa2448c3872011b724e1668ad2930e", + remote = "https://github.com/eclipse-score/logging.git", ) diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 9bc0caa9d83..5851bc25b1c 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -17,59 +17,59 @@ bazel_dep(name = "score_crates") git_override( module_name = "score_crates", - remote = "https://github.com/eclipse-score/score-crates.git", commit = "372438042bafe21146899dc1f89771a031d12ed0", + remote = "https://github.com/eclipse-score/score-crates.git", ) bazel_dep(name = "score_itf") git_override( module_name = "score_itf", - remote = "https://github.com/eclipse-score/itf.git", commit = "e1243f3818fd78b72f79741082016fd3d7c85329", + remote = "https://github.com/eclipse-score/itf.git", ) bazel_dep(name = "score_tooling") git_override( module_name = "score_tooling", - remote = "https://github.com/eclipse-score/tooling.git", commit = "1159dcf9d35981ac4877265eff7a1e7a24452161", + remote = "https://github.com/eclipse-score/tooling.git", ) bazel_dep(name = "score_platform") git_override( module_name = "score_platform", - remote = "https://github.com/eclipse-score/score.git", commit = "bf8502071d750cb70d88f1cb5cfbf5e5e7407f27", + remote = "https://github.com/eclipse-score/score.git", ) bazel_dep(name = "score_bazel_platforms") git_override( module_name = "score_bazel_platforms", - remote = "https://github.com/eclipse-score/bazel_platforms.git", commit = "2286de89c35d5660ad183906a6f010b33fcac8db", + remote = "https://github.com/eclipse-score/bazel_platforms.git", ) bazel_dep(name = "score_test_scenarios") git_override( module_name = "score_test_scenarios", - remote = "https://github.com/eclipse-score/testing_tools.git", commit = "c3d385c8e5562b594a409e92a8f493207b53b49d", + remote = "https://github.com/eclipse-score/testing_tools.git", ) bazel_dep(name = "score_docs_as_code") git_override( module_name = "score_docs_as_code", - remote = "https://github.com/eclipse-score/docs-as-code.git", commit = "7349eb22430febb367765ced3fbabfc0ef2988d0", + patch_strip = 1, patches = [ "//patches/docs-as-code:fix-extra-properties.patch", ], - patch_strip = 1, + remote = "https://github.com/eclipse-score/docs-as-code.git", ) bazel_dep(name = "score_process") git_override( module_name = "score_process", - remote = "https://github.com/eclipse-score/process_description.git", commit = "fbe68f10041eb34fb791f08e31006afce8c9564a", + remote = "https://github.com/eclipse-score/process_description.git", ) diff --git a/bazel_common/score_python.MODULE.bazel b/bazel_common/score_python.MODULE.bazel index 7c3453ff450..3293cfb2612 100644 --- a/bazel_common/score_python.MODULE.bazel +++ b/bazel_common/score_python.MODULE.bazel @@ -1,5 +1,16 @@ - -bazel_dep(name = "rules_python", version = "1.0.0") +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +bazel_dep(name = "rules_python", version = "1.8.3") PYTHON_VERSION = "3.12" @@ -17,5 +28,4 @@ pip.parse( python_version = PYTHON_VERSION, requirements_lock = "//feature_integration_tests/test_cases:requirements.txt.lock", ) - use_repo(pip, "pip_score_venv_test") diff --git a/bazel_common/score_qnx_toolchains.MODULE.bazel b/bazel_common/score_qnx_toolchains.MODULE.bazel index 4ff05dd7a01..0340dd96d69 100644 --- a/bazel_common/score_qnx_toolchains.MODULE.bazel +++ b/bazel_common/score_qnx_toolchains.MODULE.bazel @@ -1,6 +1,16 @@ - +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* qcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) - qcc.toolchain( name = "score_qcc_aarch64_toolchain", sdp_version = "8.0.0", @@ -9,7 +19,6 @@ qcc.toolchain( use_default_package = True, version = "12.2.0", ) - qcc.toolchain( name = "score_qcc_x86_64_toolchain", sdp_version = "8.0.0", diff --git a/bazel_common/score_rust_toolchains.MODULE.bazel b/bazel_common/score_rust_toolchains.MODULE.bazel index 4ade3bd3007..33f93f308c8 100644 --- a/bazel_common/score_rust_toolchains.MODULE.bazel +++ b/bazel_common/score_rust_toolchains.MODULE.bazel @@ -1,7 +1,21 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* bazel_dep(name = "rules_rust", version = "0.61.0") + bazel_dep(name = "score_toolchains_rust", version = "0.4.0", dev_dependency = True) + git_override( module_name = "rules_rust", - remote = "https://github.com/pawelrutkaq/rules_rust.git", # To be fixed once rule_rust is in score bazel registry commit = "293337fd6402ec3dfbeb8f2d589f38ad9124dadd", -) \ No newline at end of file + remote = "https://github.com/pawelrutkaq/rules_rust.git", # To be fixed once rule_rust is in score bazel registry +) diff --git a/feature_integration_tests/configs/BUILD b/feature_integration_tests/configs/BUILD index 6a7ef1fbbb4..8556521da4d 100644 --- a/feature_integration_tests/configs/BUILD +++ b/feature_integration_tests/configs/BUILD @@ -25,7 +25,7 @@ filegroup( name = "etc_configs", srcs = [ "etc/logging.json", - "etc/mw_com_config.json", + "etc/mw_com_config.json", ], visibility = ["//visibility:public"], ) diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index 465800f86cb..b796b269486 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -1,7 +1,18 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* load("@score_itf//:defs.bzl", "py_itf_test") load("@score_itf//score/itf/plugins:plugins.bzl", "docker", "qemu") - filegroup( name = "all_tests", srcs = [ diff --git a/feature_integration_tests/itf/test_showcases.py b/feature_integration_tests/itf/test_showcases.py index 1f925dbd167..4b4d60f8045 100644 --- a/feature_integration_tests/itf/test_showcases.py +++ b/feature_integration_tests/itf/test_showcases.py @@ -31,8 +31,6 @@ def test_ipc_bridge_cpp_app_is_running(target): def test_run_all_showcases(target): - exit_code, out = target.execute( - "/showcases/bin/cli --examples=all" - ) + exit_code, out = target.execute("/showcases/bin/cli --examples=all") logger.info(out) assert exit_code == 0 diff --git a/feature_integration_tests/itf/test_ssh.py b/feature_integration_tests/itf/test_ssh.py index d778393544b..a7574fee6c6 100644 --- a/feature_integration_tests/itf/test_ssh.py +++ b/feature_integration_tests/itf/test_ssh.py @@ -17,14 +17,10 @@ @score.itf.plugins.core.requires_capabilities("ssh") def test_ssh_with_default_user(target): with target.ssh() as ssh: - exit_code, stdout, stderr = ssh.execute_command_output( - "echo 'Username:' $USER && uname -a" - ) + exit_code, stdout, stderr = ssh.execute_command_output("echo 'Username:' $USER && uname -a") assert exit_code == 0, "SSH command failed" assert "Username: root" in stdout[0], "Expected username not found in output" - assert "QNX Qnx_S-core 8.0.0" in stdout[1], ( - "Expected QNX kernel information not found in output" - ) + assert "QNX Qnx_S-core 8.0.0" in stdout[1], "Expected QNX kernel information not found in output" assert stderr == [], "Expected no error output" @@ -32,12 +28,8 @@ def test_ssh_with_default_user(target): def test_ssh_with_qnx_user(target): user = "qnxuser" with target.ssh(username=user) as ssh: - exit_code, stdout, stderr = ssh.execute_command_output( - "echo 'Username:' $USER && uname -a" - ) + exit_code, stdout, stderr = ssh.execute_command_output("echo 'Username:' $USER && uname -a") assert exit_code == 0, "SSH command failed" assert f"Username: {user}" in stdout[0], "Expected username not found in output" - assert "QNX Qnx_S-core 8.0.0" in stdout[1], ( - "Expected QNX kernel information not found in output" - ) + assert "QNX Qnx_S-core 8.0.0" in stdout[1], "Expected QNX kernel information not found in output" assert stderr == [], "Expected no error output" diff --git a/feature_integration_tests/test_cases/BUILD b/feature_integration_tests/test_cases/BUILD index cb64410b5db..a845e016941 100644 --- a/feature_integration_tests/test_cases/BUILD +++ b/feature_integration_tests/test_cases/BUILD @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* load("@pip_score_venv_test//:requirements.bzl", "all_requirements") load("@rules_python//python:pip.bzl", "compile_pip_requirements") load("@score_tooling//python_basics:defs.bzl", "score_py_pytest", "score_virtualenv") @@ -28,7 +40,11 @@ score_virtualenv( # Tests targets score_py_pytest( name = "fit", - srcs = glob(["tests/**/*.py"]) + ["conftest.py", "fit_scenario.py", "test_properties.py"], + srcs = glob(["tests/**/*.py"]) + [ + "conftest.py", + "fit_scenario.py", + "test_properties.py", + ], args = [ "--traces=all", "--rust-target-path=$(rootpath //feature_integration_tests/test_scenarios/rust:rust_test_scenarios)", diff --git a/feature_integration_tests/test_cases/conftest.py b/feature_integration_tests/test_cases/conftest.py index 001b14a2b3c..fc20f61f2fc 100644 --- a/feature_integration_tests/test_cases/conftest.py +++ b/feature_integration_tests/test_cases/conftest.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* from pathlib import Path import pytest diff --git a/feature_integration_tests/test_cases/fit_scenario.py b/feature_integration_tests/test_cases/fit_scenario.py index 6038f37b473..6188fec4fa3 100644 --- a/feature_integration_tests/test_cases/fit_scenario.py +++ b/feature_integration_tests/test_cases/fit_scenario.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* import shutil from pathlib import Path from typing import Generator diff --git a/feature_integration_tests/test_cases/pytest.ini b/feature_integration_tests/test_cases/pytest.ini index d4b25fd2f87..801c0a4304e 100644 --- a/feature_integration_tests/test_cases/pytest.ini +++ b/feature_integration_tests/test_cases/pytest.ini @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* [pytest] addopts = -v testpaths = tests diff --git a/feature_integration_tests/test_cases/test_properties.py b/feature_integration_tests/test_cases/test_properties.py index 2f30b7b7a11..b02ec02cb98 100644 --- a/feature_integration_tests/test_cases/test_properties.py +++ b/feature_integration_tests/test_cases/test_properties.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* try: from attribute_plugin import add_test_properties # type: ignore[import-untyped] except ImportError: diff --git a/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py b/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py index 8659bb90e32..d22276baf16 100644 --- a/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py +++ b/feature_integration_tests/test_cases/tests/basic/test_orchestration_with_persistency.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* import json from collections.abc import Generator from pathlib import Path diff --git a/feature_integration_tests/test_scenarios/rust/BUILD b/feature_integration_tests/test_scenarios/rust/BUILD index 29e476e5dbc..6ef6c741be3 100644 --- a/feature_integration_tests/test_scenarios/rust/BUILD +++ b/feature_integration_tests/test_scenarios/rust/BUILD @@ -16,19 +16,19 @@ load("@rules_rust//rust:defs.bzl", "rust_binary") rust_binary( name = "rust_test_scenarios", srcs = glob(["src/**/*.rs"]), - visibility = ["//feature_integration_tests/test_cases:__pkg__"], tags = [ "manual", ], + visibility = ["//feature_integration_tests/test_cases:__pkg__"], deps = [ + "@score_crates//:serde", + "@score_crates//:serde_json", + "@score_crates//:tracing", + "@score_crates//:tracing_subscriber", "@score_kyron//src/kyron:libkyron", "@score_kyron//src/kyron-foundation:libkyron_foundation", "@score_orchestrator//src/orchestration:liborchestration", - "@score_persistency//src/rust/rust_kvs:rust_kvs", - "@score_test_scenarios//test_scenarios_rust:test_scenarios_rust", - "@score_crates//:tracing", - "@score_crates//:tracing_subscriber", - "@score_crates//:serde", - "@score_crates//:serde_json", + "@score_persistency//src/rust/rust_kvs", + "@score_test_scenarios//test_scenarios_rust", ], ) diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs index 2938643029f..e66df89f067 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/mod.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,5 +9,5 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* pub mod runtime_helper; diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs index 3713d235661..0b1ec4addb2 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/kyron/runtime_helper.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* use kyron::core::types::UniqueWorkerId; use kyron::prelude::ThreadParameters as AsyncRtThreadParameters; use kyron::runtime::*; @@ -138,34 +138,24 @@ impl Runtime { for dedicated_worker in dedicated_workers { // Create thread parameters object. let mut async_rt_thread_params = AsyncRtThreadParameters::default(); - if let Some(thread_priority) = - dedicated_worker.thread_parameters.thread_priority - { + if let Some(thread_priority) = dedicated_worker.thread_parameters.thread_priority { async_rt_thread_params = async_rt_thread_params.priority(thread_priority); } - if let Some(thread_affinity) = - &dedicated_worker.thread_parameters.thread_affinity - { + if let Some(thread_affinity) = &dedicated_worker.thread_parameters.thread_affinity { async_rt_thread_params = async_rt_thread_params.affinity(thread_affinity); } - if let Some(thread_stack_size) = - dedicated_worker.thread_parameters.thread_stack_size - { - async_rt_thread_params = - async_rt_thread_params.stack_size(thread_stack_size); + if let Some(thread_stack_size) = dedicated_worker.thread_parameters.thread_stack_size { + async_rt_thread_params = async_rt_thread_params.stack_size(thread_stack_size); } - if let Some(thread_scheduler) = - dedicated_worker.thread_parameters.thread_scheduler - { - async_rt_thread_params = - async_rt_thread_params.scheduler_type(thread_scheduler); + if let Some(thread_scheduler) = dedicated_worker.thread_parameters.thread_scheduler { + async_rt_thread_params = async_rt_thread_params.scheduler_type(thread_scheduler); } // Create `UniqueWorkerId`. let unique_worker_id = UniqueWorkerId::from(&dedicated_worker.id); - exec_engine_builder = exec_engine_builder - .with_dedicated_worker(unique_worker_id, async_rt_thread_params); + exec_engine_builder = + exec_engine_builder.with_dedicated_worker(unique_worker_id, async_rt_thread_params); } } @@ -173,8 +163,6 @@ impl Runtime { async_rt_builder = builder; } - async_rt_builder - .build() - .expect("Failed to build async runtime") + async_rt_builder.build().expect("Failed to build async runtime") } } diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs index 117edcc98ef..1174477b7bc 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/mod.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,6 +9,6 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* pub mod kyron; pub mod persistency; diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs index 6d75b062762..95676864bee 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_instance.rs @@ -1,3 +1,15 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* //! KVS instance test helpers. use crate::internals::persistency::kvs_parameters::KvsParameters; @@ -28,9 +40,7 @@ pub fn kvs_instance(kvs_parameters: KvsParameters) -> Result { } else if let Some(snapshot_max_count) = kvs_parameters.snapshot_max_count { // Configure snapshot_max_count via backend // change back to snapshot_max_count, if https://github.com/eclipse-score/persistency/issues/222 is resolved. - let backend = JsonBackendBuilder::new() - .snapshot_max_count(snapshot_max_count) - .build(); + let backend = JsonBackendBuilder::new().snapshot_max_count(snapshot_max_count).build(); builder = builder.backend(Box::new(backend)); } diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs index cbdefeded3b..4b9819eb143 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/kvs_parameters.rs @@ -1,3 +1,15 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* //! KVS parameters test helpers. use rust_kvs::prelude::{InstanceId, KvsDefaults, KvsLoad}; diff --git a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs index db406453147..4a4873ccff9 100644 --- a/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/internals/persistency/mod.rs @@ -1,2 +1,14 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* pub mod kvs_instance; pub mod kvs_parameters; diff --git a/feature_integration_tests/test_scenarios/rust/src/main.rs b/feature_integration_tests/test_scenarios/rust/src/main.rs index 1b6fd78e5cd..024b09a2555 100644 --- a/feature_integration_tests/test_scenarios/rust/src/main.rs +++ b/feature_integration_tests/test_scenarios/rust/src/main.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* mod internals; mod scenarios; @@ -26,9 +26,7 @@ struct NumericUnixTime; impl FormatTime for NumericUnixTime { fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<'_>) -> std::fmt::Result { - let now = SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap_or_default(); + let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap_or_default(); write!(w, "{}", now.as_secs()) } } @@ -41,8 +39,7 @@ fn init_tracing_subscriber() { .json() .finish(); - tracing::subscriber::set_global_default(subscriber) - .expect("Setting default subscriber failed!"); + tracing::subscriber::set_global_default(subscriber).expect("Setting default subscriber failed!"); } fn main() -> Result<(), String> { diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs index cb871dd13a6..f918dcac76a 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/mod.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -8,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* mod orchestration_with_persistency; use orchestration_with_persistency::OrchestrationWithPersistency; diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs index cb567d976a4..17fbdd3766f 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/basic/orchestration_with_persistency.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* use crate::internals::kyron::runtime_helper::Runtime; use kyron_foundation::containers::Vector; use kyron_foundation::prelude::CommonErrors; @@ -85,9 +85,7 @@ async fn kvs_save_cycle_number(path: String) -> Result<(), UserErrValue> { builder = builder.backend(Box::new(backend)); } else if let Some(max_count) = params.snapshot_max_count { // Configure snapshot_max_count via backend even without custom dir - let backend = JsonBackendBuilder::new() - .snapshot_max_count(max_count) - .build(); + let backend = JsonBackendBuilder::new().snapshot_max_count(max_count).build(); builder = builder.backend(Box::new(backend)); } @@ -98,8 +96,7 @@ async fn kvs_save_cycle_number(path: String) -> Result<(), UserErrValue> { let key = "run_cycle_number"; let last_cycle_number: u32 = kvs.get_value_as::(key).unwrap_or_else(|_| 0_u32); - kvs.set_value(key, last_cycle_number + 1) - .expect("Failed to set value"); + kvs.set_value(key, last_cycle_number + 1).expect("Failed to set value"); let value_read = kvs.get_value_as::(key).expect("Failed to read value"); kvs.flush().expect("Failed to flush KVS"); @@ -111,8 +108,7 @@ async fn kvs_save_cycle_number(path: String) -> Result<(), UserErrValue> { fn single_sequence_design(kvs_path: String) -> Result { let mut design = Design::new("SingleSequence".into(), DesignConfig::default()); - let kvs_cycle_tag = - design.register_invoke_async("KVS save cycle".into(), persistency_task!(kvs_path))?; + let kvs_cycle_tag = design.register_invoke_async("KVS save cycle".into(), persistency_task!(kvs_path))?; // Create a program with actions design.add_program(file!(), move |_design_instance, builder| { @@ -143,9 +139,7 @@ impl Scenario for OrchestrationWithPersistency { .add_design(single_sequence_design(logic.kvs_path).expect("Failed to create design")) .design_done(); - let mut program_manager = orch - .into_program_manager() - .expect("Failed to create programs"); + let mut program_manager = orch.into_program_manager().expect("Failed to create programs"); let mut programs = program_manager.get_programs(); rt.block_on(async move { diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs index 8c7f2242877..00f66457722 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/mod.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* use test_scenarios_rust::scenario::{ScenarioGroup, ScenarioGroupImpl}; mod basic; diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs index ca8fec57928..62353e6aede 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/mod.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -8,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* mod multiple_kvs_per_app; use multiple_kvs_per_app::MultipleKvsPerApp; diff --git a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs index 18ff2767447..fc9ffd6d926 100644 --- a/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs +++ b/feature_integration_tests/test_scenarios/rust/src/scenarios/persistency/multiple_kvs_per_app.rs @@ -1,3 +1,15 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* use crate::internals::persistency::{kvs_instance::kvs_instance, kvs_parameters::KvsParameters}; use rust_kvs::prelude::KvsApi; use serde::Deserialize; @@ -31,10 +43,8 @@ impl Scenario for MultipleKvsPerApp { fn run(&self, input: &str) -> Result<(), String> { // Parameters. let v: Value = serde_json::from_str(input).expect("Failed to parse input string"); - let params1 = - KvsParameters::from_value(&v["kvs_parameters_1"]).expect("Failed to parse parameters"); - let params2 = - KvsParameters::from_value(&v["kvs_parameters_2"]).expect("Failed to parse parameters"); + let params1 = KvsParameters::from_value(&v["kvs_parameters_1"]).expect("Failed to parse parameters"); + let params2 = KvsParameters::from_value(&v["kvs_parameters_2"]).expect("Failed to parse parameters"); let logic = TestInput::from_json(input).expect("Failed to parse input string"); { // Create first KVS instance. @@ -59,17 +69,13 @@ impl Scenario for MultipleKvsPerApp { let kvs1 = kvs_instance(params1).expect("Failed to create KVS1 instance"); let kvs2 = kvs_instance(params2).expect("Failed to create KVS2 instance"); - let value1 = kvs1 - .get_value_as::(&logic.key) - .expect("Failed to read kvs1 value"); + let value1 = kvs1.get_value_as::(&logic.key).expect("Failed to read kvs1 value"); info!( instance = field::debug(kvs1.parameters().instance_id), key = logic.key, value = value1 ); - let value2 = kvs2 - .get_value_as::(&logic.key) - .expect("Failed to read kvs2 value"); + let value2 = kvs2.get_value_as::(&logic.key).expect("Failed to read kvs2 value"); info!( instance = field::debug(kvs2.parameters().instance_id), key = logic.key, diff --git a/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel index 20ec8dabcab..e452f00f972 100644 --- a/images/autosd_x86_64/BUILD.bazel +++ b/images/autosd_x86_64/BUILD.bazel @@ -20,25 +20,25 @@ alias( rpm_package( name = "score-showcases", + data = [ + "//showcases:showcases_all", + ], + data_dir = "/usr/share/score/examples", description = "Eclipse S-CORE Reference Integration Showcases", summary = "Eclipse S-CORE Reference Integration Showcases", version = "0.6.0", - data = [ - "//showcases:showcases_all" - ], - data_dir = "/usr/share/score/examples", ) sh_binary( name = "run", srcs = ["//runners/docker_x86_64/scripts:run_docker.sh"], - env={ - "OCI_IMAGE": "quay.io/centos/centos:stream10" - }, args = [ "$(location :image)", ], data = [ ":image", ], + env = { + "OCI_IMAGE": "quay.io/centos/centos:stream10", + }, ) diff --git a/images/autosd_x86_64/build/image.aib.yml b/images/autosd_x86_64/build/image.aib.yml index 4cc4f2cf59d..5fdd8e05985 100644 --- a/images/autosd_x86_64/build/image.aib.yml +++ b/images/autosd_x86_64/build/image.aib.yml @@ -12,7 +12,6 @@ # ******************************************************************************* # name: score-autosd - image: selinux_mode: permissive content: @@ -21,9 +20,9 @@ content: repos: - id: epel baseurl: https://dl.fedoraproject.org/pub/epel/10/Everything/$arch/ - # removing it for now because the image is relying on copying globs - #- id: score - # baseurl: file:///host/rpms + # removing it for now because the image is relying on copying globs + #- id: score + # baseurl: file:///host/rpms rpms: # For testing the image only: - openssh-server @@ -33,13 +32,11 @@ content: - bluechi-controller - bluechi-agent - bluechi-ctl - make_dirs: - path: /etc/containers/systemd/qm.container.d mode: 0755 parents: true exist_ok: true - # Configure shared socket directory via tmpfiles add_files: - path: /usr/lib/tmpfiles.d/lola_disc.conf @@ -72,7 +69,6 @@ content: source_glob: "files/showcases_all/**/*" preserve_path: true max_files: 50 - chmod_files: - path: /usr/bin/lola-ipc-test mode: "0755" @@ -80,36 +76,27 @@ content: - path: /usr/share/score/examples/showcases_all/bin/cli mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/control_daemon mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/cpp_supervised_app mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/ipc_bridge_cpp mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/launch_manager mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/lifecycle_signal.sh mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/orch_per_example mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/rust_supervised_app mode: "0755" recursive: true - - # Required for testing the image only: systemd: enabled_services: @@ -118,7 +105,6 @@ content: # bluechi services - bluechi-controller.service - bluechi-agent.service - qm: memory_limit: max: infinity @@ -141,7 +127,6 @@ qm: systemd: enabled_services: - bluechi-agent - auth: # Required for testing the image only: sshd_config: diff --git a/images/autosd_x86_64/build/vars-devel.yml b/images/autosd_x86_64/build/vars-devel.yml index cfebf2ebf20..66dbb6d4103 100644 --- a/images/autosd_x86_64/build/vars-devel.yml +++ b/images/autosd_x86_64/build/vars-devel.yml @@ -10,5 +10,4 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - root_password: $6$xoLqEUz0cGGJRx01$H3H/bFm0myJPULNMtbSsOFd/2BnHqHkMD92Sfxd.EKM9hXTWSmELG8cf205l6dktomuTcgKGGtGDgtvHVXSWU. diff --git a/images/autosd_x86_64/build/vars.yml b/images/autosd_x86_64/build/vars.yml index f76998dd8ff..5f3c012108e 100644 --- a/images/autosd_x86_64/build/vars.yml +++ b/images/autosd_x86_64/build/vars.yml @@ -10,5 +10,4 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - disable_ipv6: false diff --git a/images/ebclfsa_aarch64/BUILD b/images/ebclfsa_aarch64/BUILD index df35a199659..13f09c37526 100644 --- a/images/ebclfsa_aarch64/BUILD +++ b/images/ebclfsa_aarch64/BUILD @@ -1,4 +1,16 @@ # ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +# ******************************************************************************* # Copyright (c) 2025 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional diff --git a/images/ebclfsa_aarch64/persistency_integration/BUILD b/images/ebclfsa_aarch64/persistency_integration/BUILD index fdb5c75f0a6..5693c7f58e6 100644 --- a/images/ebclfsa_aarch64/persistency_integration/BUILD +++ b/images/ebclfsa_aarch64/persistency_integration/BUILD @@ -16,7 +16,7 @@ genrule( name = "fetch-fastdev-archive", srcs = [], outs = ["fastdev-archive.tgz"], - cmd = "wget -O $@ https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-ubuntu-ebcl-deb-qemu-arm64.tgz" + cmd = "wget -O $@ https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-ubuntu-ebcl-deb-qemu-arm64.tgz", ) genrule( @@ -24,7 +24,7 @@ genrule( srcs = [":fetch-fastdev-archive"], outs = [ "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", - "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux" + "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", ], cmd = "tar xzf $(location :fetch-fastdev-archive) -C $(RULEDIR)", ) @@ -37,6 +37,11 @@ genrule( "scripts/cpp_tests_persistency.sh", "run_qemu.sh", ], + outs = [ + "qemu_upload.log", + "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", + "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", + ], cmd = " \ mkdir -p $(RULEDIR)/ebcl-qemuarm64-modified &&\ cp $(RULEDIR)/ebcl-qemuarm64/* $(RULEDIR)/ebcl-qemuarm64-modified/ &&\ @@ -48,11 +53,6 @@ genrule( sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ sleep 5 \ ", - outs = [ - "qemu_upload.log", - "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", - "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux" - ], ) genrule( @@ -60,7 +60,11 @@ genrule( srcs = [ "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", - "run_qemu.sh" + "run_qemu.sh", + ], + outs = [ + "qemu_run.log", + "ssh_persistency_test_scenarios_run.log", ], cmd = " \ $(location run_qemu.sh) $(RULEDIR)/ebcl-qemuarm64-modified -pidfile $(RULEDIR)/qemu.pid > $(RULEDIR)/qemu_run.log &\ @@ -69,8 +73,4 @@ genrule( sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ sleep 5 \ ", - outs = [ - "qemu_run.log", - "ssh_persistency_test_scenarios_run.log", - ], ) diff --git a/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh b/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh index 2b2e30349bf..8dba73351d9 100755 --- a/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh +++ b/images/ebclfsa_aarch64/persistency_integration/run_qemu.sh @@ -1,5 +1,16 @@ #!/bin/bash - +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* set -xu if [ -z "$1" ]; then diff --git a/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh b/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh index 0dd092d139f..afe14ec080e 100755 --- a/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh +++ b/images/ebclfsa_aarch64/persistency_integration/scripts/cpp_tests_persistency.sh @@ -1,4 +1,16 @@ #!/bin/bash +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Script to run C++ persistency tests inside the QEMU environment # Wrapper due to quoting issues when calling directly from Bazel cpp_tests_persistency --name basic.basic --input '{"kvs_parameters":{"instance_id":0}}' diff --git a/images/ebclfsa_aarch64/scrample_integration/BUILD b/images/ebclfsa_aarch64/scrample_integration/BUILD index b310ca159fb..287378b659a 100644 --- a/images/ebclfsa_aarch64/scrample_integration/BUILD +++ b/images/ebclfsa_aarch64/scrample_integration/BUILD @@ -28,8 +28,8 @@ genrule( name = "hi_app", srcs = [ ":scrample_sil_wrapper", - ":scrample_sil_r" - ], + ":scrample_sil_r", + ], outs = ["hi_app"], cmd = "cp $(location :scrample_sil_wrapper) $@ && \ chmod ugo+w $@ && \ @@ -52,7 +52,7 @@ genrule( name = "fetch-fastdev-archive", srcs = [], outs = ["fastdev-archive.tgz"], - cmd = "wget -O $@ https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-ubuntu-ebcl-deb-qemu-arm64.tgz" + cmd = "wget -O $@ https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-ubuntu-ebcl-deb-qemu-arm64.tgz", ) genrule( @@ -60,7 +60,7 @@ genrule( srcs = [":fetch-fastdev-archive"], outs = [ "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", - "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux" + "ebcl-qemuarm64/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", ], cmd = "tar xzf $(location :fetch-fastdev-archive) -C $(RULEDIR)", ) @@ -76,6 +76,11 @@ genrule( "etc/logging.json", "run_qemu.sh", ], + outs = [ + "qemu_upload.log", + "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", + "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", + ], cmd = " \ mkdir -p $(RULEDIR)/ebcl-qemuarm64-modified &&\ cp $(RULEDIR)/ebcl-qemuarm64/* $(RULEDIR)/ebcl-qemuarm64-modified/ &&\ @@ -90,11 +95,6 @@ genrule( sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ sleep 5 \ ", - outs = [ - "qemu_upload.log", - "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", - "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux" - ], ) genrule( @@ -102,7 +102,11 @@ genrule( srcs = [ "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64.wic", "ebcl-qemuarm64-modified/fastdev-ubuntu-ebclfsa-ebcl-qemuarm64-vmlinux", - "run_qemu.sh" + "run_qemu.sh", + ], + outs = [ + "qemu_run.log", + "ssh_scrample_run.log", ], cmd = " \ $(location run_qemu.sh) $(RULEDIR)/ebcl-qemuarm64-modified -pidfile $(RULEDIR)/qemu.pid > $(RULEDIR)/qemu_run.log &\ @@ -111,8 +115,4 @@ genrule( sshpass -p linux ssh -o StrictHostKeyChecking=no -p 2222 root@localhost crinit-ctl poweroff || true \ sleep 5 \ ", - outs = [ - "qemu_run.log", - "ssh_scrample_run.log", - ], ) diff --git a/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh b/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh index 3817c374f93..adab692e6bb 100755 --- a/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh +++ b/images/ebclfsa_aarch64/scrample_integration/run_qemu.sh @@ -1,5 +1,16 @@ #!/bin/bash - +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* set -xu if [ -z "$1" ]; then diff --git a/images/linux_x86_64/BUILD b/images/linux_x86_64/BUILD index fc303826ce3..8dfaa879a50 100644 --- a/images/linux_x86_64/BUILD +++ b/images/linux_x86_64/BUILD @@ -10,9 +10,9 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -load("@rules_shell//shell:sh_binary.bzl", "sh_binary") load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") load("@rules_pkg//pkg:tar.bzl", "pkg_tar") +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") alias( name = "image", @@ -38,7 +38,7 @@ pkg_tar( ], symlinks = { "showcases": "showcases_all", - } + }, ) oci_image( @@ -57,4 +57,3 @@ oci_tarball( "//feature_integration_tests/itf:__pkg__", ], ) - diff --git a/images/qnx_x86_64/build/BUILD b/images/qnx_x86_64/build/BUILD index 1ec2e2d81b9..dea5102c105 100644 --- a/images/qnx_x86_64/build/BUILD +++ b/images/qnx_x86_64/build/BUILD @@ -24,38 +24,38 @@ filegroup( filegroup( name = "configs", srcs = [ - "//images/qnx_x86_64/configs:pci_server.cfg", - "//images/qnx_x86_64/configs:pci_hw.cfg", - "//images/qnx_x86_64/configs:qcrypto.conf", - "//images/qnx_x86_64/configs:passwd", + "//images/qnx_x86_64/configs:dhcpcd.conf", "//images/qnx_x86_64/configs:group", - "//images/qnx_x86_64/configs:sshd_config", - "//images/qnx_x86_64/configs:ssh_host_rsa_key", - "//images/qnx_x86_64/configs:ssh_host_rsa_key.pub", "//images/qnx_x86_64/configs:hostname", - "//images/qnx_x86_64/configs:network_setup.sh", "//images/qnx_x86_64/configs:network_capture.sh", - "//images/qnx_x86_64/configs:profile", - "//images/qnx_x86_64/configs:dhcpcd.conf", + "//images/qnx_x86_64/configs:network_setup.sh", "//images/qnx_x86_64/configs:network_setup_dhcp.sh", + "//images/qnx_x86_64/configs:passwd", + "//images/qnx_x86_64/configs:pci_hw.cfg", + "//images/qnx_x86_64/configs:pci_server.cfg", + "//images/qnx_x86_64/configs:profile", + "//images/qnx_x86_64/configs:qcrypto.conf", + "//images/qnx_x86_64/configs:ssh_host_rsa_key", + "//images/qnx_x86_64/configs:ssh_host_rsa_key.pub", + "//images/qnx_x86_64/configs:sshd_config", ], visibility = ["//visibility:private"], ) qnx_ifs( name = "init", - build_file = "init.build", srcs = [ + ":configs", + ":scripts", ":system.build", ":system_dir", - ":scripts", - ":configs", - "//showcases:showcases_all", "//feature_integration_tests/configs:etc_configs", - "@score_persistency//tests/test_scenarios/cpp:test_scenarios", + "//showcases:showcases_all", + "@score_persistency//tests/test_scenarios/cpp:test_scenarios", ], + build_file = "init.build", ext_repo_maping = { - "BUNDLE_PATH": "$(location //showcases:showcases_all)" + "BUNDLE_PATH": "$(location //showcases:showcases_all)", }, visibility = [ "//visibility:public", @@ -65,8 +65,7 @@ qnx_ifs( filegroup( name = "system_dir", srcs = [ - "system.build", "init.build", + "system.build", ], ) - diff --git a/images/qnx_x86_64/configs/BUILD b/images/qnx_x86_64/configs/BUILD index 40d52d113db..4ce5a8da201 100644 --- a/images/qnx_x86_64/configs/BUILD +++ b/images/qnx_x86_64/configs/BUILD @@ -11,7 +11,6 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* - exports_files([ "startup.sh", "network_setup.sh", @@ -27,5 +26,5 @@ exports_files([ "ssh_host_rsa_key.pub", "hostname", "profile", - "network_capture.sh" + "network_capture.sh", ]) diff --git a/images/qnx_x86_64/configs/network_setup_dhcp.sh b/images/qnx_x86_64/configs/network_setup_dhcp.sh index 1b88acf5687..785fced4199 100644 --- a/images/qnx_x86_64/configs/network_setup_dhcp.sh +++ b/images/qnx_x86_64/configs/network_setup_dhcp.sh @@ -89,4 +89,4 @@ fi # Configure system network settings sysctl -w net.inet.icmp.bmcastecho=1 > /dev/null # Enable ICMP broadcast echo (responds to broadcast pings) -echo "---> Network configuration completed" \ No newline at end of file +echo "---> Network configuration completed" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000000..2317e7d70ee --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,98 @@ +[tool.ruff] +# Exclude a variety of commonly ignored directories. +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".git-rewrite", + ".hg", + ".mypy_cache", + ".nox", + ".pants.d", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "venv", +] + +line-length = 120 +indent-width = 4 + +[tool.ruff.lint] +select = [ + # flake8-boolean-trap + "FBT", + # flake8-bugbear + "B", + # flake8-builtins + "A", + # flake8-comprehensions + "C4", + # flake8-fixme + "FIX", + # flake8-implicit-str-concat + "ISC", + # flake8-pie + "PIE", + # flake8-print + "T20", + # flake8-pytest-style + "PT", + # flake8-raise + "RSE", + # flake8-return + "RET501", + "RET502", + "RET503", + "RET504", + # flake8-self + "SLF", + # flake8-simplify + "SIM", + # flake8-type-checking + "TC", + # flake8-unused-arguments + "ARG", + # flake8-use-pathlib + "PTH", + + # isort + "I", + + # pycodestyle error + "E", + # Pyflakes + "F", + # pyupgrade + "UP", +] +ignore = ["F401", "PTH123", "ARG002", "T201"] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[tool.ruff.format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" diff --git a/runners/docker_x86_64/scripts/BUILD b/runners/docker_x86_64/scripts/BUILD index 6e17fd110a5..9bfe4ec77e1 100644 --- a/runners/docker_x86_64/scripts/BUILD +++ b/runners/docker_x86_64/scripts/BUILD @@ -1 +1,13 @@ -exports_files(["run_docker.sh"]) \ No newline at end of file +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +exports_files(["run_docker.sh"]) diff --git a/runners/qemu_x86_64/BUILD b/runners/qemu_x86_64/BUILD index 52ddaba0f21..9ff2afb3099 100644 --- a/runners/qemu_x86_64/BUILD +++ b/runners/qemu_x86_64/BUILD @@ -13,7 +13,6 @@ load("@rules_shell//shell:sh_binary.bzl", "sh_binary") load("@score_itf//:defs.bzl", "py_itf_test") - # sh_binary( # name = "qemu_x86_64", # srcs = ["scripts/run_qemu.sh"], diff --git a/runners/qemu_x86_64/scripts/BUILD b/runners/qemu_x86_64/scripts/BUILD index 44ff61c805e..29e9c7db4aa 100644 --- a/runners/qemu_x86_64/scripts/BUILD +++ b/runners/qemu_x86_64/scripts/BUILD @@ -1 +1,13 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* exports_files(["run_qemu.sh"]) diff --git a/rust_coverage/BUILD b/rust_coverage/BUILD index c900ed584a2..6d28f79d7a6 100644 --- a/rust_coverage/BUILD +++ b/rust_coverage/BUILD @@ -16,8 +16,6 @@ load("@score_tooling//:defs.bzl", "rust_coverage_report") - - rust_coverage_report( name = "rust_coverage_score_baselibs_rust", bazel_configs = [ @@ -27,7 +25,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_baselibs_rust//src/...) -@score_baselibs_rust//src/log/score_log_fmt_macro:tests', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_communication", @@ -38,7 +35,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_communication//score/mw/com/impl/...) -@score_communication//score/mw/com/impl:unit_test_runtime_single_exec -@score_communication//score/mw/com/impl/configuration:config_parser_test -@score_communication//score/mw/com/impl/configuration:configuration_test -@score_communication//score/mw/com/impl/tracing/configuration:tracing_filter_config_parser_test', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_persistency", @@ -49,7 +45,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_persistency//src/...) -@score_persistency//src/cpp/tests:bm_kvs_cpp', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_orchestrator", @@ -60,7 +55,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_orchestrator//src/...)', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_kyron", @@ -71,7 +65,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_kyron//src/...)', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_lifecycle_health", @@ -82,7 +75,6 @@ rust_coverage_report( query = 'kind("rust_test", @score_lifecycle_health//src/...)', visibility = ["//visibility:public"], ) - rust_coverage_report( name = "rust_coverage_score_logging", @@ -93,4 +85,3 @@ rust_coverage_report( query = 'kind("rust_test", @score_logging//score/...) -@score_logging//score/datarouter/test/ut/ut_logging:dltprotocolUT -@score_logging//score/datarouter/test/ut/ut_logging:persistentLogConfigUT -@score_logging//score/datarouter/test/ut/ut_logging:socketserverConfigUT -@score_logging//score/datarouter/test/ut/ut_logging:socketserverUT -@score_logging//score/mw/log/legacy_non_verbose_api:unit_test', visibility = ["//visibility:public"], ) - \ No newline at end of file diff --git a/scripts/__init__.py b/scripts/__init__.py index 7994ee43e26..15833012d24 100644 --- a/scripts/__init__.py +++ b/scripts/__init__.py @@ -1 +1,13 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Scripts package diff --git a/scripts/generate_rust_analyzer_support.sh b/scripts/generate_rust_analyzer_support.sh index de16c4b973f..960c5edc7b9 100755 --- a/scripts/generate_rust_analyzer_support.sh +++ b/scripts/generate_rust_analyzer_support.sh @@ -1,5 +1,16 @@ #!/bin/bash - +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* set -e # Manual targets are not take into account, must be set explicitly diff --git a/scripts/integration_test.py b/scripts/integration_test.py index 6ec2aca8619..219905689c7 100755 --- a/scripts/integration_test.py +++ b/scripts/integration_test.py @@ -1,4 +1,16 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """Integration build script for SCORE modules. Captures warning counts for regression tracking and generates build summaries. @@ -24,43 +36,48 @@ def get_module_version_gh(repo_url: str, commit_hash: str) -> Optional[str]: """Get version tag from GitHub API for a commit hash. - + Args: repo_url: GitHub repository URL commit_hash: Commit hash to look up - + Returns: Tag name if found, None otherwise """ # Check if gh CLI is installed - if not subprocess.run(['which', 'gh'], capture_output=True).returncode == 0: + if not subprocess.run(["which", "gh"], capture_output=True).returncode == 0: print("::warning::gh CLI not found. Install it to resolve commit hashes to tags.") return None - + # Extract owner/repo from GitHub URL - match = re.search(r'github\.com[/:]([^/]+)/([^/.]+)(\.git)?$', repo_url) + match = re.search(r"github\.com[/:]([^/]+)/([^/.]+)(\.git)?$", repo_url) if not match: print(f"::warning::Invalid repo URL format: {repo_url}") return None - + owner, repo = match.group(1), match.group(2) - + print(f"::debug::Querying GitHub API: repos/{owner}/{repo}/tags for commit {commit_hash}") - + try: result = subprocess.run( - ['gh', 'api', f'repos/{owner}/{repo}/tags', '--jq', - f'.[] | select(.commit.sha == "{commit_hash}") | .name'], + [ + "gh", + "api", + f"repos/{owner}/{repo}/tags", + "--jq", + f'.[] | select(.commit.sha == "{commit_hash}") | .name', + ], capture_output=True, text=True, - timeout=10 + timeout=10, ) - + if result.returncode == 0 and result.stdout.strip(): - tag = result.stdout.strip().split('\n')[0] + tag = result.stdout.strip().split("\n")[0] print(f"::debug::Found tag: {tag}") return tag - + print(f"::debug::No tag found for commit {commit_hash}") return None except Exception as e: @@ -70,11 +87,11 @@ def get_module_version_gh(repo_url: str, commit_hash: str) -> Optional[str]: def truncate_hash(hash_str: str, length: int = 8) -> str: """Truncate hash to specified length. - + Args: hash_str: Full hash string length: Maximum length - + Returns: Truncated hash """ @@ -85,19 +102,19 @@ def truncate_hash(hash_str: str, length: int = 8) -> str: def count_pattern(log_file: Path, pattern: str) -> int: """Count lines matching pattern in log file. - + Args: log_file: Path to log file pattern: Pattern to search for (case-insensitive) - + Returns: Number of matching lines found """ if not log_file.exists(): return 0 - + count = 0 - with open(log_file, 'r') as f: + with open(log_file, "r") as f: for line in f: if pattern in line.lower(): count += 1 @@ -106,16 +123,16 @@ def count_pattern(log_file: Path, pattern: str) -> int: def get_identifier_and_link(module: Optional[Module]) -> Tuple[Optional[str], str]: """Get display identifier and link for a module. - + Args: module: Module instance or None - + Returns: Tuple of (identifier, link_url) """ if not module or not module.hash: return None, "" - + if module.version: identifier = module.version link = f"{module.repo}/releases/tag/{module.version}" if module.repo else "" @@ -132,98 +149,91 @@ def get_identifier_and_link(module: Optional[Module]) -> Tuple[Optional[str], st else: identifier = truncate_hash(module.hash) link = "" - + return identifier, link def build_group(group_name: str, targets: str, config: str, log_file: Path) -> Tuple[int, int]: """Build a group of Bazel targets. - + Args: group_name: Name of the build group targets: Bazel targets to build config: Bazel config to use log_file: Path to log file - + Returns: Tuple of (exit_code, duration_seconds) """ print(f"--- Building group: {group_name} ---") - + # Build command - cmd = ['bazel', 'build', '--verbose_failures', f'--config={config}'] + targets.split() + cmd = ["bazel", "build", "--verbose_failures", f"--config={config}"] + targets.split() print(f"bazel build --verbose_failures --config {config} {targets}") print(f"::group::Bazel build ({group_name})") - + start_time = time.time() - + # Run build and capture output - with open(log_file, 'w') as f: + with open(log_file, "w") as f: # Write command to log file f.write(f"Command: {' '.join(cmd)}\n") f.write("-" * 80 + "\n\n") - - process = subprocess.Popen( - cmd, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - text=True - ) - + + process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + # Stream output to both terminal and file if process.stdout: for line in process.stdout: - print(line, end='') + print(line, end="") f.write(line) - + process.wait() - + end_time = time.time() duration = int(end_time - start_time) - + print("::endgroup::") - + return process.returncode, duration -def format_commit_version_cell( - group_name: str, - old_modules: Dict[str, Module], - new_modules: Dict[str, Module] -) -> str: +def format_commit_version_cell(group_name: str, old_modules: Dict[str, Module], new_modules: Dict[str, Module]) -> str: """Format the commit/version cell for the summary table. - + Args: group_name: Name of the module group old_modules: Modules from old known_good.json new_modules: Modules from new known_good.json - + Returns: Formatted markdown cell content """ # Get module info or defaults old_module = old_modules.get(group_name) new_module = new_modules.get(group_name) - + if new_module is None or new_module.hash is None: return "N/A" - - print(f"::debug::Module={group_name}, old_version={old_module.version if old_module else 'None'}, " - f"old_hash={old_module.hash if old_module else 'None'}, " - f"new_version={new_module.version}, " - f"new_hash={new_module.hash}, " - f"repo={new_module.repo}") - + + print( + f"::debug::Module={group_name}, old_version={old_module.version if old_module else 'None'}, " + f"old_hash={old_module.hash if old_module else 'None'}, " + f"new_version={new_module.version}, " + f"new_hash={new_module.hash}, " + f"repo={new_module.repo}" + ) + # Get identifiers and links old_identifier, old_link = get_identifier_and_link(old_module) - + # Check if hash changed hash_changed = old_module is None or old_module.hash != new_module.hash - + # Determine new identifier only if hash changed new_identifier, new_link = (None, "") if not hash_changed else get_identifier_and_link(new_module) - + # Format output if hash_changed: # Hash changed - show old -> new @@ -248,63 +258,62 @@ def format_commit_version_cell( def main(): """Main entry point.""" parser = argparse.ArgumentParser( - description='Integration build script for SCORE modules', - formatter_class=argparse.RawDescriptionHelpFormatter + description="Integration build script for SCORE modules", formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument( - '--known-good', + "--known-good", type=Path, default=None, - help='Path to known_good.json file (default: known_good.json in repo root)' + help="Path to known_good.json file (default: known_good.json in repo root)", ) parser.add_argument( - '--build-config', + "--build-config", type=Path, default=None, - help='Path to build_config.json file (default: build_config.json in repo root)' + help="Path to build_config.json file (default: build_config.json in repo root)", ) parser.add_argument( - '--config', - default=os.environ.get('CONFIG', 'x86_64-linux'), - help='Bazel config to use (default: x86_64-linux, or from CONFIG env var)' + "--config", + default=os.environ.get("CONFIG", "x86_64-linux"), + help="Bazel config to use (default: x86_64-linux, or from CONFIG env var)", ) - + args = parser.parse_args() - + # Configuration config = args.config - log_dir = Path(os.environ.get('LOG_DIR', '_logs/logs')) - summary_file = Path(os.environ.get('SUMMARY_FILE', f'_logs/build_summary-{config}.md')) - + log_dir = Path(os.environ.get("LOG_DIR", "_logs/logs")) + summary_file = Path(os.environ.get("SUMMARY_FILE", f"_logs/build_summary-{config}.md")) + known_good_file = args.known_good if not known_good_file: - known_good_file = repo_root / 'known_good.json' - + known_good_file = repo_root / "known_good.json" + build_config_file = args.build_config if not build_config_file: - build_config_file = repo_root / 'build_config.json' - + build_config_file = repo_root / "build_config.json" + # Load build configuration BUILD_TARGET_GROUPS = load_build_config(build_config_file) - + # Create log directory log_dir.mkdir(parents=True, exist_ok=True) summary_file.parent.mkdir(parents=True, exist_ok=True) - + # Load modules from known_good files try: - old_modules = load_known_good(Path('known_good.json')).modules if Path('known_good.json').exists() else {} + old_modules = load_known_good(Path("known_good.json")).modules if Path("known_good.json").exists() else {} except FileNotFoundError: old_modules = {} - + try: new_modules = load_known_good(known_good_file).modules if known_good_file else {} except FileNotFoundError as e: raise SystemExit(f"ERROR: {e}") - + # Start summary - timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - with open(summary_file, 'w') as f: + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + with open(summary_file, "w") as f: f.write(f"=== Integration Build Started {timestamp} ===\n") f.write(f"Config: {config}\n") if known_good_file: @@ -314,60 +323,60 @@ def main(): f.write("\n") f.write("| Group | Status | Duration (s) | Warnings | Deprecated refs | Commit/Version |\n") f.write("|-------|--------|--------------|----------|-----------------|----------------|\n") - + print(f"=== Integration Build Started {timestamp} ===") print(f"Config: {config}") if known_good_file: print(f"Known Good File: {known_good_file}") - + overall_warn_total = 0 overall_depr_total = 0 any_failed = False - + # Build each group for group_name, module_config in BUILD_TARGET_GROUPS.items(): log_file = log_dir / f"{group_name}-{config}.log" - + exit_code, duration = build_group(group_name, module_config.build_targets, config, log_file) - + if exit_code != 0: any_failed = True - + # Count warnings and deprecated - warn_count = count_pattern(log_file, 'warning:') - depr_count = count_pattern(log_file, 'deprecated') + warn_count = count_pattern(log_file, "warning:") + depr_count = count_pattern(log_file, "deprecated") overall_warn_total += warn_count overall_depr_total += depr_count - + # Format status status_symbol = "✅" if exit_code == 0 else f"❌({exit_code})" - + # Format commit/version cell commit_version_cell = format_commit_version_cell(group_name, old_modules, new_modules) - + # Append row to summary row = f"| {group_name} | {status_symbol} | {duration} | {warn_count} | {depr_count} | {commit_version_cell} |\n" - with open(summary_file, 'a') as f: + with open(summary_file, "a") as f: f.write(row) print(row.strip()) - + # Append totals - with open(summary_file, 'a') as f: + with open(summary_file, "a") as f: f.write(f"| TOTAL | | | {overall_warn_total} | {overall_depr_total} | |\n") - + # Print summary - print('::group::Build Summary') - print('=== Build Summary ===') - with open(summary_file, 'r') as f: + print("::group::Build Summary") + print("=== Build Summary ===") + with open(summary_file, "r") as f: for line in f: - print(line, end='') - print('::endgroup::') - + print(line, end="") + print("::endgroup::") + # Exit with error if any build failed if any_failed: print("::error::One or more build groups failed. See summary above.") sys.exit(1) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/scripts/known_good/__init__.py b/scripts/known_good/__init__.py index eac8e9d3f50..310987124be 100644 --- a/scripts/known_good/__init__.py +++ b/scripts/known_good/__init__.py @@ -1 +1,13 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Known good utilities package diff --git a/scripts/known_good/known_good_to_workspace_metadata.py b/scripts/known_good/known_good_to_workspace_metadata.py index 6c4cb93cea4..bb933c8dcca 100644 --- a/scripts/known_good/known_good_to_workspace_metadata.py +++ b/scripts/known_good/known_good_to_workspace_metadata.py @@ -1,24 +1,37 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* import argparse import csv from pathlib import Path from models.known_good import load_known_good -MODULES_CSV_HEADER = [ - "repo_url", - "name", - "workspace_path", - "version", - "hash", - "branch" -] +MODULES_CSV_HEADER = ["repo_url", "name", "workspace_path", "version", "hash", "branch"] + def main(): - parser = argparse.ArgumentParser(description="Convert known_good.json to workspace metadata files for gita and git submodules.") + parser = argparse.ArgumentParser( + description="Convert known_good.json to workspace metadata files for gita and git submodules." + ) parser.add_argument("--known-good", dest="known_good", default="known_good.json", help="Path to known_good.json") - parser.add_argument("--gita-workspace", dest="gita_workspace", default=".gita-workspace.csv", help="File to output gita workspace metadata") + parser.add_argument( + "--gita-workspace", + dest="gita_workspace", + default=".gita-workspace.csv", + help="File to output gita workspace metadata", + ) args = parser.parse_args() # Load known_good using KnownGood dataclass @@ -28,20 +41,20 @@ def main(): raise SystemExit(f"ERROR: {e}") except ValueError as e: raise SystemExit(f"ERROR: {e}") - + modules = list(known_good.modules.values()) - + gita_metadata = [] for module in modules: if not module.repo: raise RuntimeError(f"Module {module.name}: repo must not be empty") - + # if no hash is given, use branch hash_value = module.hash if module.hash else module.branch - + # workspace_path is not available in known_good.json, default to name of repository workspace_path = module.name - + # gita format: {url},{name},{path},{prop['type']},{repo_flags},{branch} row = [module.repo, module.name, workspace_path, "", "", hash_value] gita_metadata.append(row) @@ -51,5 +64,6 @@ def main(): for row in gita_metadata: writer.writerow(row) + if __name__ == "__main__": main() diff --git a/scripts/known_good/models/__init__.py b/scripts/known_good/models/__init__.py index c6600de5770..edf7659729d 100644 --- a/scripts/known_good/models/__init__.py +++ b/scripts/known_good/models/__init__.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """Models for score reference integration tools.""" from .module import Module, Metadata diff --git a/scripts/known_good/models/known_good.py b/scripts/known_good/models/known_good.py index a0ea9766550..48c6eaabecc 100644 --- a/scripts/known_good/models/known_good.py +++ b/scripts/known_good/models/known_good.py @@ -1,121 +1,127 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """KnownGood dataclass for score reference integration.""" from __future__ import annotations +import datetime as dt +import json from dataclasses import dataclass -from typing import Any, Dict from pathlib import Path -import json -import datetime as dt +from typing import Any, Dict from .module import Module @dataclass class KnownGood: - """Known good configuration with modules and metadata. - - Module structure: modules = {"group1": {"module1": Module}, "group2": {"module2": Module}} - """ - modules: Dict[str, Dict[str, Module]] - timestamp: str - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> KnownGood: - """Create a KnownGood instance from a dictionary. - - Expected structure: - {"modules": {"group1": {"score_baselibs": {...}}, "group2": {"score_logging": {...}}}} - - Args: - data: Dictionary containing known_good.json data - - Returns: - KnownGood instance - """ - modules_dict = data.get('modules', {}) - timestamp = data.get('timestamp', '') - - parsed_modules: Dict[str, Dict[str, Module]] = {} - for group_name, group_modules in modules_dict.items(): - if isinstance(group_modules, dict): - modules_list = Module.parse_modules(group_modules) - parsed_modules[group_name] = {m.name: m for m in modules_list} - - return cls(modules=parsed_modules, timestamp=timestamp) - - def to_dict(self) -> Dict[str, Any]: - """Convert KnownGood instance to dictionary for JSON output. - - Returns: - Dictionary with known_good configuration - """ - modules_output = { - group_name: {name: module.to_dict() for name, module in group_modules.items()} - for group_name, group_modules in self.modules.items() - } - - return { - "modules": modules_output, - "timestamp": self.timestamp - } - - def write(self, output_path: Path, dry_run: bool = False) -> None: - """Write known_good data to file or print for dry-run. - - Args: - output_path: Path to output file - dry_run: If True, print instead of writing - """ - - # Update timestamp before writing - self.timestamp = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" - - output_json = json.dumps(self.to_dict(), indent=4, sort_keys=False) + "\n" - - if dry_run: - print(f"\nDry run: would write to {output_path}\n") - print("---- BEGIN UPDATED JSON ----") - print(output_json, end="") - print("---- END UPDATED JSON ----") - else: - with open(output_path, "w", encoding="utf-8") as f: - f.write(output_json) - print(f"Successfully wrote updated known_good.json to {output_path}") + """Known good configuration with modules and metadata. + + Module structure: modules = {"group1": {"module1": Module}, "group2": {"module2": Module}} + """ + + modules: Dict[str, Dict[str, Module]] + timestamp: str + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> KnownGood: + """Create a KnownGood instance from a dictionary. + + Expected structure: + {"modules": {"group1": {"score_baselibs": {...}}, "group2": {"score_logging": {...}}}} + + Args: + data: Dictionary containing known_good.json data + + Returns: + KnownGood instance + """ + modules_dict = data.get("modules", {}) + timestamp = data.get("timestamp", "") + + parsed_modules: Dict[str, Dict[str, Module]] = {} + for group_name, group_modules in modules_dict.items(): + if isinstance(group_modules, dict): + modules_list = Module.parse_modules(group_modules) + parsed_modules[group_name] = {m.name: m for m in modules_list} + + return cls(modules=parsed_modules, timestamp=timestamp) + + def to_dict(self) -> Dict[str, Any]: + """Convert KnownGood instance to dictionary for JSON output. + + Returns: + Dictionary with known_good configuration + """ + modules_output = { + group_name: {name: module.to_dict() for name, module in group_modules.items()} + for group_name, group_modules in self.modules.items() + } + + return {"modules": modules_output, "timestamp": self.timestamp} + + def write(self, output_path: Path, dry_run: bool = False) -> None: + """Write known_good data to file or print for dry-run. + + Args: + output_path: Path to output file + dry_run: If True, print instead of writing + """ + + # Update timestamp before writing + self.timestamp = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" + + output_json = json.dumps(self.to_dict(), indent=4, sort_keys=False) + "\n" + + if dry_run: + print(f"\nDry run: would write to {output_path}\n") + print("---- BEGIN UPDATED JSON ----") + print(output_json, end="") + print("---- END UPDATED JSON ----") + else: + with open(output_path, "w", encoding="utf-8") as f: + f.write(output_json) + print(f"Successfully wrote updated known_good.json to {output_path}") def load_known_good(path: Path) -> KnownGood: - """Load and parse the known_good.json file. - - Args: - path: Path to known_good.json file - - Returns: - KnownGood instance with parsed modules - """ - - with open(path, "r", encoding="utf-8") as f: - text = f.read() - try: - data = json.loads(text) - except json.JSONDecodeError as e: - lines = text.splitlines() - line = lines[e.lineno - 1] if 0 <= e.lineno - 1 < len(lines) else "" - pointer = " " * (e.colno - 1) + "^" - - hint = "" - if "Expecting value" in e.msg: - hint = "Possible causes: trailing comma, missing value, or extra comma." - - raise ValueError( - f"Invalid JSON at line {e.lineno}, column {e.colno}\n" - f"{line}\n{pointer}\n" - f"{e.msg}. {hint}" - ) from None - - if not isinstance(data, dict) or not isinstance(data.get("modules"), dict): - raise ValueError( - f"Invalid known_good.json at {path} (expected object with 'modules' dict)" - ) - - return KnownGood.from_dict(data) + """Load and parse the known_good.json file. + + Args: + path: Path to known_good.json file + + Returns: + KnownGood instance with parsed modules + """ + + with open(path, "r", encoding="utf-8") as f: + text = f.read() + try: + data = json.loads(text) + except json.JSONDecodeError as e: + lines = text.splitlines() + line = lines[e.lineno - 1] if 0 <= e.lineno - 1 < len(lines) else "" + pointer = " " * (e.colno - 1) + "^" + + hint = "" + if "Expecting value" in e.msg: + hint = "Possible causes: trailing comma, missing value, or extra comma." + + raise ValueError( + f"Invalid JSON at line {e.lineno}, column {e.colno}\n{line}\n{pointer}\n{e.msg}. {hint}" + ) from None + + if not isinstance(data, dict) or not isinstance(data.get("modules"), dict): + raise ValueError(f"Invalid known_good.json at {path} (expected object with 'modules' dict)") + + return KnownGood.from_dict(data) diff --git a/scripts/known_good/models/module.py b/scripts/known_good/models/module.py index 0ba65add530..9fa266f91b9 100644 --- a/scripts/known_good/models/module.py +++ b/scripts/known_good/models/module.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """Module dataclass for score reference integration.""" from __future__ import annotations @@ -103,9 +115,7 @@ def from_dict(cls, name: str, module_data: Dict[str, Any]) -> Module: "Use either 'hash' (git_override) or 'version' (single_version_override), not both." ) # Support both 'bazel_patches' and legacy 'patches' keys - bazel_patches = module_data.get("bazel_patches") or module_data.get( - "patches", [] - ) + bazel_patches = module_data.get("bazel_patches") or module_data.get("patches", []) # Parse metadata - if not present or is None/empty dict, use defaults metadata_data = module_data.get("metadata") diff --git a/scripts/known_good/override_known_good_repo.py b/scripts/known_good/override_known_good_repo.py index 70a61ca06a5..218d360d0a3 100755 --- a/scripts/known_good/override_known_good_repo.py +++ b/scripts/known_good/override_known_good_repo.py @@ -1,4 +1,16 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """ Update a known_good.json file by pinning modules to specific commits. @@ -12,6 +24,7 @@ module commit pins. The output can then be used with update_module_from_known_good.py to generate the MODULE.bazel file. """ + import argparse import os import re @@ -24,43 +37,40 @@ from models.known_good import KnownGood, load_known_good # Configure logging -logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[str]) -> int: """ Parse repo override arguments and apply them to modules. - + Supports two formats: 1. module_name@hash (find repo from module) 2. module_name@repo_url@hash (explicit repo with module validation) - + Args: modules: Dictionary mapping module names to Module instances repo_overrides: List of override strings - + Returns: The number of overrides applied. """ - repo_url_pattern = re.compile(r'^https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git$') - hash_pattern = re.compile(r'^[a-fA-F0-9]{7,40}$') + repo_url_pattern = re.compile(r"^https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git$") + hash_pattern = re.compile(r"^[a-fA-F0-9]{7,40}$") overrides_applied = 0 - + # Parse and validate overrides for entry in repo_overrides: logging.info(f"Override registered: {entry}") parts = entry.split("@") - + if len(parts) == 2: # module_name@hash module_name, commit_hash = parts - + if not hash_pattern.match(commit_hash): - raise SystemExit( - f"Invalid commit hash in '{entry}': {commit_hash}\n" - "Expected 7-40 hex characters" - ) - + raise SystemExit(f"Invalid commit hash in '{entry}': {commit_hash}\nExpected 7-40 hex characters") + # Validate module exists if module_name not in modules: logging.warning( @@ -68,36 +78,30 @@ def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[s f"Available modules: {', '.join(sorted(modules.keys()))}" ) continue - + module = modules[module_name] old_value = module.version or module.hash - + if commit_hash == module.hash: - logging.info( - f"Module '{module_name}' already at specified commit {commit_hash}, no change needed" - ) + logging.info(f"Module '{module_name}' already at specified commit {commit_hash}, no change needed") else: module.hash = commit_hash module.version = None # Clear version when overriding hash logging.info(f"Applied override to {module_name}: {old_value} -> {commit_hash}") overrides_applied += 1 - + elif len(parts) == 3: # Format: module_name@repo_url@hash module_name, repo_url, commit_hash = parts - + if not hash_pattern.match(commit_hash): - raise SystemExit( - f"Invalid commit hash in '{entry}': {commit_hash}\n" - "Expected 7-40 hex characters" - ) - + raise SystemExit(f"Invalid commit hash in '{entry}': {commit_hash}\nExpected 7-40 hex characters") + if not repo_url_pattern.match(repo_url): raise SystemExit( - f"Invalid repo URL in '{entry}': {repo_url}\n" - "Expected format: https://github.com/org/repo.git" + f"Invalid repo URL in '{entry}': {repo_url}\nExpected format: https://github.com/org/repo.git" ) - + # Validate module exists if module_name not in modules: logging.warning( @@ -105,18 +109,18 @@ def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[s f"Available modules: {', '.join(sorted(modules.keys()))}" ) continue - + module = modules[module_name] old_value = module.version or module.hash - + if module.hash != commit_hash: module.hash = commit_hash module.version = None # Clear version when overriding hash - + module.repo = repo_url logging.info(f"Applied override to {module_name}: {old_value} -> {commit_hash} (repo: {repo_url})") overrides_applied += 1 - + else: raise SystemExit( f"Invalid override spec: {entry}\n" @@ -124,31 +128,31 @@ def parse_and_apply_overrides(modules: Dict[str, Module], repo_overrides: List[s " 1. module_name@commit_hash\n" " 2. module_name@repo_url@commit_hash\n" ) - + return overrides_applied def apply_overrides(known_good: KnownGood, repo_overrides: List[str]) -> KnownGood: """Apply repository commit overrides to the known_good data. - + Args: known_good: KnownGood instance to modify repo_overrides: List of override strings - + Returns: Updated KnownGood instance """ # Parse and apply overrides overrides_applied = parse_and_apply_overrides(known_good.modules, repo_overrides) - + if overrides_applied == 0: logging.warning("No overrides were applied to any modules") else: logging.info(f"Successfully applied {overrides_applied} override(s)") - + # Update timestamp known_good.timestamp = dt.datetime.now(dt.timezone.utc).replace(microsecond=0).isoformat() + "Z" - + return known_good @@ -176,18 +180,16 @@ def main() -> None: --output known_good.updated.json \ --module-override score_baselibs@abc123 \ --module-override score_communication@def456 - """ + """, ) - + parser.add_argument( - "--known", - default="known_good.json", - help="Path to input known_good.json file (default: known_good.json)" + "--known", default="known_good.json", help="Path to input known_good.json file (default: known_good.json)" ) parser.add_argument( "--output", default="known_good.updated.json", - help="Path to output JSON file (default: known_good.updated.json)" + help="Path to output JSON file (default: known_good.updated.json)", ) parser.add_argument( "--module-override", @@ -199,25 +201,17 @@ def main() -> None: "module_name@repo_url@hash. Can be specified multiple times." ), ) - parser.add_argument( - "--dry-run", - action="store_true", - help="Print the result instead of writing to file" - ) - parser.add_argument( - "-v", "--verbose", - action="store_true", - help="Enable verbose logging" - ) - + parser.add_argument("--dry-run", action="store_true", help="Print the result instead of writing to file") + parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose logging") + args = parser.parse_args() - + if args.verbose: logging.getLogger().setLevel(logging.DEBUG) - + known_path = os.path.abspath(args.known) output_path = os.path.abspath(args.output) - + # Load, update, and output logging.info(f"Loading {known_path}") try: @@ -226,7 +220,7 @@ def main() -> None: raise SystemExit(f"ERROR: {e}") except ValueError as e: raise SystemExit(f"ERROR: {e}") - + if not args.module_overrides: parser.error("at least one --module-override is required") diff --git a/scripts/known_good/update_module_from_known_good.py b/scripts/known_good/update_module_from_known_good.py index 7812347cd24..e6c82fe3cb3 100755 --- a/scripts/known_good/update_module_from_known_good.py +++ b/scripts/known_good/update_module_from_known_good.py @@ -1,4 +1,16 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """ Read a known_good.json file and generate a score_modules.MODULE.bazel file with `bazel_dep` and `git_override` calls for each module in the JSON. @@ -30,9 +42,7 @@ logging.basicConfig(level=logging.WARNING, format="%(levelname)s: %(message)s") -def generate_git_override_blocks( - modules: List[Module], repo_commit_dict: Dict[str, str] -) -> List[str]: +def generate_git_override_blocks(modules: List[Module], repo_commit_dict: Dict[str, str]) -> List[str]: """Generate bazel_dep and git_override blocks for each module.""" blocks = [] @@ -49,7 +59,8 @@ def generate_git_override_blocks( patches_lines = " patches = [\n" for patch in module.bazel_patches: patches_lines += f' "{patch}",\n' - patches_lines += " ],\n patch_strip = 1,\n" + patches_lines += " ],\n" + patch_strip_line = " patch_strip = 1,\n" if patches_lines else "" if module.version: # If version is provided, use bazel_dep with single_version_override @@ -57,8 +68,9 @@ def generate_git_override_blocks( f'bazel_dep(name = "{module.name}")\n' "single_version_override(\n" f' module_name = "{module.name}",\n' - f' version = "{module.version}",\n' + f"{patch_strip_line}" f"{patches_lines}" + f' version = "{module.version}",\n' ")\n" ) else: @@ -81,16 +93,17 @@ def generate_git_override_blocks( continue # If no version, use bazel_dep with git_override + # Only include patch_strip if there are patches to apply block = ( f'bazel_dep(name = "{module.name}")\n' "git_override(\n" f' module_name = "{module.name}",\n' - f' remote = "{module.repo}",\n' f' commit = "{commit}",\n' + f"{patch_strip_line}" f"{patches_lines}" + f' remote = "{module.repo}",\n' ")\n" ) - blocks.append(block) return blocks @@ -116,14 +129,16 @@ def generate_local_override_blocks(modules: List[Module]) -> List[str]: def generate_coverage_blocks(modules: List[Module]) -> List[str]: """Generate rust_coverage_report blocks for each module with rust impl.""" - blocks = ["""load("@score_tooling//:defs.bzl", "rust_coverage_report")\n\n"""] + blocks = ["""load("@score_tooling//:defs.bzl", "rust_coverage_report")"""] for module in modules: if "rust" not in module.metadata.langs: continue if module.metadata.exclude_test_targets: - excluded_tests = f" {' '.join([f'-@{module.name}{target}' for target in module.metadata.exclude_test_targets])}" + excluded_tests = ( + f" {' '.join([f'-@{module.name}{target}' for target in module.metadata.exclude_test_targets])}" + ) else: excluded_tests = "" @@ -136,11 +151,10 @@ def generate_coverage_blocks(modules: List[Module]) -> List[str]: ], query = 'kind("rust_test", @{module.name}{module.metadata.code_root_path}){excluded_tests}', visibility = ["//visibility:public"], -) - """ +)""" blocks.append(block) - + blocks.append("") # Add final newline return blocks @@ -179,10 +193,7 @@ def generate_file_content( if args.override_type == "git": blocks = generate_git_override_blocks(modules, repo_commit_dict) else: - header += ( - "# Note: This file uses local_path overrides. Ensure that local paths are set up correctly.\n" - "\n" - ) + header += "# Note: This file uses local_path overrides. Ensure that local paths are set up correctly.\n\n" blocks = generate_local_override_blocks(modules) elif file_type == "build": blocks = generate_coverage_blocks(modules) @@ -240,9 +251,7 @@ def main() -> None: action="store_true", help="Print generated content instead of writing to file", ) - parser.add_argument( - "-v", "--verbose", action="store_true", help="Enable verbose logging" - ) + parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose logging") parser.add_argument( "--repo-override", action="append", @@ -268,9 +277,7 @@ def main() -> None: # Parse repo overrides repo_commit_dict = {} if args.repo_override: - repo_pattern = re.compile( - r"https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git@[a-fA-F0-9]{7,40}$" - ) + repo_pattern = re.compile(r"https://[a-zA-Z0-9.-]+/[a-zA-Z0-9._/-]+\.git@[a-fA-F0-9]{7,40}$") for entry in args.repo_override: if not repo_pattern.match(entry): raise SystemExit( @@ -321,34 +328,26 @@ def main() -> None: print("---- BEGIN GENERATED CONTENT FOR MODULE ----") print(content_module) print("---- END GENERATED CONTENT FOR MODULE ----") - print( - f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'" - ) + print(f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'") else: with open(output_path_modules, "w", encoding="utf-8") as f: f.write(content_module) generated_files.append(output_path_modules) total_module_count += len(modules) - print( - f"Generated {output_path_modules} with {len(modules)} {args.override_type}_override entries" - ) + print(f"Generated {output_path_modules} with {len(modules)} {args.override_type}_override entries") # Generate file content of BUILD coverage files if "target_sw" not in group_name: continue # Only generate coverage for software modules - content_build = generate_file_content( - args, modules, repo_commit_dict, known_good.timestamp, file_type="build" - ) + content_build = generate_file_content(args, modules, repo_commit_dict, known_good.timestamp, file_type="build") if args.dry_run: print(f"\nDry run: would write to {output_path_coverage}\n") print("---- BEGIN GENERATED CONTENT FOR BUILD ----") print(content_build) print("---- END GENERATED CONTENT FOR BUILD ----") - print( - f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'" - ) + print(f"\nGenerated {len(modules)} {args.override_type}_override entries for group '{group_name}'") else: with open(output_path_coverage, "w", encoding="utf-8") as f: f.write(content_build) @@ -356,9 +355,7 @@ def main() -> None: print(f"Generated {output_path_coverage}") if not args.dry_run and generated_files: - print( - f"\nSuccessfully generated {len(generated_files)} file(s) with {total_module_count} total modules" - ) + print(f"\nSuccessfully generated {len(generated_files)} file(s) with {total_module_count} total modules") if __name__ == "__main__": diff --git a/scripts/known_good/update_module_latest.py b/scripts/known_good/update_module_latest.py index d5184bd2f03..33e238c4f17 100755 --- a/scripts/known_good/update_module_latest.py +++ b/scripts/known_good/update_module_latest.py @@ -1,4 +1,16 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """Update module commit hashes to latest on a given branch. Reads a known_good.json file containing a list of modules with keys: @@ -35,144 +47,150 @@ from models.known_good import load_known_good try: - from github import Github, GithubException - HAS_PYGITHUB = True + from github import Github, GithubException + + HAS_PYGITHUB = True except ImportError: - HAS_PYGITHUB = False - Github = None - GithubException = None + HAS_PYGITHUB = False + Github = None + GithubException = None def fetch_latest_commit(owner_repo: str, branch: str, token: str | None) -> str: - """Fetch latest commit sha for given owner_repo & branch using PyGithub.""" - if not HAS_PYGITHUB: - raise RuntimeError("PyGithub not installed. Install it with: pip install PyGithub") - try: - gh = Github(token) if token else Github() - repo = gh.get_repo(owner_repo) - branch_obj = repo.get_branch(branch) - return branch_obj.commit.sha - except GithubException as e: - raise RuntimeError(f"GitHub API error for {owner_repo}:{branch} - {e.status}: {e.data.get('message', str(e))}") from e - except Exception as e: - raise RuntimeError(f"Error fetching {owner_repo}:{branch} - {e}") from e + """Fetch latest commit sha for given owner_repo & branch using PyGithub.""" + if not HAS_PYGITHUB: + raise RuntimeError("PyGithub not installed. Install it with: pip install PyGithub") + try: + gh = Github(token) if token else Github() + repo = gh.get_repo(owner_repo) + branch_obj = repo.get_branch(branch) + return branch_obj.commit.sha + except GithubException as e: + raise RuntimeError( + f"GitHub API error for {owner_repo}:{branch} - {e.status}: {e.data.get('message', str(e))}" + ) from e + except Exception as e: + raise RuntimeError(f"Error fetching {owner_repo}:{branch} - {e}") from e def fetch_latest_commit_gh(owner_repo: str, branch: str) -> str: - """Fetch latest commit using GitHub CLI 'gh' if installed. - - Uses: gh api repos/{owner_repo}/branches/{branch} --jq .commit.sha - Raises RuntimeError on failure. - """ - if not shutil.which("gh"): - raise RuntimeError("'gh' CLI not found in PATH") - cmd = [ - "gh", - "api", - f"repos/{owner_repo}/branches/{branch}", - "--jq", - ".commit.sha", - ] - try: - res = subprocess.run(cmd, check=True, capture_output=True, text=True, timeout=30) - except subprocess.CalledProcessError as e: - raise RuntimeError(f"gh api failed: {e.stderr.strip() or e}") from e - sha = res.stdout.strip() - if not sha: - raise RuntimeError("Empty sha returned by gh") - return sha + """Fetch latest commit using GitHub CLI 'gh' if installed. + + Uses: gh api repos/{owner_repo}/branches/{branch} --jq .commit.sha + Raises RuntimeError on failure. + """ + if not shutil.which("gh"): + raise RuntimeError("'gh' CLI not found in PATH") + cmd = [ + "gh", + "api", + f"repos/{owner_repo}/branches/{branch}", + "--jq", + ".commit.sha", + ] + try: + res = subprocess.run(cmd, check=True, capture_output=True, text=True, timeout=30) + except subprocess.CalledProcessError as e: + raise RuntimeError(f"gh api failed: {e.stderr.strip() or e}") from e + sha = res.stdout.strip() + if not sha: + raise RuntimeError("Empty sha returned by gh") + return sha def parse_args(argv: list[str]) -> argparse.Namespace: - p = argparse.ArgumentParser(description="Update module hashes to latest commit on branch") - p.add_argument( - "--known-good", - default="known_good.json", - help="Path to known_good.json file (default: known_good.json in CWD)", - ) - p.add_argument("--branch", default="main", help="Git branch to fetch latest commits from (default: main)") - p.add_argument("--output", help="Optional output path to write updated JSON") - p.add_argument("--fail-fast", action="store_true", help="Stop on first failure instead of continuing") - p.add_argument("--no-gh", action="store_true", help="Disable GitHub CLI usage even if installed; fall back to HTTP API; GITHUB_TOKEN has to be known in the environment") - return p.parse_args(argv) + p = argparse.ArgumentParser(description="Update module hashes to latest commit on branch") + p.add_argument( + "--known-good", + default="known_good.json", + help="Path to known_good.json file (default: known_good.json in CWD)", + ) + p.add_argument("--branch", default="main", help="Git branch to fetch latest commits from (default: main)") + p.add_argument("--output", help="Optional output path to write updated JSON") + p.add_argument("--fail-fast", action="store_true", help="Stop on first failure instead of continuing") + p.add_argument( + "--no-gh", + action="store_true", + help="Disable GitHub CLI usage even if installed; fall back to HTTP API; GITHUB_TOKEN has to be known in the environment", + ) + return p.parse_args(argv) def main(argv: list[str]) -> int: - args = parse_args(argv) - try: - known_good = load_known_good(Path(args.known_good)) - except FileNotFoundError as e: - print(f"ERROR: {e}", file=sys.stderr) - return 3 - except ValueError as e: - print(f"ERROR: {e}", file=sys.stderr) - return 3 - except json.JSONDecodeError as e: - print(f"ERROR: Invalid JSON syntax: {e}", file=sys.stderr) - return 3 - - if not known_good.modules: - print("ERROR: No modules found to update.", file=sys.stderr) - return 3 - - token = os.environ.get("GITHUB_TOKEN") - failures = 0 - # Default: use gh if available unless --no-gh specified - use_gh = (not args.no_gh) and shutil.which("gh") is not None - - # If PyGithub is not available and gh CLI is not available, error out - if not use_gh and not HAS_PYGITHUB: - print("ERROR: Neither 'gh' CLI nor PyGithub library found.", file=sys.stderr) - print("Please install PyGithub (pip install PyGithub) or install GitHub CLI.", file=sys.stderr) - return 3 - - if not args.no_gh and not use_gh: - print("INFO: 'gh' CLI not found; using direct GitHub API", file=sys.stderr) - if args.no_gh and shutil.which("gh") is not None: - print("INFO: --no-gh specified; ignoring installed 'gh' CLI", file=sys.stderr) - - for mod in known_good.modules.values(): - if mod.pin_version: - print(f"{mod.name}: pinned, skipping") - continue - - try: - branch = mod.branch if mod.branch else args.branch - if use_gh: - latest = fetch_latest_commit_gh(mod.owner_repo, branch) - else: - latest = fetch_latest_commit(mod.owner_repo, branch, token) - - old_hash = mod.hash - if latest != old_hash: - mod.hash = latest - mod.version = None # Clear version when hash changes - if mod.version: - print(f"{mod.name}: {mod.version} -> {latest[:8]} (branch {branch})") - else: - print(f"{mod.name}: {old_hash[:8]} -> {latest[:8]} (branch {branch})") - else: - print(f"{mod.name}: {old_hash[:8]} (no update)") - except Exception as e: # noqa: BLE001 - failures += 1 - print(f"ERROR {mod.name}: {e}", file=sys.stderr) - if args.fail_fast: - break - - if args.output: - try: - known_good.write(Path(args.output)) - print(f"Updated JSON written to {args.output}") - except OSError as e: - print(f"ERROR: Failed writing output file: {e}", file=sys.stderr) - return 3 - - if failures: - print(f"Completed with {failures} failure(s).", file=sys.stderr) - return 2 - return 0 + args = parse_args(argv) + try: + known_good = load_known_good(Path(args.known_good)) + except FileNotFoundError as e: + print(f"ERROR: {e}", file=sys.stderr) + return 3 + except ValueError as e: + print(f"ERROR: {e}", file=sys.stderr) + return 3 + except json.JSONDecodeError as e: + print(f"ERROR: Invalid JSON syntax: {e}", file=sys.stderr) + return 3 + + if not known_good.modules: + print("ERROR: No modules found to update.", file=sys.stderr) + return 3 + + token = os.environ.get("GITHUB_TOKEN") + failures = 0 + # Default: use gh if available unless --no-gh specified + use_gh = (not args.no_gh) and shutil.which("gh") is not None + + # If PyGithub is not available and gh CLI is not available, error out + if not use_gh and not HAS_PYGITHUB: + print("ERROR: Neither 'gh' CLI nor PyGithub library found.", file=sys.stderr) + print("Please install PyGithub (pip install PyGithub) or install GitHub CLI.", file=sys.stderr) + return 3 + + if not args.no_gh and not use_gh: + print("INFO: 'gh' CLI not found; using direct GitHub API", file=sys.stderr) + if args.no_gh and shutil.which("gh") is not None: + print("INFO: --no-gh specified; ignoring installed 'gh' CLI", file=sys.stderr) + + for mod in known_good.modules.values(): + if mod.pin_version: + print(f"{mod.name}: pinned, skipping") + continue + + try: + branch = mod.branch if mod.branch else args.branch + if use_gh: + latest = fetch_latest_commit_gh(mod.owner_repo, branch) + else: + latest = fetch_latest_commit(mod.owner_repo, branch, token) + + old_hash = mod.hash + if latest != old_hash: + mod.hash = latest + mod.version = None # Clear version when hash changes + if mod.version: + print(f"{mod.name}: {mod.version} -> {latest[:8]} (branch {branch})") + else: + print(f"{mod.name}: {old_hash[:8]} -> {latest[:8]} (branch {branch})") + else: + print(f"{mod.name}: {old_hash[:8]} (no update)") + except Exception as e: # noqa: BLE001 + failures += 1 + print(f"ERROR {mod.name}: {e}", file=sys.stderr) + if args.fail_fast: + break + + if args.output: + try: + known_good.write(Path(args.output)) + print(f"Updated JSON written to {args.output}") + except OSError as e: + print(f"ERROR: Failed writing output file: {e}", file=sys.stderr) + return 3 + + if failures: + print(f"Completed with {failures} failure(s).", file=sys.stderr) + return 2 + return 0 if __name__ == "__main__": # pragma: no cover - sys.exit(main(sys.argv[1:])) - + sys.exit(main(sys.argv[1:])) diff --git a/scripts/models/__init__.py b/scripts/models/__init__.py index f3d9f4b1ed5..4efac1919aa 100644 --- a/scripts/models/__init__.py +++ b/scripts/models/__init__.py @@ -1 +1,13 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # Models package diff --git a/scripts/models/build_config.py b/scripts/models/build_config.py index b7975f6be81..540172a6262 100644 --- a/scripts/models/build_config.py +++ b/scripts/models/build_config.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* """Build configuration management for SCORE modules.""" import json @@ -9,6 +21,7 @@ @dataclass class BuildModuleConfig: """Configuration for a build module.""" + name: str build_targets: str test_targets: Optional[str] = None @@ -16,25 +29,23 @@ class BuildModuleConfig: def load_build_config(config_path: Path) -> Dict[str, BuildModuleConfig]: """Load build configuration from JSON file. - + Args: config_path: Path to build_config.json file - + Returns: Dictionary mapping module names to BuildModuleConfig instances """ if not config_path.exists(): raise FileNotFoundError(f"Build config file not found: {config_path}") - - with open(config_path, 'r') as f: + + with open(config_path, "r") as f: data = json.load(f) - - modules = data.get('modules', {}) + + modules = data.get("modules", {}) return { name: BuildModuleConfig( - name=name, - build_targets=module_data.get('build_targets', ''), - test_targets=module_data.get('test_targets') + name=name, build_targets=module_data.get("build_targets", ""), test_targets=module_data.get("test_targets") ) for name, module_data in modules.items() } diff --git a/scripts/publish_integration_summary.py b/scripts/publish_integration_summary.py index c67d9bdd869..09baab39f65 100644 --- a/scripts/publish_integration_summary.py +++ b/scripts/publish_integration_summary.py @@ -1,4 +1,16 @@ #!/usr/bin/env python3 +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* import argparse import os import sys diff --git a/scripts/quality_runners.py b/scripts/quality_runners.py index 2f37818ce0b..c5c7bf704f8 100644 --- a/scripts/quality_runners.py +++ b/scripts/quality_runners.py @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* import argparse import re import select @@ -79,12 +91,8 @@ def cpp_coverage(module: Module, artifact_dir: Path) -> ProcessResult: output_dir = artifact_dir / "cpp" / module.name output_dir.mkdir(parents=True, exist_ok=True) # Find input locations - bazel_coverage_output_directory = run_command( - ["bazel", "info", "output_path"] - ).stdout.strip() - bazel_source_directory = run_command( - ["bazel", "info", "output_base"] - ).stdout.strip() + bazel_coverage_output_directory = run_command(["bazel", "info", "output_path"]).stdout.strip() + bazel_source_directory = run_command(["bazel", "info", "output_base"]).stdout.strip() genhtml_call = [ "genhtml", @@ -132,11 +140,7 @@ def generate_markdown_report( # Build rows rows = [] for name, stats in data.items(): - rows.append( - "| " - + " | ".join([name] + [str(stats.get(col, "")) for col in columns[1:]]) - + " |" - ) + rows.append("| " + " | ".join([name] + [str(stats.get(col, "")) for col in columns[1:]]) + " |") md = "\n".join([title, header, separator] + rows + [""]) output_path.write_text(md) @@ -246,9 +250,7 @@ def run_command(command: list[str], **kwargs) -> ProcessResult: p.wait() raise - return ProcessResult( - stdout="".join(stdout_data), stderr="".join(stderr_data), exit_code=exit_code - ) + return ProcessResult(stdout="".join(stdout_data), stderr="".join(stderr_data), exit_code=exit_code) def parse_arguments() -> argparse.Namespace: @@ -286,9 +288,7 @@ def main() -> bool: unit_tests_summary, coverage_summary = {}, {} if args.modules_to_test: - print_centered( - f"QR: User requested tests only for specified modules: {', '.join(args.modules_to_test)}" - ) + print_centered(f"QR: User requested tests only for specified modules: {', '.join(args.modules_to_test)}") for module in known.modules["target_sw"].values(): if args.modules_to_test and module.name not in args.modules_to_test: @@ -309,9 +309,7 @@ def main() -> bool: "score_orchestrator", ] # Known issues with coverage extraction for these modules, mostly proc_macro if module.name in DISABLED_RUST_COVERAGE: - print_centered( - f"QR: Skipping rust coverage extraction for module {module.name} due to known issues" - ) + print_centered(f"QR: Skipping rust coverage extraction for module {module.name} due to known issues") continue coverage_summary[f"{module.name}_rust"] = run_rust_coverage_extraction( module=module, output_path=args.coverage_output_dir @@ -340,9 +338,7 @@ def main() -> bool: # Check all exit codes and return non-zero if any test or coverage extraction failed return any( result_ut["exit_code"] != 0 or result_cov["exit_code"] != 0 - for result_ut, result_cov in zip( - unit_tests_summary.values(), coverage_summary.values() - ) + for result_ut, result_cov in zip(unit_tests_summary.values(), coverage_summary.values()) ) diff --git a/scripts/workflow/checkout_repos.sh b/scripts/workflow/checkout_repos.sh new file mode 100755 index 00000000000..d70cce8bc08 --- /dev/null +++ b/scripts/workflow/checkout_repos.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +# jq is already installed by the previous step. + +# Read repositories from the repos.json file created by the previous step +repos=$(cat repos.json) +repo_count=$(echo "$repos" | jq length) +# Initialize an empty string for paths to be outputted +repo_paths_output="" +for i in $(seq 0 $((repo_count-1))); do + name=$(echo "$repos" | jq -r ".[$i].name") + url=$(echo "$repos" | jq -r ".[$i].url") + ref=$(echo "$repos" | jq -r ".[$i].version") # This can be a branch, tag, or commit hash + path=$(echo "$repos" | jq -r ".[$i].path") # e.g., "repos/score_baselibs" + echo "Checking out $name ($ref) to $path" + # Create the parent directory if it doesn't exist + mkdir -p "$(dirname "$path")" + # Check if 'ref' looks like a commit hash (e.g., 40 hex characters) + # This is a heuristic; a more robust check might involve fetching refs first. + if [[ "$ref" =~ ^[0-9a-fA-F]{40}$ ]]; then + echo " Detected commit hash. Cloning and then checking out." + git clone "$url" "$path" + (cd "$path" && git checkout "$ref") + else + echo " Detected branch/tag. Cloning with --branch." + git clone --depth 1 --branch v"$ref" "$url" "$path" + fi + # Append the path to the list, separated by commas + if [ -z "$repo_paths_output" ]; then + repo_paths_output="$path" + else + repo_paths_output="$repo_paths_output,$path" + fi +done +# Output all paths as a single variable +echo "repo_paths=$repo_paths_output" >> $GITHUB_OUTPUT diff --git a/scripts/workflow/parse_repos.sh b/scripts/workflow/parse_repos.sh new file mode 100755 index 00000000000..71c50737a5e --- /dev/null +++ b/scripts/workflow/parse_repos.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +sudo apt-get update && sudo apt-get install -y jq +JSON_FILE="./known_good.json" +# Check if the file exists +if [ ! -f "$JSON_FILE" ]; then + echo "Error file not found '$JSON_FILE' " + ls -la . + exit 1 +fi +# Create repos.json from known_good.json +# This jq command transforms the 'modules' object into an array of repository objects +# with 'name', 'url', 'version' (branch/tag/hash), and 'path'. +jq '[.modules.target_sw | to_entries[] | { + name: .key, + url: .value.repo, + version: (.value.branch // .value.hash // .value.version), + path: ("repos/" + .key) +}]' "$JSON_FILE" > repos.json +echo "Generated repos.json:" +cat repos.json +echo "" # Add a newline for better readability +# The following GITHUB_OUTPUT variables are set for each module. +# These might be useful for other steps, but are not directly used by the 'checkout-repos' step +# which now reads 'repos.json' directly. +echo "MODULE_COUNT=$(jq '.modules.target_sw | length' "$JSON_FILE")" >> $GITHUB_OUTPUT +jq -c '.modules.target_sw | to_entries[]' "$JSON_FILE" | while read -r module_entry; do + module_name=$(echo "$module_entry" | jq -r '.key') + repo_url=$(echo "$module_entry" | jq -r '.value.repo // empty') + version=$(echo "$module_entry" | jq -r '.value.version // empty') + branch=$(echo "$module_entry" | jq -r '.value.branch // empty') + hash=$(echo "$module_entry" | jq -r '.value.hash // empty') + echo "${module_name}_url=$repo_url" >> $GITHUB_OUTPUT + if [ -n "$version" ]; then + echo "${module_name}_version=$version" >> $GITHUB_OUTPUT + fi + if [ -n "$branch" ]; then + echo "${module_name}_branch=$branch" >> $GITHUB_OUTPUT + fi + if [ -n "$hash" ]; then + echo "${module_name}_hash=$hash" >> $GITHUB_OUTPUT + fi +done diff --git a/scripts/workflow/recategorize_guidelines.sh b/scripts/workflow/recategorize_guidelines.sh new file mode 100755 index 00000000000..8fa4b736020 --- /dev/null +++ b/scripts/workflow/recategorize_guidelines.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +RECATEGORIZE_SCRIPT="codeql-coding-standards-repo/scripts/guideline_recategorization/recategorize.py" +CODING_STANDARDS_CONFIG="./.github/codeql/coding-standards.yml" +CODING_STANDARDS_SCHEMA="codeql-coding-standards-repo/schemas/coding-standards-schema-1.0.0.json" +SARIF_SCHEMA="codeql-coding-standards-repo/schemas/sarif-schema-2.1.0.json" +SARIF_FILE="sarif-results/cpp.sarif" +mkdir -p sarif-results-recategorized +echo "Processing $SARIF_FILE for recategorization..." +python3 "$RECATEGORIZE_SCRIPT" \ + --coding-standards-schema-file "$CODING_STANDARDS_SCHEMA" \ + --sarif-schema-file "$SARIF_SCHEMA" \ + "$CODING_STANDARDS_CONFIG" \ + "$SARIF_FILE" \ + "sarif-results-recategorized/$(basename "$SARIF_FILE")" + rm "$SARIF_FILE" + mv "sarif-results-recategorized/$(basename "$SARIF_FILE")" "$SARIF_FILE" diff --git a/showcases/BUILD b/showcases/BUILD index 01395893a62..3fd3cd19ab0 100644 --- a/showcases/BUILD +++ b/showcases/BUILD @@ -14,14 +14,11 @@ load("//bazel_common:bundlers.bzl", "score_pkg_bundle") score_pkg_bundle( name = "showcases_all", - bins = ["//showcases/cli" ], + bins = ["//showcases/cli"], other_package_files = [ "//showcases/standalone:comm_pkg_files", "//showcases/standalone:kyron_pkg_files", "//showcases/orchestration_persistency:orch_per_pkg_files", "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", ], - ) - - diff --git a/showcases/cli/BUILD b/showcases/cli/BUILD index 3a516cdd7c6..bb2eed8ce41 100644 --- a/showcases/cli/BUILD +++ b/showcases/cli/BUILD @@ -16,12 +16,12 @@ load("@rules_rust//rust:defs.bzl", "rust_binary") rust_binary( name = "cli", srcs = ["main.rs"], + visibility = ["//visibility:public"], deps = [ + "@score_crates//:anyhow", "@score_crates//:clap", "@score_crates//:cliclack", "@score_crates//:serde", "@score_crates//:serde_json", - "@score_crates//:anyhow", ], - visibility = ["//visibility:public"], -) \ No newline at end of file +) diff --git a/showcases/cli/main.rs b/showcases/cli/main.rs index 3b8fdc273b8..55cfa62224b 100644 --- a/showcases/cli/main.rs +++ b/showcases/cli/main.rs @@ -1,3 +1,15 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* use anyhow::{Context, Result}; use clap::Parser; use serde::Deserialize; @@ -94,11 +106,7 @@ fn main() -> Result<()> { anyhow::bail!( "No examples found matching: {}. Available examples: {}", examples_str, - configs - .iter() - .map(|c| c.name.as_str()) - .collect::>() - .join(", ") + configs.iter().map(|c| c.name.as_str()).collect::>().join(", ") ); } @@ -121,9 +129,10 @@ fn main() -> Result<()> { .map(|(i, c)| (i, c.name.clone(), c.description.clone())) .collect(); - let selected: Vec = multiselect("Select examples to run (use space to select (multiselect supported), enter to run examples):") - .items(&options) - .interact()?; + let selected: Vec = + multiselect("Select examples to run (use space to select (multiselect supported), enter to run examples):") + .items(&options) + .interact()?; if selected.is_empty() { outro("No examples selected. Goodbye!")?; @@ -157,17 +166,16 @@ fn visit_dir(dir: &Path, configs: &mut Vec) -> Result<()> { } if is_score_file(&path) { - let content = - fs::read_to_string(&path).with_context(|| format!("Failed reading {:?}", path))?; - let value: serde_json::Value = serde_json::from_str(&content) - .with_context(|| format!("Invalid JSON in {:?}", path))?; + let content = fs::read_to_string(&path).with_context(|| format!("Failed reading {:?}", path))?; + let value: serde_json::Value = + serde_json::from_str(&content).with_context(|| format!("Invalid JSON in {:?}", path))?; if value.is_array() { - let found: Vec = serde_json::from_value(value) - .with_context(|| format!("Invalid JSON array in {:?}", path))?; + let found: Vec = + serde_json::from_value(value).with_context(|| format!("Invalid JSON array in {:?}", path))?; configs.extend(found); } else { - let config: ScoreConfig = serde_json::from_value(value) - .with_context(|| format!("Invalid JSON in {:?}", path))?; + let config: ScoreConfig = + serde_json::from_value(value).with_context(|| format!("Invalid JSON in {:?}", path))?; configs.push(config); } } diff --git a/showcases/orchestration_persistency/BUILD b/showcases/orchestration_persistency/BUILD index 5343c8808e1..b4a8117f09b 100644 --- a/showcases/orchestration_persistency/BUILD +++ b/showcases/orchestration_persistency/BUILD @@ -19,14 +19,14 @@ exports_files(["orch_per.score.json"]) rust_binary( name = "orch_per_example", srcs = ["main.rs"], + visibility = ["//visibility:public"], deps = [ "@score_kyron//src/kyron:libkyron", "@score_kyron//src/kyron-foundation:libkyron_foundation", - "@score_orchestrator//src/orchestration:liborchestration", "@score_kyron//src/logging_tracing:liblogging_tracing", - "@score_persistency//src/rust/rust_kvs:rust_kvs", + "@score_orchestrator//src/orchestration:liborchestration", + "@score_persistency//src/rust/rust_kvs", ], - visibility = ["//visibility:public"], ) score_pkg_bundle( @@ -34,4 +34,3 @@ score_pkg_bundle( bins = [":orch_per_example"], config_data = ["//showcases/orchestration_persistency:orch_per.score.json"], ) - diff --git a/showcases/orchestration_persistency/main.rs b/showcases/orchestration_persistency/main.rs index f9bf6446005..995e125c300 100644 --- a/showcases/orchestration_persistency/main.rs +++ b/showcases/orchestration_persistency/main.rs @@ -1,5 +1,5 @@ -// -// Copyright (c) 2025 Contributors to the Eclipse Foundation +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation // // See the NOTICE file(s) distributed with this work for additional // information regarding copyright ownership. @@ -9,7 +9,7 @@ // // // SPDX-License-Identifier: Apache-2.0 -// +// ******************************************************************************* use std::path::PathBuf; use std::time::Duration; @@ -18,9 +18,7 @@ use kyron::runtime::*; use kyron_foundation::prelude::*; use logging_tracing::LogAndTraceBuilder; use orchestration::{ - actions::{ - invoke::Invoke, sequence::SequenceBuilder, sync::SyncBuilder, trigger::TriggerBuilder, - }, + actions::{invoke::Invoke, sequence::SequenceBuilder, sync::SyncBuilder, trigger::TriggerBuilder}, api::{design::Design, Orchestration}, common::DesignConfig, prelude::InvokeResult, @@ -58,13 +56,11 @@ async fn on_shutdown() -> InvokeResult { // Instance ID for KVS object instances. let instance_id = InstanceId(0); - + // Configure backend with directory path (workaround: KvsBuilder::dir() not available in Rust) // change back to dir, if https://github.com/eclipse-score/persistency/issues/222 is resolved. - let backend = JsonBackendBuilder::new() - .working_dir(PathBuf::from("/tmp")) - .build(); - + let backend = JsonBackendBuilder::new().working_dir(PathBuf::from("/tmp")).build(); + let builder = KvsBuilder::new(instance_id) .backend(Box::new(backend)) .kvs_load(KvsLoad::Optional); @@ -77,15 +73,13 @@ async fn on_shutdown() -> InvokeResult { let instance_id = kvs.parameters().instance_id; let snapshot_id = SnapshotId(0); - match kvs.parameters().backend.as_any().downcast_ref(){ - Some(backend ) => { + match kvs.parameters().backend.as_any().downcast_ref() { + Some(backend) => { let backend = backend as &JsonBackend; let filename = backend.kvs_file_path(instance_id, snapshot_id); info!("KVS snapshot saved to file: {:?}", filename); }, - None => { - - }, + None => {}, }; Ok(()) @@ -101,25 +95,16 @@ fn camera_processing_component_design() -> Result { design.register_invoke_async("on_camera_image_ready".into(), on_camera_image_ready)?; // Create a program describing task chain - design.add_program( - "CameraProcessingProgram", - move |design_instance, builder| { - builder.with_run_action( - SequenceBuilder::new() - .with_step(SyncBuilder::from_design(CAMERA_IMG_READY, design_instance)) - .with_step(Invoke::from_tag( - &on_camera_image_ready_tag, - design_instance.config(), - )) - .with_step(TriggerBuilder::from_design( - CAMERA_IMG_PROCESSED, - design_instance, - )) - .build(), - ); - Ok(()) - }, - ); + design.add_program("CameraProcessingProgram", move |design_instance, builder| { + builder.with_run_action( + SequenceBuilder::new() + .with_step(SyncBuilder::from_design(CAMERA_IMG_READY, design_instance)) + .with_step(Invoke::from_tag(&on_camera_image_ready_tag, design_instance.config())) + .with_step(TriggerBuilder::from_design(CAMERA_IMG_PROCESSED, design_instance)) + .build(), + ); + Ok(()) + }); Ok(design) } @@ -129,8 +114,7 @@ fn detect_object_component_design() -> Result { // Register events and invoke actions in design so it knows how to build task chains design.register_event(CAMERA_IMG_PROCESSED.into())?; - let detect_objects_tag = - design.register_invoke_async("detect_objects".into(), detect_objects)?; + let detect_objects_tag = design.register_invoke_async("detect_objects".into(), detect_objects)?; let on_shutdown_tag = design.register_invoke_async("on_shutdown".into(), on_shutdown)?; // Create a program describing task chain @@ -138,14 +122,8 @@ fn detect_object_component_design() -> Result { builder .with_run_action( SequenceBuilder::new() - .with_step(SyncBuilder::from_design( - CAMERA_IMG_PROCESSED, - design_instance, - )) - .with_step(Invoke::from_tag( - &detect_objects_tag, - design_instance.config(), - )) + .with_step(SyncBuilder::from_design(CAMERA_IMG_PROCESSED, design_instance)) + .with_step(Invoke::from_tag(&detect_objects_tag, design_instance.config())) .build(), ) .with_stop_action( @@ -166,23 +144,14 @@ fn main() { .build(); // Create runtime - let (builder, _engine_id) = kyron::runtime::RuntimeBuilder::new().with_engine( - ExecutionEngineBuilder::new() - .task_queue_size(256) - .workers(2), - ); + let (builder, _engine_id) = kyron::runtime::RuntimeBuilder::new() + .with_engine(ExecutionEngineBuilder::new().task_queue_size(256).workers(2)); let mut runtime = builder.build().unwrap(); // Build Orchestration let mut orch = Orchestration::new() - .add_design( - camera_processing_component_design() - .expect("Failed to create camera_processing_component_design"), - ) - .add_design( - detect_object_component_design() - .expect("Failed to create detect_object_component_design"), - ) + .add_design(camera_processing_component_design().expect("Failed to create camera_processing_component_design")) + .add_design(detect_object_component_design().expect("Failed to create detect_object_component_design")) .design_done(); // Specify deployment information, ie. which event is local, which timer etc diff --git a/showcases/simple_lifecycle/BUILD b/showcases/simple_lifecycle/BUILD index 0db2695e58a..2bf578fb89b 100644 --- a/showcases/simple_lifecycle/BUILD +++ b/showcases/simple_lifecycle/BUILD @@ -1,3 +1,15 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* load("@rules_cc//cc:cc_library.bzl", "cc_library") load("//bazel_common:bundlers.bzl", "score_pkg_bundle") @@ -8,12 +20,11 @@ score_pkg_bundle( "@score_lifecycle_health//examples/cpp_supervised_app", "@score_lifecycle_health//examples/rust_supervised_app", "@score_lifecycle_health//examples/control_application:control_daemon", - ":lifecycle_signal.sh" + ":lifecycle_signal.sh", ], config_data = [ "//showcases/simple_lifecycle:simple_lifecycle.score.json", ], - custom_layout = { ":lm_demo.bin": "etc/lm_demo.bin", ":hm_demo.bin": "etc/hm_demo.bin", @@ -24,37 +35,48 @@ score_pkg_bundle( genrule( name = "gen_lm_demo.bin", - srcs = ["@score_lifecycle_health//src/launch_manager_daemon:lm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:lm_demo.json"], + srcs = [ + "@score_lifecycle_health//src/launch_manager_daemon:lm_flatcfg_fbs", + "//showcases/simple_lifecycle/configs:lm_demo.json", + ], outs = ["lm_demo.bin"], - tools = ["@flatbuffers//:flatc"], cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv lm_demo.bin $(location lm_demo.bin)", + tools = ["@flatbuffers//:flatc"], visibility = ["//visibility:public"], ) genrule( name = "gen_hm_demo.bin", - srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:hm_demo.json"], + srcs = [ + "@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", + "//showcases/simple_lifecycle/configs:hm_demo.json", + ], outs = ["hm_demo.bin"], - tools = ["@flatbuffers//:flatc"], cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv hm_demo.bin $(location hm_demo.bin)", + tools = ["@flatbuffers//:flatc"], visibility = ["//visibility:public"], ) genrule( name = "gen_cpp_supervised_app_demo.bin", - srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:cpp_supervised_app_demo.json"], + srcs = [ + "@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", + "//showcases/simple_lifecycle/configs:cpp_supervised_app_demo.json", + ], outs = ["cpp_supervised_app_demo.bin"], - tools = ["@flatbuffers//:flatc"], cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv cpp_supervised_app_demo.bin $(location cpp_supervised_app_demo.bin)", + tools = ["@flatbuffers//:flatc"], visibility = ["//visibility:public"], ) genrule( name = "gen_rust_supervised_app_demo.bin", - srcs = ["@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", "//showcases/simple_lifecycle/configs:rust_supervised_app_demo.json"], + srcs = [ + "@score_lifecycle_health//src/launch_manager_daemon/health_monitor_lib:hm_flatcfg_fbs", + "//showcases/simple_lifecycle/configs:rust_supervised_app_demo.json", + ], outs = ["rust_supervised_app_demo.bin"], - tools = ["@flatbuffers//:flatc"], cmd = "$(location @flatbuffers//:flatc) --binary $(SRCS) && mv rust_supervised_app_demo.bin $(location rust_supervised_app_demo.bin)", + tools = ["@flatbuffers//:flatc"], visibility = ["//visibility:public"], ) - diff --git a/showcases/simple_lifecycle/configs/BUILD b/showcases/simple_lifecycle/configs/BUILD index d1cba824a59..64d254dd1f8 100644 --- a/showcases/simple_lifecycle/configs/BUILD +++ b/showcases/simple_lifecycle/configs/BUILD @@ -1,6 +1,18 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* exports_files([ "hm_demo.json", "lm_demo.json", "cpp_supervised_app_demo.json", - "rust_supervised_app_demo.json" -]) \ No newline at end of file + "rust_supervised_app_demo.json", +]) diff --git a/showcases/simple_lifecycle/lifecycle_signal.sh b/showcases/simple_lifecycle/lifecycle_signal.sh index 55d81c468be..8d933288a9f 100755 --- a/showcases/simple_lifecycle/lifecycle_signal.sh +++ b/showcases/simple_lifecycle/lifecycle_signal.sh @@ -1,4 +1,16 @@ #! /bin/sh +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* # This script sends a signal to a process by name. It uses `slay` on QNX and `pkill` on other systems. # Usage: lifecycle_signal.sh # Example: lifecycle_signal.sh my_process SIGTERM diff --git a/showcases/standalone/BUILD b/showcases/standalone/BUILD index 607aa68bcaa..aae7c225607 100644 --- a/showcases/standalone/BUILD +++ b/showcases/standalone/BUILD @@ -1,24 +1,38 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* load("//bazel_common:bundlers.bzl", "score_pkg_bundle") - score_pkg_bundle( name = "comm", - package_dir = "standalone", bins = ["@score_communication//score/mw/com/example/ipc_bridge:ipc_bridge_cpp"], - custom_layout = { - "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json": "etc/mw_com_config.json" - }, config_data = [ "//showcases/standalone:com.score.json", ], + custom_layout = { + "@score_communication//score/mw/com/example/ipc_bridge:etc/mw_com_config.json": "etc/mw_com_config.json", + }, + package_dir = "standalone", ) score_pkg_bundle( name = "kyron", - package_dir = "standalone", - bins = ["@score_kyron//examples:select", "@score_kyron//examples:safety_task", "@score_kyron//examples:main_macro"], - + bins = [ + "@score_kyron//examples:select", + "@score_kyron//examples:safety_task", + "@score_kyron//examples:main_macro", + ], config_data = [ "//showcases/standalone:kyron.score.json", ], + package_dir = "standalone", ) From c3a370c6539f92c48ebca41de697394cd45529ec Mon Sep 17 00:00:00 2001 From: Piotr Korkus Date: Mon, 2 Mar 2026 07:39:44 +0100 Subject: [PATCH 48/55] bazel: update docs to remove patch (#167) --- .../score_modules_tooling.MODULE.bazel | 6 +---- known_good.json | 5 +--- patches/docs-as-code/BUILD | 0 .../docs-as-code/fix-extra-properties.patch | 23 ------------------- 4 files changed, 2 insertions(+), 32 deletions(-) delete mode 100644 patches/docs-as-code/BUILD delete mode 100644 patches/docs-as-code/fix-extra-properties.patch diff --git a/bazel_common/score_modules_tooling.MODULE.bazel b/bazel_common/score_modules_tooling.MODULE.bazel index 5851bc25b1c..78da008bc58 100644 --- a/bazel_common/score_modules_tooling.MODULE.bazel +++ b/bazel_common/score_modules_tooling.MODULE.bazel @@ -59,11 +59,7 @@ git_override( bazel_dep(name = "score_docs_as_code") git_override( module_name = "score_docs_as_code", - commit = "7349eb22430febb367765ced3fbabfc0ef2988d0", - patch_strip = 1, - patches = [ - "//patches/docs-as-code:fix-extra-properties.patch", - ], + commit = "c1207676afe6cafd25c35d420e73279a799515d8", remote = "https://github.com/eclipse-score/docs-as-code.git", ) diff --git a/known_good.json b/known_good.json index 4e64982df61..f7299714b21 100644 --- a/known_good.json +++ b/known_good.json @@ -138,10 +138,7 @@ }, "score_docs_as_code": { "repo": "https://github.com/eclipse-score/docs-as-code.git", - "hash": "7349eb22430febb367765ced3fbabfc0ef2988d0", - "bazel_patches": [ - "//patches/docs-as-code:fix-extra-properties.patch" - ] + "hash": "c1207676afe6cafd25c35d420e73279a799515d8" }, "score_process": { "repo": "https://github.com/eclipse-score/process_description.git", diff --git a/patches/docs-as-code/BUILD b/patches/docs-as-code/BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/patches/docs-as-code/fix-extra-properties.patch b/patches/docs-as-code/fix-extra-properties.patch deleted file mode 100644 index 4b9a3039320..00000000000 --- a/patches/docs-as-code/fix-extra-properties.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/src/extensions/score_source_code_linker/testlink.py b/src/extensions/score_source_code_linker/testlink.py -index 50066fe3..51311f3e 100644 ---- a/src/extensions/score_source_code_linker/testlink.py -+++ b/src/extensions/score_source_code_linker/testlink.py -@@ -93,7 +93,17 @@ class DataOfTestCase: - - @classmethod - def from_dict(cls, data: dict[str, Any]): # type-ignore -- return cls(**data) # type-ignore -+ return cls( -+ name=data.get("name", ""), -+ file=data.get("file", ""), -+ line=data.get("line", ""), -+ result=data.get("result", ""), -+ TestType=data.get("TestType", ""), -+ DerivationTechnique=data.get("DerivationTechnique", ""), -+ result_text=data.get("result_text", ""), -+ PartiallyVerifies=data.get("PartiallyVerifies", ""), -+ FullyVerifies=data.get("FullyVerifies", ""), -+ ) - - @classmethod - def clean_text(cls, text: str): From 3332fcfc11674612255ad2a8d26546ebd29f1743 Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Tue, 3 Mar 2026 09:52:34 +0100 Subject: [PATCH 49/55] Use showcase from single place and adapt docker runner (#165) * Use showcase from single place and adapt docker runner * Bring qemu setup readme * fix showcases path Signed-off-by: Leonardo Rossetti --------- Signed-off-by: Leonardo Rossetti Co-authored-by: Leonardo Rossetti --- .github/workflows/build_and_test_autosd.yml | 9 ++- .vscode/settings.json | 7 +- MODULE.bazel | 15 +---- bazel_common/bundlers.bzl | 5 +- bazel_common/score_images.MODULE.bazel | 18 +++++ feature_integration_tests/itf/BUILD | 4 +- images/autosd_x86_64/BUILD.bazel | 33 +++++++--- images/autosd_x86_64/build/.gitignore | 4 ++ .../files/reference_integration/.gitkeep | 0 images/autosd_x86_64/build/image.aib.yml | 27 ++++---- images/linux_x86_64/BUILD | 29 +++------ images/qnx_x86_64/build/BUILD | 4 +- images/qnx_x86_64/build/system.build | 2 +- runners/docker_x86_64/scripts/run_docker.sh | 19 ++++-- runners/qemu_x86_64/README.md | 65 +++++++++++++++++++ runners/qemu_x86_64/scripts/run_qemu.sh | 13 ++-- showcases/BUILD | 3 +- 17 files changed, 179 insertions(+), 78 deletions(-) create mode 100644 bazel_common/score_images.MODULE.bazel create mode 100644 images/autosd_x86_64/build/files/reference_integration/.gitkeep create mode 100644 runners/qemu_x86_64/README.md diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 9bcead89ded..8f6c1a8f9ef 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -41,13 +41,12 @@ jobs: sudo apt-get install -y podman curl qemu-system createrepo-c - name: Build Showcases run: | - bazel build --config autosd-x86_64 //images/autosd_x86_64:image - working-directory: ./images/autosd_x86_64 - - name: Copy showcases_all folder + bazel build --config autosd-x86_64 //images/autosd_x86_64:score-showcases + - name: Copy showcases folder run: | set -e - mkdir -p ./images/autosd_x86_64/build/rpms - cp -R bazel-bin/showcases/showcases_all ./images/autosd_x86_64/build/files/ + ls ./bazel-bin/showcases/showcases/showcases + cp -R ./bazel-bin/showcases/showcases/showcases ./images/autosd_x86_64/build/files/reference_integration/ - name: Install AIB Tools run: | curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads" diff --git a/.vscode/settings.json b/.vscode/settings.json index 63fd2983291..d3f4ffa531a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,5 +9,10 @@ "feature_integration_tests" ], "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true + "python.testing.pytestEnabled": true, + "search.exclude": { + "./build/**": true, + "./bazel-*/**": true, + "**/*.orig": true, + } } diff --git a/MODULE.bazel b/MODULE.bazel index 1c218423420..a9ccd471622 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -37,6 +37,9 @@ include("//bazel_common:score_modules_tooling.MODULE.bazel") # Score modules include("//bazel_common:score_modules_target_sw.MODULE.bazel") +# Score test images +include("//bazel_common:score_images.MODULE.bazel") + bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost") archive_override( module_name = "rules_boost", @@ -68,15 +71,3 @@ toolchains_qnx.sdp( ) use_repo(toolchains_qnx, "toolchains_qnx_sdp") use_repo(toolchains_qnx, "toolchains_qnx_ifs") - -bazel_dep(name = "rules_oci", version = "1.8.0") - -oci = use_extension("@rules_oci//oci:extensions.bzl", "oci") -oci.pull( - name = "ubuntu_22_04", - digest = "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", - image = "ubuntu", - platforms = ["linux/amd64"], - tag = "22.04", -) -use_repo(oci, "ubuntu_22_04") diff --git a/bazel_common/bundlers.bzl b/bazel_common/bundlers.bzl index 173116d5773..2bda48c2667 100644 --- a/bazel_common/bundlers.bzl +++ b/bazel_common/bundlers.bzl @@ -10,7 +10,7 @@ # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -load("@rules_pkg//pkg:mappings.bzl", "pkg_files") +load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files") load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") def score_pkg_bundle(name, bins, config_data = None, package_dir = None, other_package_files = [], custom_layout = {}): @@ -69,6 +69,9 @@ def score_pkg_bundle(name, bins, config_data = None, package_dir = None, other_p srcs = bins + config_data_arr + list(custom_layout.keys()), renames = rename_dict, visibility = ["//visibility:public"], + attributes = pkg_attributes( + mode = "0755", # Simplify setup for now doing all executables + ), ) # Step 2: pkg_tar diff --git a/bazel_common/score_images.MODULE.bazel b/bazel_common/score_images.MODULE.bazel new file mode 100644 index 00000000000..edb236d0fa4 --- /dev/null +++ b/bazel_common/score_images.MODULE.bazel @@ -0,0 +1,18 @@ +bazel_dep(name = "rules_oci", version = "1.8.0") + +oci = use_extension("@rules_oci//oci:extensions.bzl", "oci") +oci.pull( + name = "ubuntu_22_04", + digest = "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", + image = "ubuntu", + platforms = ["linux/amd64"], + tag = "22.04", +) +oci.pull( + name = "centos_stream10", + digest = "sha256:01858c09da8f130c718c37673b83aaaf65c6493e66f4c674caffcffe9ed4c225", + image = "quay.io/centos/centos", + platforms = ["linux/amd64"], + tag = "stream10", +) +use_repo(oci, "centos_stream10", "ubuntu_22_04") diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index b796b269486..cf3c3cf78bf 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -27,11 +27,11 @@ py_itf_test( ":all_tests", ], args = [ - "--docker-image-bootstrap=$(location //images/linux_x86_64:docker_image_tarball)", + "--docker-image-bootstrap=$(location //images/linux_x86_64:image_tarball)", "--docker-image=score_showcases:latest", ], data = [ - "//images/linux_x86_64:docker_image_tarball", + "//images/linux_x86_64:image_tarball", ], plugins = [ docker, diff --git a/images/autosd_x86_64/BUILD.bazel b/images/autosd_x86_64/BUILD.bazel index e452f00f972..2ad9c033bf7 100644 --- a/images/autosd_x86_64/BUILD.bazel +++ b/images/autosd_x86_64/BUILD.bazel @@ -1,3 +1,5 @@ +load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") + # ******************************************************************************* # Copyright (c) 2024 Contributors to the Eclipse Foundation # @@ -12,16 +14,10 @@ # ******************************************************************************* load("@rules_rpm//:defs.bzl", "rpm_package") -alias( - name = "image", - actual = "//showcases:showcases_all", - visibility = ["//visibility:public"], -) - rpm_package( name = "score-showcases", data = [ - "//showcases:showcases_all", + "//showcases", ], data_dir = "/usr/share/score/examples", description = "Eclipse S-CORE Reference Integration Showcases", @@ -33,12 +29,29 @@ sh_binary( name = "run", srcs = ["//runners/docker_x86_64/scripts:run_docker.sh"], args = [ - "$(location :image)", + "$(location :image_tarball)", ], data = [ - ":image", + ":image_tarball", ], env = { - "OCI_IMAGE": "quay.io/centos/centos:stream10", + "OCI_IMAGE": "score_showcases_autosd:latest", }, ) + +oci_image( + name = "image", + base = "@centos_stream10", + tars = [ + "//showcases:showcases_pkg_tar", + ], +) + +oci_tarball( + name = "image_tarball", + image = ":image", + repo_tags = ["score_showcases_autosd:latest"], + visibility = [ + "//feature_integration_tests/itf:__pkg__", + ], +) diff --git a/images/autosd_x86_64/build/.gitignore b/images/autosd_x86_64/build/.gitignore index 7abec403223..b8ef0612db5 100644 --- a/images/autosd_x86_64/build/.gitignore +++ b/images/autosd_x86_64/build/.gitignore @@ -5,3 +5,7 @@ auto-image-builder.sh *.qcow2 *.img + + +!files/reference_integration/.gitkeep +files/reference_integration diff --git a/images/autosd_x86_64/build/files/reference_integration/.gitkeep b/images/autosd_x86_64/build/files/reference_integration/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/images/autosd_x86_64/build/image.aib.yml b/images/autosd_x86_64/build/image.aib.yml index 5fdd8e05985..85ab0496e9d 100644 --- a/images/autosd_x86_64/build/image.aib.yml +++ b/images/autosd_x86_64/build/image.aib.yml @@ -20,9 +20,6 @@ content: repos: - id: epel baseurl: https://dl.fedoraproject.org/pub/epel/10/Everything/$arch/ - # removing it for now because the image is relying on copying globs - #- id: score - # baseurl: file:///host/rpms rpms: # For testing the image only: - openssh-server @@ -37,6 +34,10 @@ content: mode: 0755 parents: true exist_ok: true + - path: /usr/share/score/examples + mode: 0755 + parents: true + exist_ok: true # Configure shared socket directory via tmpfiles add_files: - path: /usr/lib/tmpfiles.d/lola_disc.conf @@ -65,36 +66,36 @@ content: - path: /usr/bin/lola-ipc-test source_path: files/lola-ipc-test # showcases - - path: /usr/share/score/examples/showcases_all - source_glob: "files/showcases_all/**/*" + - path: /usr/share/score/examples + source_glob: "files/reference_integration/**/*" preserve_path: true max_files: 50 chmod_files: - path: /usr/bin/lola-ipc-test mode: "0755" # the following is a workaround because copied files lost their permissions - - path: /usr/share/score/examples/showcases_all/bin/cli + - path: /usr/share/score/examples/showcases/bin/cli mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/control_daemon + - path: /usr/share/score/examples/showcases/bin/control_daemon mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/cpp_supervised_app + - path: /usr/share/score/examples/showcases/bin/cpp_supervised_app mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/ipc_bridge_cpp + - path: /usr/share/score/examples/showcases/bin/ipc_bridge_cpp mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/launch_manager + - path: /usr/share/score/examples/showcases/bin/launch_manager mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/lifecycle_signal.sh + - path: /usr/share/score/examples/showcases/bin/lifecycle_signal.sh mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/orch_per_example + - path: /usr/share/score/examples/showcases/bin/orch_per_example mode: "0755" recursive: true - - path: /usr/share/score/examples/showcases_all/bin/rust_supervised_app + - path: /usr/share/score/examples/showcases/bin/rust_supervised_app mode: "0755" recursive: true # Required for testing the image only: diff --git a/images/linux_x86_64/BUILD b/images/linux_x86_64/BUILD index 8dfaa879a50..61ac4d1bce1 100644 --- a/images/linux_x86_64/BUILD +++ b/images/linux_x86_64/BUILD @@ -14,44 +14,31 @@ load("@rules_oci//oci:defs.bzl", "oci_image", "oci_tarball") load("@rules_pkg//pkg:tar.bzl", "pkg_tar") load("@rules_shell//shell:sh_binary.bzl", "sh_binary") -alias( - name = "image", - actual = "//showcases:showcases_all", - visibility = ["//visibility:public"], -) - sh_binary( name = "run", srcs = ["//runners/docker_x86_64/scripts:run_docker.sh"], args = [ - "$(location :image)", + "$(location :image_tarball)", ], data = [ - ":image", + ":image_tarball", ], -) - -pkg_tar( - name = "showcases_archive", - srcs = [ - "//showcases:showcases_all", - ], - symlinks = { - "showcases": "showcases_all", + env = { + "OCI_IMAGE": "score_showcases:latest", }, ) oci_image( - name = "docker_image", + name = "image", base = "@ubuntu_22_04", tars = [ - ":showcases_archive", + "//showcases:showcases_pkg_tar", ], ) oci_tarball( - name = "docker_image_tarball", - image = ":docker_image", + name = "image_tarball", + image = ":image", repo_tags = ["score_showcases:latest"], visibility = [ "//feature_integration_tests/itf:__pkg__", diff --git a/images/qnx_x86_64/build/BUILD b/images/qnx_x86_64/build/BUILD index dea5102c105..897ebfd791c 100644 --- a/images/qnx_x86_64/build/BUILD +++ b/images/qnx_x86_64/build/BUILD @@ -50,12 +50,12 @@ qnx_ifs( ":system.build", ":system_dir", "//feature_integration_tests/configs:etc_configs", - "//showcases:showcases_all", + "//showcases", "@score_persistency//tests/test_scenarios/cpp:test_scenarios", ], build_file = "init.build", ext_repo_maping = { - "BUNDLE_PATH": "$(location //showcases:showcases_all)", + "BUNDLE_PATH": "$(location //showcases:showcases)", }, visibility = [ "//visibility:public", diff --git a/images/qnx_x86_64/build/system.build b/images/qnx_x86_64/build/system.build index 7e19b56bebf..29e25d01cea 100644 --- a/images/qnx_x86_64/build/system.build +++ b/images/qnx_x86_64/build/system.build @@ -294,5 +294,5 @@ pci/pci_debug2.so # Enhanced PCI debugging support [perms=644] /usr/bin/etc/log-channels.json = datarouter_integration/etc/log-channels.json # Common showcases bundle -[perms=777] /showcases = ${BUNDLE_PATH} +[perms=777] / = ${BUNDLE_PATH} diff --git a/runners/docker_x86_64/scripts/run_docker.sh b/runners/docker_x86_64/scripts/run_docker.sh index 3db33a20383..45ea3011ac9 100755 --- a/runners/docker_x86_64/scripts/run_docker.sh +++ b/runners/docker_x86_64/scripts/run_docker.sh @@ -15,13 +15,22 @@ set -euo pipefail -OVERLAY_TREE=$1 -OVERLAY_ABS_PATH=$(realpath ${OVERLAY_TREE}) -OCI_IMAGE=${OCI_IMAGE:=ubuntu:22.04} +OCI_TARBALL_IMAGE_SCRIPT=$1 +OCI_TARBALL_IMAGE_SCRIPT_ABS_PATH=$(realpath ${OCI_TARBALL_IMAGE_SCRIPT}) -echo "Starting docker with overlay image: ${OVERLAY_ABS_PATH}" +if [ -z "${OCI_IMAGE:-}" ]; then + echo "Error: OCI_IMAGE environment variable is not set." + exit 1 +fi +OCI_IMAGE=${OCI_IMAGE:=score_showcases:latest} + + +echo "Starting docker with OCI image tarball at: ${OCI_TARBALL_IMAGE_SCRIPT_ABS_PATH}" + +${OCI_TARBALL_IMAGE_SCRIPT_ABS_PATH} + +echo "Running docker with image: ${OCI_IMAGE}" docker run --rm -it \ - -v "${OVERLAY_ABS_PATH}:/showcases" \ ${OCI_IMAGE} \ bash -c "/showcases/bin/cli; exec bash" diff --git a/runners/qemu_x86_64/README.md b/runners/qemu_x86_64/README.md new file mode 100644 index 00000000000..1809f832ac0 --- /dev/null +++ b/runners/qemu_x86_64/README.md @@ -0,0 +1,65 @@ +# QNX QEMU x86 Runner + +## Configure QEMU networking + +To allow QEMU bridge helper to create TAP devices and to make sure **TUN** is available: + +Give qemu-bridge-helper the required capabilities. + +Make sure that bridge virbr0 is installed for successful QEMU startup + +```bash +sudo apt update +sudo apt install -y libvirt-daemon-system qemu-kvm +sudo systemctl enable --now libvirtd +sudo virsh net-define /usr/share/libvirt/networks/default.xml || true +sudo virsh net-autostart default +sudo virsh net-start default +``` + +Create /etc/qemu if it doesn’t exist. + +```bash +sudo install -d -m 755 /etc/qemu +echo "allow virbr0" | sudo tee /etc/qemu/bridge.conf +``` + +On Debian/Ubuntu (most common path): + +```bash +sudo setcap cap_net_admin,cap_net_raw+ep /usr/lib/qemu/qemu-bridge-helper +``` + +Verify: + +```bash +getcap /usr/lib/qemu/qemu-bridge-helper +# or +getcap /usr/libexec/qemu-bridge-helper +``` + +You should see: + +```bash +/usr/lib/qemu/qemu-bridge-helper = cap_net_admin,cap_net_raw+ep +``` + +Enable TUN device + +Make sure the TUN kernel module is loaded: + +```bash +sudo modprobe tun +``` + +Check that the device exists: + +```bash +ls -l /dev/net/tun +``` + +If successful, you’ll see: + +```bash +crw-rw-rw- 1 root root 10, 200 ... /dev/net/tun +``` diff --git a/runners/qemu_x86_64/scripts/run_qemu.sh b/runners/qemu_x86_64/scripts/run_qemu.sh index 403e6f62b08..6482d232665 100755 --- a/runners/qemu_x86_64/scripts/run_qemu.sh +++ b/runners/qemu_x86_64/scripts/run_qemu.sh @@ -16,13 +16,18 @@ set -euo pipefail QNX_HOST=$1 - IFS_IMAGE=$2 + +# Set KVM options based on QEMU_NO_KVM if user does not have kvm - like nested VMs +if [ -z "${QEMU_NO_KVM:-}" ]; then + QEMU_KVM_OPTS="-enable-kvm -smp 2 -cpu host" +else + QEMU_KVM_OPTS="-smp 2 -cpu Cascadelake-Server-v5" +fi + echo "Starting QEMU with IFS image: ${IFS_IMAGE}" qemu-system-x86_64 \ - -enable-kvm \ - -smp 2 \ - -cpu host\ + ${QEMU_KVM_OPTS} \ -m 1G \ -pidfile /tmp/qemu.pid \ -nographic \ diff --git a/showcases/BUILD b/showcases/BUILD index 3fd3cd19ab0..514b36add06 100644 --- a/showcases/BUILD +++ b/showcases/BUILD @@ -13,7 +13,7 @@ load("//bazel_common:bundlers.bzl", "score_pkg_bundle") score_pkg_bundle( - name = "showcases_all", + name = "showcases", bins = ["//showcases/cli"], other_package_files = [ "//showcases/standalone:comm_pkg_files", @@ -21,4 +21,5 @@ score_pkg_bundle( "//showcases/orchestration_persistency:orch_per_pkg_files", "//showcases/simple_lifecycle:simple_lifecycle_pkg_files", ], + package_dir = "showcases", ) From 56194215c8fea34cc363f5eac5fe02a158acbe62 Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Wed, 4 Mar 2026 11:10:19 +0100 Subject: [PATCH 50/55] Cancel heavy workflows on push to PR (#170) * Cancel heavy workflows on push to PR * set aib version to 1.1.11 Signed-off-by: Leonardo Rossetti --------- Signed-off-by: Leonardo Rossetti Co-authored-by: Leonardo Rossetti --- .github/workflows/build_and_test_autosd.yml | 14 ++++++++++---- .github/workflows/build_and_test_ebclfsa.yml | 4 ++++ .github/workflows/build_and_test_linux.yml | 4 ++++ .github/workflows/build_and_test_qnx.yml | 4 ++++ .github/workflows/codeql-multiple-repo-scan.yml | 4 ++++ .github/workflows/test_and_docs.yml | 4 ++++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 8f6c1a8f9ef..5ea04b81d30 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -19,10 +19,16 @@ on: push: branches: - main +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: build: name: x86_64 runs-on: ubuntu-latest + env: + AIB_CONTAINER_IMAGE: quay.io/centos-sig-automotive/automotive-image-builder:1.1.11 steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 @@ -49,7 +55,7 @@ jobs: cp -R ./bazel-bin/showcases/showcases/showcases ./images/autosd_x86_64/build/files/reference_integration/ - name: Install AIB Tools run: | - curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads" + curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/1.1.11/auto-image-builder.sh?ref_type=tag" chmod +x auto-image-builder.sh working-directory: ./images/autosd_x86_64/build - name: Build AutoSD QEMU (x86_64) @@ -57,9 +63,9 @@ jobs: export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage mkdir -p _build/containers-storage - sudo -E ./auto-image-builder.sh build-builder --distro=autosd10-sig + sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE build-builder --distro=autosd10-sig - sudo -E ./auto-image-builder.sh build \ + sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE build \ --distro=autosd10-sig \ --target=qemu \ --define-file vars.yml \ @@ -67,7 +73,7 @@ jobs: image.aib.yml \ localhost/score:latest - sudo -E ./auto-image-builder.sh to-disk-image localhost/score:latest _build/disk.qcow2 + sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE to-disk-image localhost/score:latest _build/disk.qcow2 sudo chown $(id -u):$(id -u) _build/disk.qcow2 working-directory: ./images/autosd_x86_64/build diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index d03c4cadedb..2a8f0c76324 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -19,6 +19,10 @@ on: push: branches: - main +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: build: name: aarch64 diff --git a/.github/workflows/build_and_test_linux.yml b/.github/workflows/build_and_test_linux.yml index 583b0b402ca..01ae513c89f 100644 --- a/.github/workflows/build_and_test_linux.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -19,6 +19,10 @@ on: push: branches: - main +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: x86_64: runs-on: ubuntu-latest diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index 7810829f672..edaf2d5a873 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -19,6 +19,10 @@ on: push: branches: - main +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: qnx-build-x86_64: name: x86_64 diff --git a/.github/workflows/codeql-multiple-repo-scan.yml b/.github/workflows/codeql-multiple-repo-scan.yml index 13c27a83d9d..a22531153b2 100644 --- a/.github/workflows/codeql-multiple-repo-scan.yml +++ b/.github/workflows/codeql-multiple-repo-scan.yml @@ -24,6 +24,10 @@ on: workflow_dispatch: permissions: contents: write +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: analyze-repos: name: Analyze Multiple Repositories diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index 4d7a03e2fd1..212a76c8ccc 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -26,6 +26,10 @@ on: types: [checks_requested] release: types: [created] +# Do not flood CI with unneeded previous runs in PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: ${{ github.ref_name != 'main' && !startsWith(github.ref_name, 'release/') }} jobs: test_and_docs: runs-on: ubuntu-22.04 From 442a6a507d3379bd7d887d93acb1994ef68befab Mon Sep 17 00:00:00 2001 From: Pawel Rutka Date: Wed, 4 Mar 2026 13:24:44 +0100 Subject: [PATCH 51/55] Add initial code owners (#172) --- .github/CODEOWNERS | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..501256bd657 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,8 @@ +# GitHub CODEOWNERS file is a simple way to automate review system on github, +# by automatically assigning owners to a pull request based on which files +# were modified. All directories should have a proper codeowner +# Syntax: https://help.github.com/articles/about-codeowners/ + +# default owners +# @kgraeper to come once he is commiter +* @pawelrutkaq @PiotrKorkus From 7f513f30b82b6462358c72a161c02169e469934e Mon Sep 17 00:00:00 2001 From: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:47:59 +0200 Subject: [PATCH 52/55] locking: enforce Bzlmod lockfile consistency (#169) * locking: enforce Bzlmod lockfile consistency - add reusable lockfile check workflow - track MODULE.bazel.lock (remove from .gitignore) - enforce --lockfile_mode=error in CI and scripts Addresses eclipse-score/score#2628 * lock: update lockfile updated lockfile Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com> * fix: formatting fix Fixed formatting Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com> * revert: don't use the lockfile_mode in scripts Ensure the decoupling from CI and local builds this way Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com> --------- Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com> --- .github/workflows/build_and_test_autosd.yml | 2 +- .github/workflows/build_and_test_ebclfsa.yml | 2 +- .github/workflows/build_and_test_linux.yml | 4 +- .github/workflows/build_and_test_qnx.yml | 4 +- .github/workflows/bzlmod-lock.yml | 26 + .github/workflows/test_and_docs.yml | 3 +- .gitignore | 1 - MODULE.bazel.lock | 8470 ++++++++++++++++++ bazel_common/score_python.MODULE.bazel | 1 - 9 files changed, 8504 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/bzlmod-lock.yml create mode 100644 MODULE.bazel.lock diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index 5ea04b81d30..e72b43da31e 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -47,7 +47,7 @@ jobs: sudo apt-get install -y podman curl qemu-system createrepo-c - name: Build Showcases run: | - bazel build --config autosd-x86_64 //images/autosd_x86_64:score-showcases + bazel build --lockfile_mode=error --config autosd-x86_64 //images/autosd_x86_64:score-showcases - name: Copy showcases folder run: | set -e diff --git a/.github/workflows/build_and_test_ebclfsa.yml b/.github/workflows/build_and_test_ebclfsa.yml index 2a8f0c76324..c0390351546 100644 --- a/.github/workflows/build_and_test_ebclfsa.yml +++ b/.github/workflows/build_and_test_ebclfsa.yml @@ -43,7 +43,7 @@ jobs: cache-save: ${{ github.event_name == 'push' }} - name: Build for EB corbos Linux for Safety Applications and run tests run: | - bazel build --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run + bazel build --lockfile_mode=error --config=eb-aarch64 //images/ebclfsa_aarch64/scrample_integration:run - name: Upload test logs uses: actions/upload-artifact@v5 with: diff --git a/.github/workflows/build_and_test_linux.yml b/.github/workflows/build_and_test_linux.yml index 01ae513c89f..852dbd73af5 100644 --- a/.github/workflows/build_and_test_linux.yml +++ b/.github/workflows/build_and_test_linux.yml @@ -44,7 +44,7 @@ jobs: cache-save: ${{ github.event_name == 'push' }} - name: Build image run: | - bazel build --config=linux-x86_64 //images/linux_x86_64:image + bazel build --lockfile_mode=error --config=linux-x86_64 //images/linux_x86_64:image - name: Integration tests run: | - bazel test --config=linux-x86_64 //feature_integration_tests/itf:linux_x86_64 + bazel test --lockfile_mode=error --config=linux-x86_64 //feature_integration_tests/itf:linux_x86_64 diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index edaf2d5a873..483d043e101 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -70,10 +70,10 @@ jobs: SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} SCORE_QNX_PASSWORD: ${{ secrets.SCORE_QNX_PASSWORD }} run: | - bazel build --config qnx-x86_64 //images/qnx_x86_64:image + bazel build --lockfile_mode=error --config qnx-x86_64 //images/qnx_x86_64:image - name: Run integration tests run: | - bazel test --config=itf-qnx-x86_64 //feature_integration_tests/itf:qnx_x86_64 + bazel test --lockfile_mode=error --config=itf-qnx-x86_64 //feature_integration_tests/itf:qnx_x86_64 - name: Cleanup QNX license if: always() run: sudo rm -rf /opt/score_qnx diff --git a/.github/workflows/bzlmod-lock.yml b/.github/workflows/bzlmod-lock.yml new file mode 100644 index 00000000000..eebb3df68db --- /dev/null +++ b/.github/workflows/bzlmod-lock.yml @@ -0,0 +1,26 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Bzlmod Lockfile Check +on: + pull_request: + types: [opened, reopened, synchronize] + merge_group: + types: [checks_requested] + push: + branches: + - main +jobs: + bzlmod-lock: + uses: eclipse-score/cicd-workflows/.github/workflows/bzlmod-lock-check.yml@main + with: + working-directory: . diff --git a/.github/workflows/test_and_docs.yml b/.github/workflows/test_and_docs.yml index 212a76c8ccc..0d0f1574259 100644 --- a/.github/workflows/test_and_docs.yml +++ b/.github/workflows/test_and_docs.yml @@ -85,7 +85,7 @@ jobs: run: | mkdir -p artifacts find bazel-testlogs/external -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/ - cp -r "$(bazel info bazel-bin)/coverage/rust-tests" artifacts/rust + cp -r "$(bazel info --lockfile_mode=error bazel-bin)/coverage/rust-tests" artifacts/rust zip -r ${{ github.event.repository.name }}_test_reports.zip artifacts/ shell: bash - name: Upload release asset (attach ZIP to GitHub Release) @@ -103,6 +103,7 @@ jobs: - name: Build documentation run: | bazel --output_base="/home/runner/.cache/bazel/output_base" run \ + --lockfile_mode=error \ --repo_contents_cache="/home/runner/.cache/bazel/repo_contents" \ --repository_cache="/home/runner/.cache/bazel/repo" \ --disk_cache="/home/runner/.cache/bazel/disk" \ diff --git a/.gitignore b/.gitignore index 9d2f3dfceaf..3c95a1f4b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # Bazel bazel-* -MODULE.bazel.lock user.bazelrc _logs diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock new file mode 100644 index 00000000000..991e8543a17 --- /dev/null +++ b/MODULE.bazel.lock @@ -0,0 +1,8470 @@ +{ + "lockFileVersion": 18, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20220623.1/MODULE.bazel": "73ae41b6818d423a11fd79d95aedef1258f304448193d4db4ff90e5e7a0f076c", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.0/MODULE.bazel": "98dc378d64c12a4e4741ad3362f87fb737ee6a0886b2d90c3cdbb4d93ea3e0bf", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20240722.0/MODULE.bazel": "88668a07647adbdc14cb3a7cd116fb23c9dda37a90a1681590b6c9d8339a5b84", + "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/source.json": "d725d73707d01bb46ab3ca59ba408b8e9bd336642ca77a2269d4bfb8bbfd413d", + "https://bcr.bazel.build/modules/ape/1.0.1/MODULE.bazel": "37411cfd13bfc28cd264674d660a3ecb3b5b35b9dbe4c0b2be098683641b3fee", + "https://bcr.bazel.build/modules/ape/1.0.1/source.json": "96bc5909d1e3ccc4203272815ef874dbfd99651e240c05049f12193d16c1110b", + "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.17.1/MODULE.bazel": "655c922ab1209978a94ef6ca7d9d43e940cd97d9c172fb55f94d91ac53f8610b", + "https://bcr.bazel.build/modules/apple_support/1.22.1/MODULE.bazel": "90bd1a660590f3ceffbdf524e37483094b29352d85317060b2327fff8f3f4458", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.28.0/MODULE.bazel": "d793416e81c34d137d75ef84fe622df6c550826772a7f06e3b98a0d1c347fe1c", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.31.2/MODULE.bazel": "7bee702b4862612f29333590f4b658a5832d433d6f8e4395f090e8f4e85d442f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.38.0/MODULE.bazel": "6307fec451ba9962c1c969eb516ebfe1e46528f7fa92e1c9ac8646bef4cdaa3f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.1/MODULE.bazel": "b7aca918a7c7f4cb9ea223e7e2cba294760659ec7364cc551df156067e4a3621", + "https://bcr.bazel.build/modules/aspect_bazel_lib/1.42.2/MODULE.bazel": "2e0d8ab25c57a14f56ace1c8e881b69050417ff91b2fb7718dc00d201f3c3478", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "e118477db5c49419a88d78ebc7a2c2cea9d49600fe0f490c1903324a2c16ecd9", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "cb1ba9f9999ed0bc08600c221f532c1ddd8d217686b32ba7d45b0713b5131452", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "852f9ebbda017572a7c113a2434592dd3b2f55cd9a0faea3d4be5a09a59e4900", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.20.0/MODULE.bazel": "c5565bac49e1973227225b441fad1c938d498d83df62dc5da95b2fab0f0626a2", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "7fe0191f047d4fe4a4a46c1107e2350cbb58a8fc2e10913aa4322d3190dec0bf", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.0/source.json": "369df5b7f2eae82f200fff95cf1425f90dee90a0d0948122060b48150ff0e224", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.4/MODULE.bazel": "ccc41028429f894b02fde7ef67d416cba3ba5084ed9ddb9bb6107aa82d118776", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.21.0/MODULE.bazel": "77dc393c43ad79398b05865444c5200c6f1aae6765615544f2c7730b5858d533", + "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.21.0/source.json": "062b1d3dba8adcfeb28fe60c185647f5a53ec0487ffe93cf0ae91566596e4b49", + "https://bcr.bazel.build/modules/aspect_rules_js/1.33.1/MODULE.bazel": "db3e7f16e471cf6827059d03af7c21859e7a0d2bc65429a3a11f005d46fc501b", + "https://bcr.bazel.build/modules/aspect_rules_js/1.40.0/MODULE.bazel": "01a1014e95e6816b68ecee2584ae929c7d6a1b72e4333ab1ff2d2c6c30babdf1", + "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", + "https://bcr.bazel.build/modules/aspect_rules_js/2.3.8/MODULE.bazel": "74bf20a7a6bd5f2be09607fdb4196cfd6f203422ea271752ec2b1afe95426101", + "https://bcr.bazel.build/modules/aspect_rules_js/2.3.8/source.json": "411ec9d79d6f5fe8a083359588c21d01a5b48d88a2cbd334a4c90365015b7836", + "https://bcr.bazel.build/modules/aspect_rules_lint/0.12.0/MODULE.bazel": "e767c5dbfeb254ec03275a7701b5cfde2c4d2873676804bc7cb27ddff3728fed", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.0.0-rc9/MODULE.bazel": "7c0d5173bf7c3430fb99213c2664fb7fd0a4530e37de9a7c6006275e73036001", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.0.3/MODULE.bazel": "ed0fe929647ba21d2041e14ea3d757133ca306b72d4998e8a3d0d2f515196765", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.13.0/MODULE.bazel": "6756412fca0a91ebfc614a60aeca5210db22d96bd8051c245b75514abc7079e7", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.4.2/MODULE.bazel": "78d025facf6fa675fd6f0b62fd6a9a2bec7ef5ae1e288e5b53f4383b98017105", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.4.4/MODULE.bazel": "24459eeeeb084bc3e7628c338e494746718bc17b3a3cbd94415c8df5c7c6dc37", + "https://bcr.bazel.build/modules/aspect_rules_lint/1.5.3/MODULE.bazel": "7fee71b11be63f1cf0458cd8c731712a0e672d0bb6df8879ed70249bf8dfdfdc", + "https://bcr.bazel.build/modules/aspect_rules_lint/2.0.0/MODULE.bazel": "1f4c81edd9af0c54e65dedbe36653fc63dc9a91605313d54d5ab371f853d693c", + "https://bcr.bazel.build/modules/aspect_rules_lint/2.0.0/source.json": "3c3a55b5b424100feca2fd656dcdcd8a0c9fd3304ce609ce71a4d6d46d00a03c", + "https://bcr.bazel.build/modules/aspect_rules_py/1.0.0/MODULE.bazel": "8eb29876512d3242af50a424300bec5c5f8957b455963df5f618cb7fd4e8ae19", + "https://bcr.bazel.build/modules/aspect_rules_py/1.4.0/MODULE.bazel": "6fd29b93207a31445d5d3ab9d9882fd5511e43c95e8e82e7492872663720fd44", + "https://bcr.bazel.build/modules/aspect_rules_py/1.4.0/source.json": "fb1ba946478fb6dbb26d49307d756b0fd2ff88be339af23c39c0397d59143d2c", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.0/MODULE.bazel": "d0045b5eabb012be550a609589b3e5e47eba682344b19cfd9365d4d896ed07df", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.6.0/source.json": "5593e3f1cd0dd5147f7748e163307fd5c2e1077913d6945b58739ad8d770a290", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.5/MODULE.bazel": "5a3c8013c3ba9ebc0a65efda40e4376b869e1260873c98020504feed55244ce8", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679", + "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/source.json": "786cbc49377fb6bf4859aec5b1c61f8fc26b08e9fdb929e2dde2e1e2a406bd24", + "https://bcr.bazel.build/modules/bazel_features/0.1.0/MODULE.bazel": "47011d645b0f949f42ee67f2e8775188a9cf4a0a1528aa2fa4952f2fd00906fd", + "https://bcr.bazel.build/modules/bazel_features/1.0.0/MODULE.bazel": "d7f022dc887efb96e1ee51cec7b2e48d41e36ff59a6e4f216c40e4029e1585bf", + "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.2.0/MODULE.bazel": "122b2b606622afbaa498913d54f52d9bcd2d19a5edd1bd6d6c5aa17441c4d5f9", + "https://bcr.bazel.build/modules/bazel_features/1.20.0/MODULE.bazel": "8b85300b9c8594752e0721a37210e34879d23adc219ed9dc8f4104a4a1750920", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.34.0/MODULE.bazel": "e8475ad7c8965542e0c7aac8af68eb48c4af904be3d614b6aa6274c092c2ea1e", + "https://bcr.bazel.build/modules/bazel_features/1.34.0/source.json": "dfa5c4b01110313153b484a735764d247fee5624bbab63d25289e43b151a657a", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "407729e232f611c3270005b016b437005daa7b1505826798ea584169a476e878", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0-rc.0/MODULE.bazel": "d6e00979a98ac14ada5e31c8794708b41434d461e7e7ca39b59b765e6d233b18", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/source.json": "895f21909c6fba01d7c17914bb6c8e135982275a1b18cdaa4e62272217ef1751", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/MODULE.bazel": "72997b29dfd95c3fa0d0c48322d05590418edef451f8db8db5509c57875fb4b7", + "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/source.json": "7ad77c1e8c1b84222d9b3f3cae016a76639435744c19330b0b37c0a3c9da7dc0", + "https://bcr.bazel.build/modules/boost.any/1.87.0/MODULE.bazel": "bd5e7c7abe254911ea9ee86877b2f9d72e5b01ba5e1d78224564d6919105e03a", + "https://bcr.bazel.build/modules/boost.any/1.87.0/source.json": "928d3773ee07be66fd2f1025cf63776bca9f80d7c57b705e994ed953cd17b6bb", + "https://bcr.bazel.build/modules/boost.array/1.87.0/MODULE.bazel": "beb11f5d659b17df58c07e039392edc9233e1be9565e5d4b1393fff9bf4457c4", + "https://bcr.bazel.build/modules/boost.array/1.87.0/source.json": "0583a9fd9d24a14e33b74b4342f94b4a4a3b539af11b0c12403a1a4da1f1548a", + "https://bcr.bazel.build/modules/boost.assert/1.87.0/MODULE.bazel": "8a950da6e19dd6d6427b95b1cfe1d2fc86eb598f6fb753345d925eb92d74a821", + "https://bcr.bazel.build/modules/boost.assert/1.87.0/source.json": "085a7c247d90bb4f8f5c3cc7eec1994f3d46d2a26af1947c85ff6f8ddd86ce59", + "https://bcr.bazel.build/modules/boost.bind/1.87.0/MODULE.bazel": "6d224cd013e45d15710476840fff34aa2da53389c3bfd252054e2efd893b0bf9", + "https://bcr.bazel.build/modules/boost.bind/1.87.0/source.json": "e93e696ab6140c1f07317357b04b4d0fcf0aefa61991b8fa8b65416d81677b44", + "https://bcr.bazel.build/modules/boost.concept_check/1.87.0/MODULE.bazel": "6a935c9f5d739ad6d0401d1e5f71f4bfb538c66ccb1d3b8ac7a5a2b74bd207ff", + "https://bcr.bazel.build/modules/boost.concept_check/1.87.0/source.json": "45ffc4ae171c9b14bbe595e3d3e7d0a5065ceb18f949d1a2365d328ca89e1a1c", + "https://bcr.bazel.build/modules/boost.config/1.87.0/MODULE.bazel": "01da6517cb341d5abea9be54337bf85ba50132b3690a621f09be5890ecd12796", + "https://bcr.bazel.build/modules/boost.config/1.87.0/source.json": "9a00cd7c9afd6f58b349a806791c7aab040b1cd1a35464e59b79be724261a5ae", + "https://bcr.bazel.build/modules/boost.container/1.87.0/MODULE.bazel": "affb6e485eb13d3df0e9ee464f6a890175762526166da601a83f12d21b6c6950", + "https://bcr.bazel.build/modules/boost.container/1.87.0/source.json": "ddf180a658ad7743e081970719a184538945b9554be8278b55a67ba281ceede0", + "https://bcr.bazel.build/modules/boost.container_hash/1.87.0/MODULE.bazel": "a718ac13832c18ffc828f33e9cf8e566095d5ed8c80584bd1ad429c4ce91efa5", + "https://bcr.bazel.build/modules/boost.container_hash/1.87.0/source.json": "a7a90c4dfea2da1648ac530a838faebc093cbbaeab5e4f43a8532e5b76ff32d3", + "https://bcr.bazel.build/modules/boost.conversion/1.87.0/MODULE.bazel": "47bafdb6a14ec58feefe69a1367b537458563e0627e1986f377cc0b4e8ebd41e", + "https://bcr.bazel.build/modules/boost.conversion/1.87.0/source.json": "7aa865b11b0a699d15926eb87a21d17220d64265da3d280261a480b0d88b3dbb", + "https://bcr.bazel.build/modules/boost.core/1.87.0/MODULE.bazel": "33517eb46bb16f4b4f4a1bde61fe8b2475f45b5574bcd9f04c85f4bf3afe30d2", + "https://bcr.bazel.build/modules/boost.core/1.87.0/source.json": "9e2920b45c833a6a2cd42b16e17a5b97201bb73698a3902936cc90c1aa3de667", + "https://bcr.bazel.build/modules/boost.describe/1.87.0/MODULE.bazel": "638752de4ad46348a7e3ac72910b699fde5a3c71d42fc69047d2aa8825411646", + "https://bcr.bazel.build/modules/boost.describe/1.87.0/source.json": "c260a5c38806ea88ce50b2d070484ae634941d2be7a1ddb0f959923ca8ef10d4", + "https://bcr.bazel.build/modules/boost.detail/1.87.0/MODULE.bazel": "64ed391c2b60b226263de4f486fad690414afc6a68d1a5e58eed70e4a63f2d80", + "https://bcr.bazel.build/modules/boost.detail/1.87.0/source.json": "dde910ab5e8ca18352cceaf4a922904b3de9ace042bf16f1a2015ca53776a568", + "https://bcr.bazel.build/modules/boost.function/1.87.0/MODULE.bazel": "d7ad93c26d0102b48cd6f781fcb68d16861fd6bf8772f784f034afabbabea391", + "https://bcr.bazel.build/modules/boost.function/1.87.0/source.json": "dd6765e2d9d902fc82da874f55061cf233a17affa66acb1641f478480b80d5d2", + "https://bcr.bazel.build/modules/boost.function_types/1.87.0/MODULE.bazel": "fed8aedff1fb01468a24e53a10793411330e36ebe29aeafaadeae00e25c20371", + "https://bcr.bazel.build/modules/boost.function_types/1.87.0/source.json": "c3a7fa0a172a109ae04a575eba033e133a38448005468dfddedab065d071dbbf", + "https://bcr.bazel.build/modules/boost.functional/1.87.0/MODULE.bazel": "5488597db90a4d8615505e9673806db23a98a4c73eadc16999478c7b1a6c1bc7", + "https://bcr.bazel.build/modules/boost.functional/1.87.0/source.json": "d39c98b1a9ae0a74da51ff049054fe6f77060d00c1768ea7eb6c629f3ac9eea5", + "https://bcr.bazel.build/modules/boost.fusion/1.87.0/MODULE.bazel": "2c28c212edcf35584dcf09089c51d6dcb2a01cf5d8d5c2b125dc91acb083a463", + "https://bcr.bazel.build/modules/boost.fusion/1.87.0/source.json": "35cb70a4a379e430e9efde27c9c2aa061791e9a1f693f7c85d2d4f1665ba2381", + "https://bcr.bazel.build/modules/boost.integer/1.87.0/MODULE.bazel": "2b862679c8595b6ecb3806ec5c7a1024c9e00fca94e5ee713d75ab022c6a7444", + "https://bcr.bazel.build/modules/boost.integer/1.87.0/source.json": "adce74ac44da997658d139f419f3c6a909fdc35d05566814c9c15e3ccb99fff6", + "https://bcr.bazel.build/modules/boost.interprocess/1.87.0/MODULE.bazel": "e85519bd17957242ddd8e82fe6529b6cacd36f6cb0b1140fa728ed96f2a5738d", + "https://bcr.bazel.build/modules/boost.interprocess/1.87.0/source.json": "3fc2d81ac08cf07009c143a2a161d1f041cd7d90a2f81ea68dc81ea056404929", + "https://bcr.bazel.build/modules/boost.intrusive/1.87.0/MODULE.bazel": "9dd904f7da54b7efa8476da8152e8cd60702e7b61bfae2689672f185458dc478", + "https://bcr.bazel.build/modules/boost.intrusive/1.87.0/source.json": "cc603911503905072f8596510bb6e95ce210a82564258d3fd319f9499f339cf6", + "https://bcr.bazel.build/modules/boost.io/1.87.0/MODULE.bazel": "30b1fbdc4a0463f727e2a78558550adf05c61e1fc209a6dcd35df03eaa4dafac", + "https://bcr.bazel.build/modules/boost.io/1.87.0/source.json": "b42dd52763c9bce54ed4a4c8ef48d560460f854bb53770f37c839180dba897e0", + "https://bcr.bazel.build/modules/boost.iterator/1.87.0/MODULE.bazel": "7e6ce23b059902c1709ba033dd1f4783b3de3f48ec4dc9f5e6ab82ddc699223e", + "https://bcr.bazel.build/modules/boost.iterator/1.87.0/source.json": "69d37225c6ffc3e8af0e7ea427ff51ccb04d84c6e7e361bbb8f1dc859b4412ea", + "https://bcr.bazel.build/modules/boost.lexical_cast/1.87.0/MODULE.bazel": "878478bbe6d3350cad171dd1b4558732dbee7021ab69e40a3c5bf9e59b37922c", + "https://bcr.bazel.build/modules/boost.lexical_cast/1.87.0/source.json": "80e0443943851508f2fa427c1c48b714690691c7022082ec65551dbe4680c82e", + "https://bcr.bazel.build/modules/boost.move/1.87.0/MODULE.bazel": "5f26dacea41a8d617b6097219df961405c8a08a9315da14cefa8da15587a7fc5", + "https://bcr.bazel.build/modules/boost.move/1.87.0/source.json": "a95f9b258ddf918c3137c2b8d223b0b55cf9a17a52d4e19ccabfe650dcf118e3", + "https://bcr.bazel.build/modules/boost.mp11/1.87.0/MODULE.bazel": "af9644d2b668f3e014ac335a8a84ac74d9cb263454cd07cd5b84ce206f5dd81f", + "https://bcr.bazel.build/modules/boost.mp11/1.87.0/source.json": "fb17f9453d8e62a6425efccc3a827f29ddb4577aaffee68393c86bd21e517187", + "https://bcr.bazel.build/modules/boost.mpl/1.87.0/MODULE.bazel": "72eba3a8cc5711e15a852829d00482abbf7869ed2ee6f598b8f295261f3e5496", + "https://bcr.bazel.build/modules/boost.mpl/1.87.0/source.json": "81a99487d926f8a26dd5d80662e14baa0a6842b81a2a47f3f529064d0a36f36f", + "https://bcr.bazel.build/modules/boost.numeric_conversion/1.87.0/MODULE.bazel": "0164792509fbf8e6374eeb94a8e84ba8aa5e939620266177a112eac118e67f7c", + "https://bcr.bazel.build/modules/boost.numeric_conversion/1.87.0/source.json": "b19fe476ce051ee4b127f78b2ee4fcec917f60e2f0a06a26528c5666b355d623", + "https://bcr.bazel.build/modules/boost.optional/1.87.0/MODULE.bazel": "a12ca5b2394521bd60e432c9a98623d5a33edf9f7f891fb26c5d0840fb6b182e", + "https://bcr.bazel.build/modules/boost.optional/1.87.0/source.json": "38de88d9d67d2c7673a2c3a817a578c2ead946a11ae111f24f71859b401b0656", + "https://bcr.bazel.build/modules/boost.predef/1.87.0/MODULE.bazel": "4bb0cc9a326ea8ffde86044c2dbdf08b75d5e8fe7e4ea8c399b058262680a890", + "https://bcr.bazel.build/modules/boost.predef/1.87.0/source.json": "421162e76f175a64d22296b9cf3272441324fa994766acffd367182a777ad092", + "https://bcr.bazel.build/modules/boost.preprocessor/1.87.0/MODULE.bazel": "fdbcce15c585de47e4a5e9f6e2b9aa87f690a87e205eded400c5590f7e64535a", + "https://bcr.bazel.build/modules/boost.preprocessor/1.87.0/source.json": "ef9b9006890126f5880bb51ccbe8a97a95baf21606e2f30acdb1c30c0dd79758", + "https://bcr.bazel.build/modules/boost.program_options/1.87.0/MODULE.bazel": "186e44a5e01b9dedc91420141fba5b31cb73d04f374a6387f80ab53d725faafc", + "https://bcr.bazel.build/modules/boost.program_options/1.87.0/source.json": "53dacc9541ab7e68796c86cacb4d395b9a758a2a2fb2778f67ca5dcd1ef990e0", + "https://bcr.bazel.build/modules/boost.range/1.87.0/MODULE.bazel": "b1604553c080ca8620fb8e16267b397d4345986acae9ddd8277f36ad87236b60", + "https://bcr.bazel.build/modules/boost.range/1.87.0/source.json": "3477215270d2295f882b0b127347fddf69aecdb7cd77ba315e55199c36208661", + "https://bcr.bazel.build/modules/boost.regex/1.87.0/MODULE.bazel": "b91f176af90ce5ad96c8be6f83c4fb253fc8b391055e23a349f35e76e679e302", + "https://bcr.bazel.build/modules/boost.regex/1.87.0/source.json": "a887e4a0ac22ae2eb6203bbfbc2b6a9581edc1d65af0a8c392b30327a7688432", + "https://bcr.bazel.build/modules/boost.smart_ptr/1.87.0/MODULE.bazel": "a2a2b804d33fd47e37b33bb0b47a66b07aab616c12083654f4d9b92ab1308470", + "https://bcr.bazel.build/modules/boost.smart_ptr/1.87.0/source.json": "ff2c2bc2620fd9f404ea1937f38c1776a6b88ae17516c440eda88366fbd14c91", + "https://bcr.bazel.build/modules/boost.static_assert/1.87.0/MODULE.bazel": "06e7170d6e4ec08d6a4a83d1f0bce3f7fdacd89e4dcaa93d508f971e4e363d4f", + "https://bcr.bazel.build/modules/boost.static_assert/1.87.0/source.json": "d5b3f81fba6382b83885ff2dfaef07a5788323ed82d472d2fd629fcbba04ec7a", + "https://bcr.bazel.build/modules/boost.throw_exception/1.87.0/MODULE.bazel": "d02c1799ff6bc1bd0a9e7f149ac35a4851c89156be7d81805df9238d52047f02", + "https://bcr.bazel.build/modules/boost.throw_exception/1.87.0/source.json": "b52fb8b064d825ebb7047a72cf2c101a047dc60c1d0a89829b7ed8e39ff4fe6a", + "https://bcr.bazel.build/modules/boost.tokenizer/1.87.0/MODULE.bazel": "48ecacd7bf0fcb7cbf27b55a7d6bf82b988f308666bda2d51840450ea6d62401", + "https://bcr.bazel.build/modules/boost.tokenizer/1.87.0/source.json": "c39ec91706ad8eeab142528eac47737b6fc314b952ffdb9578ab95e5f3c690b4", + "https://bcr.bazel.build/modules/boost.tuple/1.87.0/MODULE.bazel": "94a17666a0d0e875a346b4e8db75ec05e3a1c9c7a681ac5eca80c18e68b5d547", + "https://bcr.bazel.build/modules/boost.tuple/1.87.0/source.json": "5f42023d26b3abefc034817a535d3d0ab06712f4740a93aa4e247287fba1cb47", + "https://bcr.bazel.build/modules/boost.type_index/1.87.0/MODULE.bazel": "a871d18870b21f00c89ba8dd469e027cd697363a9f3dd525176d91e837b8bb38", + "https://bcr.bazel.build/modules/boost.type_index/1.87.0/source.json": "fe14f80f9a857b92af204396d0e81bf57751113e37a77586b9610a7894407092", + "https://bcr.bazel.build/modules/boost.type_traits/1.87.0/MODULE.bazel": "8d2d44e992e85a59b6bd13b145ae27736d932a29e5aec743a0cfd014af5aee27", + "https://bcr.bazel.build/modules/boost.type_traits/1.87.0/source.json": "fd7434b8e36d19a1c8e9349e041ceaf19d0b98e90b6d4c7b86249735907cea34", + "https://bcr.bazel.build/modules/boost.typeof/1.87.0/MODULE.bazel": "c3cd122b8745c835229c58df8c46e81b944996b4bd3822f947873cb617374dd8", + "https://bcr.bazel.build/modules/boost.typeof/1.87.0/source.json": "ba36c7ce360efd31bf7ab5c1503b785de5c8db673056067ff8c7e3e94efccb68", + "https://bcr.bazel.build/modules/boost.unordered/1.87.0/MODULE.bazel": "bfee6daa324bb37c618fc073c50a0754985b9538e13de0e873381d41d634168c", + "https://bcr.bazel.build/modules/boost.unordered/1.87.0/source.json": "3b237fcd1dda18408dbdcb06984e50a13f0688fd0dca480a552f1ff37a6f50b5", + "https://bcr.bazel.build/modules/boost.utility/1.87.0/MODULE.bazel": "8ab710d4feac76acba004a1cac6d64823c812bfeefea18fb7b1a907c86a9ecf6", + "https://bcr.bazel.build/modules/boost.utility/1.87.0/source.json": "ab5744c8cc722dd83c96ae672e01010b944ad4e864e445de66f78164152a7a23", + "https://bcr.bazel.build/modules/boost.winapi/1.87.0/MODULE.bazel": "b36870b9f3ebe56c1dadd0507fb6ee6b5a59e13c5c0b784baaa509722bd0ffba", + "https://bcr.bazel.build/modules/boost.winapi/1.87.0/source.json": "8e363a11b36f5f78b4d00a4543a8b181313d78abdcc5dec6e438a5c4b2fd2a7e", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20211025-d4f1ab9/MODULE.bazel": "6ee6353f8b1a701fe2178e1d925034294971350b6d3ac37e67e5a7d463267834", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20230215-5c22014/MODULE.bazel": "4b03dc0d04375fa0271174badcd202ed249870c8e895b26664fd7298abea7282", + "https://bcr.bazel.build/modules/boringssl/0.0.0-20240530-2db0eb3/MODULE.bazel": "d0405b762c5e87cd445b7015f2b8da5400ef9a8dbca0bfefa6c1cea79d528a97", + "https://bcr.bazel.build/modules/boringssl/0.20240913.0/MODULE.bazel": "fcaa7503a5213290831a91ed1eb538551cf11ac0bc3a6ad92d0fef92c5bd25fb", + "https://bcr.bazel.build/modules/boringssl/0.20241024.0/MODULE.bazel": "b540cff73d948cb79cb0bc108d7cef391d2098a25adabfda5043e4ef548dbc87", + "https://bcr.bazel.build/modules/boringssl/0.20251124.0/MODULE.bazel": "1e107f2b52cc5e002924bc3b33bb60516f96f91b51eb523127df9ea9a944a3b4", + "https://bcr.bazel.build/modules/boringssl/0.20251124.0/source.json": "2f325a76db6c6e14c4db923a26aa9a4bfbbd03e61b9256311f460c18bfba6013", + "https://bcr.bazel.build/modules/buildifier_prebuilt/6.1.2/MODULE.bazel": "2ef4962c8b0b6d8d21928a89190755619254459bc67f870dc0ccb9ba9952d444", + "https://bcr.bazel.build/modules/buildifier_prebuilt/6.4.0/MODULE.bazel": "37389c6b5a40c59410b4226d3bb54b08637f393d66e2fa57925c6fcf68e64bf4", + "https://bcr.bazel.build/modules/buildifier_prebuilt/7.3.1/MODULE.bazel": "537faf0ad9f5892910074b8e43b4c91c96f1d5d86b6ed04bdbe40cf68aa48b68", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.2.0.2/MODULE.bazel": "a9b689711d5b69f9db741649b218c119b9fdf82924ba390415037e09798edd03", + "https://bcr.bazel.build/modules/buildifier_prebuilt/8.2.0.2/source.json": "51eb0a4b38aaaeab7fa64361576d616c4d8bfd0f17a0a10184aeab7084d79f8e", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/bzip2/1.0.8.bcr.3/MODULE.bazel": "29ecf4babfd3c762be00d7573c288c083672ab60e79c833ff7f49ee662e54471", + "https://bcr.bazel.build/modules/bzip2/1.0.8.bcr.3/source.json": "8be4a3ef2599693f759e5c0990a4cc5a246ac08db4c900a38f852ba25b5c39be", + "https://bcr.bazel.build/modules/c-ares/1.15.0/MODULE.bazel": "ba0a78360fdc83f02f437a9e7df0532ad1fbaa59b722f6e715c11effebaa0166", + "https://bcr.bazel.build/modules/c-ares/1.15.0/source.json": "5e3ed991616c5ec4cc09b0893b29a19232de4a1830eb78c567121bfea87453f7", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/MODULE.bazel": "e1eed53d233acbdcf024b4b0bc1528116d92c29713251b5154078ab1348cb600", + "https://bcr.bazel.build/modules/cel-spec/0.15.0/source.json": "ab7dccdf21ea2261c0f809b5a5221a4d7f8b580309f285fdf1444baaca75d44a", + "https://bcr.bazel.build/modules/civetweb/1.16/MODULE.bazel": "46a38f9daeb57392e3827fce7d40926be0c802bd23cdd6bfd3a96c804de42fae", + "https://bcr.bazel.build/modules/civetweb/1.16/source.json": "ba8b9585adb8355cb51b999d57172fd05e7a762c56b8d4bac6db42c99de3beb7", + "https://bcr.bazel.build/modules/container_structure_test/1.16.0/MODULE.bazel": "5bf2659d7724e232c10435e7ef3d5b3d3bc4bfc7825060e408b4a5e7d165ddf7", + "https://bcr.bazel.build/modules/container_structure_test/1.16.0/source.json": "c28ee996e071609f1c28fffce4297b0f2cb7f73387a6db56509310910641b188", + "https://bcr.bazel.build/modules/curl/8.4.0/MODULE.bazel": "0bc250aa1cb69590049383df7a9537c809591fcf876c620f5f097c58fdc9bc10", + "https://bcr.bazel.build/modules/curl/8.7.1/MODULE.bazel": "088221c35a2939c555e6e47cb31a81c15f8b59f4daa8009b1e9271a502d33485", + "https://bcr.bazel.build/modules/curl/8.7.1/source.json": "bf9890e809717445b10a3ddc323b6d25c46631589c693a232df8310a25964484", + "https://bcr.bazel.build/modules/cython/3.0.11-1/MODULE.bazel": "868b3f5c956c3657420d2302004c6bb92606bfa47e314bab7f2ba0630c7c966c", + "https://bcr.bazel.build/modules/cython/3.0.11-1/source.json": "da318be900b8ca9c3d1018839d3bebc5a8e1645620d0848fa2c696d4ecf7c296", + "https://bcr.bazel.build/modules/download_utils/1.0.1/MODULE.bazel": "f1d0afade59e37de978506d6bbf08d7fe5f94964e86944aaf58efcead827b41b", + "https://bcr.bazel.build/modules/download_utils/1.2.2/MODULE.bazel": "7d185ec9dd3c5ee277f269e3a8e5f09b9de4cb7ba34d06b93dce9bf41c1279f8", + "https://bcr.bazel.build/modules/download_utils/1.2.2/source.json": "c88be2bc48c98371d35665b805f307a647c98c83327345c918d9088822d77928", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20241214-918efc9/MODULE.bazel": "24e05f6f52f37be63a795192848555a2c8c855e7814dbc1ed419fb04a7005464", + "https://bcr.bazel.build/modules/envoy_api/0.0.0-20241214-918efc9/source.json": "212043ab69d87f7a04aa4f627f725b540cff5e145a3a31a9403d8b6ec2e920c9", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "cdf8cbe5ee750db04b78878c9633cc76e80dcf4416cbe982ac3a9222f80713c8", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.3/MODULE.bazel": "f1b7bb2dd53e8f2ef984b39485ec8a44e9076dda5c4b8efd2fb4c6a6e856a31d", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.3/source.json": "ebe931bfe362e4b41e59ee00a528db6074157ff2ced92eb9e970acab2e1089c9", + "https://bcr.bazel.build/modules/gazelle/0.27.0/MODULE.bazel": "3446abd608295de6d90b4a8a118ed64a9ce11dcb3dda2dc3290a22056bd20996", + "https://bcr.bazel.build/modules/gazelle/0.30.0/MODULE.bazel": "f888a1effe338491f35f0e0e85003b47bb9d8295ccba73c37e07702d8d31c65b", + "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8", + "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350", + "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a", + "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0", + "https://bcr.bazel.build/modules/gazelle/0.36.0/source.json": "0823f097b127e0201ae55d85647c94095edfe27db0431a7ae880dcab08dfaa04", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/google_benchmark/1.8.4/MODULE.bazel": "c6d54a11dcf64ee63545f42561eda3fd94c1b5f5ebe1357011de63ae33739d5e", + "https://bcr.bazel.build/modules/google_benchmark/1.9.4/MODULE.bazel": "3bab7c17c10580f87b647478a72a05621f88abc275afb97b578c828f56e59d45", + "https://bcr.bazel.build/modules/google_benchmark/1.9.5/MODULE.bazel": "8a85cfd90b1e45e6e68f1aa2aa9efce3c04add57df732571d7fd54c07e7c5143", + "https://bcr.bazel.build/modules/google_benchmark/1.9.5/source.json": "0bd357fd9db30ee31d5eb4c78b1086ce3d79b4423ce76de19e8a2fa7b2fa2e10", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240326-1c8d509c5/MODULE.bazel": "a4b7e46393c1cdcc5a00e6f85524467c48c565256b22b5fae20f84ab4a999a68", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/MODULE.bazel": "117b7c7be7327ed5d6c482274533f2dbd78631313f607094d4625c28203cacdf", + "https://bcr.bazel.build/modules/googleapis/0.0.0-20240819-fe8ba054a/source.json": "b31fc7eb283a83f71d2e5bfc3d1c562d2994198fa1278409fbe8caec3afc1d3e", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.17.0.bcr.1/MODULE.bazel": "9f8e815fba6e81dee850a33068166989000eabcf7690d2127a975c2ebda6baae", + "https://bcr.bazel.build/modules/googletest/1.17.0.bcr.2/MODULE.bazel": "827f54f492a3ce549c940106d73de332c2b30cebd0c20c0bc5d786aba7f116cb", + "https://bcr.bazel.build/modules/googletest/1.17.0.bcr.2/source.json": "3664514073a819992320ffbce5825e4238459df344d8b01748af2208f8d2e1eb", + "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46", + "https://bcr.bazel.build/modules/grpc-java/1.62.2/MODULE.bazel": "99b8771e8c7cacb130170fed2a10c9e8fed26334a93e73b42d2953250885a158", + "https://bcr.bazel.build/modules/grpc-java/1.66.0/MODULE.bazel": "86ff26209fac846adb89db11f3714b3dc0090fb2fb81575673cc74880cda4e7e", + "https://bcr.bazel.build/modules/grpc-java/1.66.0/source.json": "f841b339ff8516c86c3a5272cd053194dd0cb2fdd63157123835e1157a28328d", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "88de79051e668a04726e9ea94a481ec6f1692086735fd6f488ab908b3b909238", + "https://bcr.bazel.build/modules/grpc-proto/0.0.0-20240627-ec30f58/source.json": "5035d379c61042930244ab59e750106d893ec440add92ec0df6a0098ca7f131d", + "https://bcr.bazel.build/modules/grpc/1.41.0/MODULE.bazel": "5bcbfc2b274dabea628f0649dc50c90cf36543b1cfc31624832538644ad1aae8", + "https://bcr.bazel.build/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "cd5b1eb276b806ec5ab85032921f24acc51735a69ace781be586880af20ab33f", + "https://bcr.bazel.build/modules/grpc/1.62.1/MODULE.bazel": "2998211594b8a79a6b459c4e797cfa19f0fb8b3be3149760ec7b8c99abfd426f", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "0fa2b0fd028ce354febf0fe90f1ed8fecfbfc33118cddd95ac0418cc283333a0", + "https://bcr.bazel.build/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "f6047e89faf488f5e3e65cb2594c6f5e86992abec7487163ff6b623526e543b0", + "https://bcr.bazel.build/modules/grpc/1.70.1/MODULE.bazel": "b800cd8e3e7555c1e61cba2e02d3a2fcf0e91f66e800db286d965d3b7a6a721a", + "https://bcr.bazel.build/modules/grpc/1.70.1/source.json": "e2977ea6cf9f2755418934d4ae134a6569713dd200fd7aded86a4b7f1b86efc9", + "https://bcr.bazel.build/modules/jq.bzl/0.1.0/MODULE.bazel": "2ce69b1af49952cd4121a9c3055faa679e748ce774c7f1fda9657f936cae902f", + "https://bcr.bazel.build/modules/jq.bzl/0.4.0/MODULE.bazel": "a7b39b37589f2b0dad53fd6c1ccaabbdb290330caa920d7ef3e6aad068cd4ab2", + "https://bcr.bazel.build/modules/jq.bzl/0.4.0/source.json": "52ec7530c4618e03f634b30ff719814a68d7d39c235938b7aa2abbfe1eb1c52c", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/libpfm/4.11.0.bcr.1/MODULE.bazel": "e5362dadc90aab6724c83a2cc1e67cbed9c89a05d97fb1f90053c8deb1e445c8", + "https://bcr.bazel.build/modules/libpfm/4.11.0.bcr.1/source.json": "0646414d9037f8aad148781dd760bec90b0b25ac12fda5e03f8aadbd6b9c61e6", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/MODULE.bazel": "8e380e4698107c5f8766264d4df92e36766248447858db28187151d884995a09", + "https://bcr.bazel.build/modules/mbedtls/3.6.0/source.json": "1dbe7eb5258050afcc3806b9d43050f71c6f539ce0175535c670df606790b30c", + "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/MODULE.bazel": "87023db2f55fc3a9949c7b08dc711fae4d4be339a80a99d04453c4bb3998eefc", + "https://bcr.bazel.build/modules/nlohmann_json/3.12.0/MODULE.bazel": "21f19a4479e994c1546cf6f10c65d2fa464cd95f49eebad98dc5bac49c801dab", + "https://bcr.bazel.build/modules/nlohmann_json/3.12.0/source.json": "6bf17b358c467effad70c02ab43e2d65939d740f667157397f583435909cfae1", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "02201d2921dadb4ec90c4980eca4b2a02904eddcf6fa02f3da7594fb7b0d821c", + "https://bcr.bazel.build/modules/opencensus-cpp/0.0.0-20230502-50eb5de/source.json": "f50efc07822f5425bd1d3e40e977484f9c0142463052717d40ec85cd6744243e", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/MODULE.bazel": "4a2e8b4d0b544002502474d611a5a183aa282251e14f6a01afe841c0c1b10372", + "https://bcr.bazel.build/modules/opencensus-proto/0.4.1/source.json": "a7d956700a85b833c43fc61455c0e111ab75bab40768ed17a206ee18a2bbe38f", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.14.2/MODULE.bazel": "089a5613c2a159c7dfde098dabfc61e966889c7d6a81a98422a84c51535ed17d", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.16.0/MODULE.bazel": "b7379a140f538cea3f749179a2d481ed81942cc6f7b05a6113723eb34ac3b3e7", + "https://bcr.bazel.build/modules/opentelemetry-cpp/1.16.0/source.json": "da0cf667713b1e48d7f8912b100b4e0a8284c8a95717af5eb8c830d699e61cf5", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.1.0/MODULE.bazel": "a49f406e99bf05ab43ed4f5b3322fbd33adfd484b6546948929d1316299b68bf", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.3.1/MODULE.bazel": "0141a50e989576ee064c11ce8dd5ec89993525bd9f9a09c5618e4dacc8df9352", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.4.0.bcr.1/MODULE.bazel": "5ceaf25e11170d22eded4c8032728b4a3f273765fccda32f9e94f463755c4167", + "https://bcr.bazel.build/modules/opentelemetry-proto/1.4.0.bcr.1/source.json": "fb9e01517460cfad8bafab082f2e1508d3cc2b7ed700cff19f3c7c84b146e5eb", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/MODULE.bazel": "b3925269f63561b8b880ae7cf62ccf81f6ece55b62cd791eda9925147ae116ec", + "https://bcr.bazel.build/modules/opentracing-cpp/1.6.0/source.json": "da1cb1add160f5e5074b7272e9db6fd8f1b3336c15032cd0a653af9d2f484aed", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/source.json": "e53a759a72488d2c0576f57491ef2da0cf4aab05ac0997314012495935531b73", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", + "https://bcr.bazel.build/modules/prometheus-cpp/1.2.4/MODULE.bazel": "0fbe5dcff66311947a3f6b86ebc6a6d9328e31a28413ca864debc4a043f371e5", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/MODULE.bazel": "ce82e086bbc0b60267e970f6a54b2ca6d0f22d3eb6633e00e2cc2899c700f3d8", + "https://bcr.bazel.build/modules/prometheus-cpp/1.3.0/source.json": "8cb66b4e535afc718e9d104a3db96ccb71a42ee816a100e50fd0d5ac843c0606", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a", + "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.1/MODULE.bazel": "8f04d38c2da40a3715ff6bdce4d32c5981e6432557571482d43a62c31a24c2cf", + "https://bcr.bazel.build/modules/protobuf/26.0.bcr.2/MODULE.bazel": "62e0b84ca727bdeb55a6fe1ef180e6b191bbe548a58305ea1426c158067be534", + "https://bcr.bazel.build/modules/protobuf/26.0/MODULE.bazel": "8402da964092af40097f4a205eec2a33fd4a7748dc43632b7d1629bfd9a2b856", + "https://bcr.bazel.build/modules/protobuf/27.0-rc2/MODULE.bazel": "b2b0dbafd57b6bec0ca9b251da02e628c357dab53a097570aa7d79d020f107cf", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", + "https://bcr.bazel.build/modules/protobuf/29.1/source.json": "04cca85dce26b895ed037d98336d860367fe09919208f2ad383f0df1aff63199", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573", + "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/MODULE.bazel": "c4bd2c850211ff5b7dadf9d2d0496c1c922fdedc303c775b01dfd3b3efc907ed", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4.bcr.2/source.json": "4cc97f70b521890798058600a927ce4b0def8ee84ff2a5aa632aabcb4234aa0b", + "https://bcr.bazel.build/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "b8913c154b16177990f6126d2d2477d187f9ddc568e95ee3e2d50fc65d2c494a", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/2.13.6/MODULE.bazel": "2d746fda559464b253b2b2e6073cb51643a2ac79009ca02100ebbc44b4548656", + "https://bcr.bazel.build/modules/pybind11_bazel/2.13.6/source.json": "6aa0703de8efb20cc897bbdbeb928582ee7beaf278bcd001ac253e1605bddfae", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/MODULE.bazel": "82fbcb2e42f9e0040e76ccc74c06c3e46dfd33c64ca359293f8b84df0e6dff4c", + "https://bcr.bazel.build/modules/rapidjson/1.1.0.bcr.20241007/source.json": "5c42389ad0e21fc06b95ad7c0b730008271624a2fa3292e0eab5f30e15adeee3", + "https://bcr.bazel.build/modules/rapidjson/1.1.0/MODULE.bazel": "0367b53ebffe290358729893e7c435da379397738e09ae45c845e1e4f59fa3fc", + "https://bcr.bazel.build/modules/re2/2021-09-01/MODULE.bazel": "bcb6b96f3b071e6fe2d8bed9cc8ada137a105f9d2c5912e91d27528b3d123833", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-05-01/MODULE.bazel": "55a3f059538f381107824e7d00df5df6d061ba1fb80e874e4909c0f0549e8f3e", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2025-08-12.bcr.1/MODULE.bazel": "e09b434b122bfb786a69179f9b325e35cb1856c3f56a7a81dd61609260ed46e1", + "https://bcr.bazel.build/modules/re2/2025-08-12.bcr.1/source.json": "a8ae7c09533bf67f9f6e5122d884d5741600b09d78dca6fc0f2f8d2ee0c2d957", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366", + "https://bcr.bazel.build/modules/rules_apple/3.5.1/MODULE.bazel": "3d1bbf65ad3692003d36d8a29eff54d4e5c1c5f4bfb60f79e28646a924d9101c", + "https://bcr.bazel.build/modules/rules_buf/0.1.1/MODULE.bazel": "6189aec18a4f7caff599ad41b851ab7645d4f1e114aa6431acf9b0666eb92162", + "https://bcr.bazel.build/modules/rules_buf/0.5.2/MODULE.bazel": "5f2492d284ab9bedf2668178303abf5f3cd7d8cdf85d768951008e88456e9c6a", + "https://bcr.bazel.build/modules/rules_buf/0.5.2/source.json": "41876d4834c0832de4b393de6e55dfd1cb3b25d3109e4ba90eb7fb57c560e0d9", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.5/MODULE.bazel": "be41f87587998fe8890cd82ea4e848ed8eb799e053c224f78f3ff7fe1a1d9b74", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.2/MODULE.bazel": "557ddc3a96858ec0d465a87c0a931054d7dcfd6583af2c7ed3baf494407fd8d0", + "https://bcr.bazel.build/modules/rules_cc/0.1.4/MODULE.bazel": "bb03a452a7527ac25a7518fb86a946ef63df860b9657d8323a0c50f8504fb0b9", + "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/MODULE.bazel": "9242fa89f950c6ef7702801ab53922e99c69b02310c39fb6e62b2bd30df2a1d4", + "https://bcr.bazel.build/modules/rules_cc/0.2.16/source.json": "d03d5cde49376d87e14ec14b666c56075e5e3926930327fd5d0484a1ff2ac1cc", + "https://bcr.bazel.build/modules/rules_cc/0.2.4/MODULE.bazel": "1ff1223dfd24f3ecf8f028446d4a27608aa43c3f41e346d22838a4223980b8cc", + "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", + "https://bcr.bazel.build/modules/rules_diff/1.0.0/MODULE.bazel": "1739509d8db9a6cd7d3584822340d3dfe1f9f27e62462fbca60aa061d88741b2", + "https://bcr.bazel.build/modules/rules_diff/1.0.0/source.json": "fc3824aed007b4db160ffb994036c6e558550857b6634a8e9ccee3e74c659312", + "https://bcr.bazel.build/modules/rules_distroless/0.6.1/MODULE.bazel": "ce96d59d70695eadf53f45d752fef38f7ac59c117f5db32bb61767a732fe090b", + "https://bcr.bazel.build/modules/rules_distroless/0.6.1/source.json": "bdea3dd4883fed8478564675d7bcc15eb3bd366245ec51c6d317d100c6af59b5", + "https://bcr.bazel.build/modules/rules_doxygen/2.5.0/MODULE.bazel": "9313b96bdc6e2d3d6f32b79c4a28ba297af796111cd8d5fa00a4be6dd8ec6d4a", + "https://bcr.bazel.build/modules/rules_doxygen/2.5.0/source.json": "37944e37dd56f709449d2885cd5397d6b1a50905c91d3f302f46f23c89576cc8", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "b9527010e5fef060af92b6724edb3691970a5b1f76f74b21d39f7d433641be60", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", + "https://bcr.bazel.build/modules/rules_go/0.33.0/MODULE.bazel": "a2b11b64cd24bf94f57454f53288a5dacfe6cb86453eee7761b7637728c1910c", + "https://bcr.bazel.build/modules/rules_go/0.38.1/MODULE.bazel": "fb8e73dd3b6fc4ff9d260ceacd830114891d49904f5bda1c16bc147bcc254f71", + "https://bcr.bazel.build/modules/rules_go/0.39.1/MODULE.bazel": "d34fb2a249403a5f4339c754f1e63dc9e5ad70b47c5e97faee1441fc6636cd61", + "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8", + "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270", + "https://bcr.bazel.build/modules/rules_go/0.45.1/MODULE.bazel": "6d7884f0edf890024eba8ab31a621faa98714df0ec9d512389519f0edff0281a", + "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd", + "https://bcr.bazel.build/modules/rules_go/0.48.0/MODULE.bazel": "d00ebcae0908ee3f5e6d53f68677a303d6d59a77beef879598700049c3980a03", + "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0", + "https://bcr.bazel.build/modules/rules_go/0.50.1/source.json": "205765fd30216c70321f84c9a967267684bdc74350af3f3c46c857d9f80a4fa2", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.1.0/MODULE.bazel": "324b6478b0343a3ce7a9add8586ad75d24076d6d43d2f622990b9c1cfd8a1b15", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/5.5.0/MODULE.bazel": "486ad1aa15cdc881af632b4b1448b0136c76025a1fe1ad1b65c5899376b83a50", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.0.6/MODULE.bazel": "6ddb07d9857a1a3accc9f6d005f20c969c4659c7710e6269a51db3527e0ea969", + "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.15.1/MODULE.bazel": "5071eebf0fd602ab0617f846e0e0d8f388d66c961513c736e0ac4a1dcde3ff2c", + "https://bcr.bazel.build/modules/rules_java/8.15.1/source.json": "e48286d5819767bc5b3d457539ae7f94e28a9b3e55d092d5c47176cb6a2a289b", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.3/MODULE.bazel": "e90505b7a931d194245ffcfb6ff4ca8ef9d46b4e830d12e64817752e0198e2ed", + "https://bcr.bazel.build/modules/rules_java/8.8.0/MODULE.bazel": "de589d0880911ac007abd521b9f0ddcd8b0dbd05c8553e6f8124a050b83acf7d", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.0/MODULE.bazel": "37c93a5a78d32e895d52f86a8d0416176e915daabd029ccb5594db422e87c495", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_multirun/0.9.0/MODULE.bazel": "32d628ef586b5b23f67e55886b7bc38913ea4160420d66ae90521dda2ff37df0", + "https://bcr.bazel.build/modules/rules_multirun/0.9.0/source.json": "e882ba77962fa6c5fe68619e5c7d0374ec9a219fb8d03c42eadaf6d0243771bd", + "https://bcr.bazel.build/modules/rules_multitool/0.11.0/MODULE.bazel": "8d9dda78d2398e136300d3ef4fbcc89ede7c32c158d8c016fa7d032df41c4aaf", + "https://bcr.bazel.build/modules/rules_multitool/0.4.0/MODULE.bazel": "15517987d5c00c9e7faab41fbe22ee67a350b6eabcc1e08baded5c6d9025897f", + "https://bcr.bazel.build/modules/rules_multitool/1.2.0/MODULE.bazel": "8d818d6104f4030930291bbbbc5684702c237dbcdee7229097543e6a6035adaa", + "https://bcr.bazel.build/modules/rules_multitool/1.9.0/MODULE.bazel": "8a042b0dbf35e4aaa94c28ad69efa75c9e673e9ea4bd5c0fb70bab75ef9c636b", + "https://bcr.bazel.build/modules/rules_multitool/1.9.0/source.json": "d9a01604a8b5c4a0e9430824dd34ca5b1b3f5b25277b755e8f3ae91f2c9362a3", + "https://bcr.bazel.build/modules/rules_nodejs/5.8.2/MODULE.bazel": "6bc03c8f37f69401b888023bf511cb6ee4781433b0cb56236b2e55a21e3a026a", + "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.3/MODULE.bazel": "b66eadebd10f1f1b25f52f95ab5213a57e82c37c3f656fcd9a57ad04d2264ce7", + "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/MODULE.bazel": "7f9ea68a0ce6d82905ce9f74e76ab8a8b4531ed4c747018c9d76424ad0b3370d", + "https://bcr.bazel.build/modules/rules_nodejs/6.5.2/source.json": "6a6ca0940914d55c550d1417cad13a56c9900e23f651a762d8ccc5a64adcf661", + "https://bcr.bazel.build/modules/rules_oci/1.8.0/MODULE.bazel": "a4d656f6a0e7c7c1a73b9e394e37c8f9bbc237143ce9e19deba7a532fe189552", + "https://bcr.bazel.build/modules/rules_oci/1.8.0/source.json": "c14770a5dfba2980d8f1ebeaac0bfa4848ffb7febfca84ac2a7fd7e8f4d9e1e3", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.1.0/MODULE.bazel": "9db8031e71b6ef32d1846106e10dd0ee2deac042bd9a2de22b4761b0c3036453", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/MODULE.bazel": "c7db3c2b407e673c7a39e3625dc05dc9f12d6682cbd82a3a5924a13b491eda7e", + "https://bcr.bazel.build/modules/rules_pkg/1.2.0/source.json": "9062e00845bf91a4247465d371baa837adf9b6ff44c542f73ba084f07667e1dc", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc2/MODULE.bazel": "e17f94f8a347e2c808517b65d74988839d2d62daceb50073e44060193b785eb1", + "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.20.0/MODULE.bazel": "bfe14d17f20e3fe900b9588f526f52c967a6f281e47a1d6b988679bd15082286", + "https://bcr.bazel.build/modules/rules_python/0.22.0/MODULE.bazel": "b8057bafa11a9e0f4b08fc3b7cd7bee0dcbccea209ac6fc9a3ff051cd03e19e9", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.26.0/MODULE.bazel": "42cb98cd15954e83b96b540dcc6d5a618eb061f056147ac4ea46e687a066a7c7", + "https://bcr.bazel.build/modules/rules_python/0.27.1/MODULE.bazel": "65dc875cc1a06c30d5bbdba7ab021fd9e551a6579e408a3943a61303e2228a53", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.29.0/MODULE.bazel": "2ac8cd70524b4b9ec49a0b8284c79e4cd86199296f82f6e0d5da3f783d660c82", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", + "https://bcr.bazel.build/modules/rules_python/0.34.0/MODULE.bazel": "1d623d026e075b78c9fde483a889cda7996f5da4f36dffb24c246ab30f06513a", + "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", + "https://bcr.bazel.build/modules/rules_python/1.5.1/MODULE.bazel": "acfe65880942d44a69129d4c5c3122d57baaf3edf58ae5a6bd4edea114906bf5", + "https://bcr.bazel.build/modules/rules_python/1.8.3/MODULE.bazel": "f343e159b59701334be3914416b9f1b72845801ba47920fcb288af4ce8c5cce3", + "https://bcr.bazel.build/modules/rules_python/1.8.3/source.json": "e5439f308e3c6f79f318a0f87108db46fc575be89370c3dfb3f7e0eaa571a3f8", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.4.0/MODULE.bazel": "0f8f11bb3cd11755f0b48c1de0bbcf62b4b34421023aa41a2fc74ef68d9584f0", + "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", + "https://bcr.bazel.build/modules/rules_shell/0.5.0/MODULE.bazel": "8c8447370594d45539f66858b602b0bb2cb2d3401a4ebb9ad25830c59c0f366d", + "https://bcr.bazel.build/modules/rules_shell/0.6.0/MODULE.bazel": "c65e3ab217f64c3960e3ab55a53b430babcac6f0870fe79192812ae68a596a81", + "https://bcr.bazel.build/modules/rules_shell/0.6.0/source.json": "9431501bbc2114effd3b625b30555c5de51b7d291c1aee48b6f4d09d82126b3e", + "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca", + "https://bcr.bazel.build/modules/rules_swift/1.18.0/MODULE.bazel": "a6aba73625d0dc64c7b4a1e831549b6e375fbddb9d2dde9d80c9de6ec45b24c9", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186", + "https://bcr.bazel.build/modules/stardoc/0.5.0/MODULE.bazel": "f9f1f46ba8d9c3362648eea571c6f9100680efc44913618811b58cc9c02cd678", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb", + "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", + "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", + "https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/MODULE.bazel": "cc1acd85da33c80e430b65219a620d54d114628df24a618c3a5fa0b65e988da9", + "https://bcr.bazel.build/modules/tar.bzl/0.7.0/source.json": "9becb80306f42d4810bfa16379fb48aad0b01ce5342bc12fe47dcd6af3ac4d7a", + "https://bcr.bazel.build/modules/toolchain_utils/1.0.2/MODULE.bazel": "9b8be503a4fcfd3b8b952525bff0869177a5234d5c35dc3e566b9f5ca2f755a1", + "https://bcr.bazel.build/modules/toolchain_utils/1.0.2/source.json": "88769ec576dddacafd8cca4631812cf8eead89f10a29d9405d9f7a553de6bf87", + "https://bcr.bazel.build/modules/toolchains_protoc/0.2.1/MODULE.bazel": "2f08433ff5e659069b3a1abfee2377d68f510f2de1da50678ed992c455b4ff91", + "https://bcr.bazel.build/modules/upb/0.0.0-20211020-160625a/MODULE.bazel": "6cced416be2dc5b9c05efd5b997049ba795e5e4e6fafbe1624f4587767638928", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9", + "https://bcr.bazel.build/modules/upb/0.0.0-20230907-e7430e6/MODULE.bazel": "3a7dedadf70346e678dc059dbe44d05cbf3ab17f1ce43a1c7a42edc7cbf93fd9", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/MODULE.bazel": "cea509976a77e34131411684ef05a1d6ad194dd71a8d5816643bc5b0af16dc0f", + "https://bcr.bazel.build/modules/xds/0.0.0-20240423-555b57e/source.json": "7227e1fcad55f3f3cab1a08691ecd753cb29cc6380a47bc650851be9f9ad6d20", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.6/MODULE.bazel": "644e9a02e652d4dd109c4b71d27664c031b221c6c592091591108141a9bc9a15", + "https://bcr.bazel.build/modules/xz/5.4.5.bcr.6/source.json": "d8f9d7dc65556a22bb2640fe3d493149f292e79019af6d1f2d66a12924ff423d", + "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", + "https://bcr.bazel.build/modules/yq.bzl/0.3.1/MODULE.bazel": "9bcb7151b3cd4681b89d350530eaf7b45e32a44dda94843b8932b0cb1cd4594a", + "https://bcr.bazel.build/modules/yq.bzl/0.3.1/source.json": "f0b0f204a2a6b0e34b4c9541efe8c04f2ef1af65948daa784eccea738b21dbd2", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.2.13/MODULE.bazel": "aa6deb1b83c18ffecd940c4119aff9567cd0a671d7bba756741cb2ef043a29d5", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.1/MODULE.bazel": "6a9fe6e3fc865715a7be9823ce694ceb01e364c35f7a846bf0d2b34762bc066b", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.8/MODULE.bazel": "772c674bb78a0342b8caf32ab5c25085c493ca4ff08398208dcbe4375fe9f776", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.8/source.json": "cf377d76800dfc3d3b71e9dd4a8c53a62837cbce37cc4f25e6207b15fc1e8f2b", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198", + "https://bcr.bazel.build/modules/zlib/1.3/MODULE.bazel": "6a9c02f19a24dcedb05572b2381446e27c272cd383aed11d41d99da9e3167a72", + "https://bcr.bazel.build/modules/zstd/1.5.7/MODULE.bazel": "f5780cdbd6f4c5bb985a20f839844316fe48fb5e463056f372dbc37cfabdf450", + "https://bcr.bazel.build/modules/zstd/1.5.7/source.json": "f72c48184b6528ffc908a5a2bcbf3070c6684f3db03da2182c8ca999ae5f5cfd", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20210324.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20211102.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20220623.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230125.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20230802.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240116.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20240722.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20250127.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/abseil-cpp/20250512.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/ape/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.11.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.15.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.17.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.22.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/apple_support/1.23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.28.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.31.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.38.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.42.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/1.42.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.20.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.22.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_bazel_lib/2.9.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_esbuild/0.21.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/1.33.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/1.40.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/2.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_js/2.3.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/0.12.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.0.0-rc9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.13.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.4.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/1.5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_lint/2.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_py/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_py/1.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_rules_ts/3.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_tools_telemetry/0.2.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/0.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.10.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.13.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.17.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.18.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.19.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.20.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.21.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.28.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.30.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_features/1.9.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0-beta.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0-rc.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_lib/3.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.8.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bazel_skylib/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.any/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.array/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.assert/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.bind/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.concept_check/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.config/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.container/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.container_hash/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.conversion/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.core/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.describe/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.detail/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.function/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.function_types/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.functional/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.fusion/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.integer/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.interprocess/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.intrusive/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.io/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.iterator/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.lexical_cast/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.move/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.mp11/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.mpl/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.numeric_conversion/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.optional/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.predef/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.preprocessor/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.program_options/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.range/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.regex/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.smart_ptr/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.static_assert/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.throw_exception/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.tokenizer/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.tuple/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.type_index/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.type_traits/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.typeof/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.unordered/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.utility/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boost.winapi/1.87.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20211025-d4f1ab9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20230215-5c22014/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.0.0-20240530-2db0eb3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.20240913.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.20241024.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/boringssl/0.20251124.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/6.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/6.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/7.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildifier_prebuilt/8.2.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/buildozer/7.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/bzip2/1.0.8.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/c-ares/1.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/cel-spec/0.15.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/civetweb/1.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/container_structure_test/1.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/curl/8.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/curl/8.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/cython/3.0.11-1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/download_utils/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/download_utils/1.2.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/envoy_api/0.0.0-20241214-918efc9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gawk/5.3.2.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.30.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.32.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.33.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/gazelle/0.36.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.8.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.9.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/google_benchmark/1.9.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googleapis/0.0.0-20240326-1c8d509c5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googleapis/0.0.0-20240819-fe8ba054a/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.15.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.17.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.17.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/googletest/1.17.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.62.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.66.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.41.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.56.3.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.62.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.66.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.66.0.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc/1.70.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jq.bzl/0.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jq.bzl/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/jsoncpp/1.9.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/libpfm/4.11.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/libpfm/4.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/mbedtls/3.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/nlohmann_json/3.11.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/nlohmann_json/3.12.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/nlohmann_json/3.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opencensus-cpp/0.0.0-20230502-50eb5de/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opencensus-proto/0.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-cpp/1.14.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-cpp/1.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentelemetry-proto/1.4.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/opentracing-cpp/1.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/package_metadata/0.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.10/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.11/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/0.0.9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/platforms/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/prometheus-cpp/1.2.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/prometheus-cpp/1.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/21.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/24.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/26.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/27.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0-rc3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/29.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protobuf/3.19.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protoc-gen-validate/1.0.4.bcr.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/protoc-gen-validate/1.0.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.11.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.12.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/pybind11_bazel/2.13.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rapidjson/1.1.0.bcr.20241007/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rapidjson/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2021-09-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2023-09-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-05-01/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2024-07-02/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/re2/2025-08-12.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_android/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_apple/3.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_apple/3.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_buf/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_buf/0.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.10/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.13/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.14/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.15/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.17/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.0.9/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.1.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.14/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.16/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_cc/0.2.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_diff/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_distroless/0.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_doxygen/2.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_foreign_cc/0.10.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_fuzzing/0.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.33.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.38.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.39.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.41.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.42.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.45.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.46.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.48.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_go/0.50.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/4.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.3.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/5.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/6.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.0.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.10.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.12.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.3.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/7.6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.14.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.15.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.3.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.6.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_java/8.8.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/4.4.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_jvm_external/6.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_kotlin/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_kotlin/1.9.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/0.0.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/0.0.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_license/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multirun/0.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/0.11.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_multitool/1.9.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/5.8.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.3.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_nodejs/6.5.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_oci/1.8.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.0.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_pkg/1.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/4.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0-rc2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/6.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/7.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_proto/7.1.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.10.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.20.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.22.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.22.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.23.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.25.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.26.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.27.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.28.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.29.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.31.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.33.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.34.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.37.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/0.40.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.0.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_python/1.8.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.2.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.3.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.4.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.4.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_shell/0.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/1.16.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/1.18.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/rules_swift/2.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_cpp_toolchains/0.2.2/MODULE.bazel": "343a1892b1d5c616e0b4cbecfb5e548fa69328d22bb4fd5862bdd3cfa902142b", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_bazel_cpp_toolchains/0.2.2/source.json": "624c1addd22fff7fc894d0571d35c8e47cc2d3ff9e75b15b8fb1cff021391a30", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cr_checker/0.2.2/MODULE.bazel": "dc36d9c35543db918c3fb5b93a8e684431f56c7c784cf2a1b90f35802a373c98", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cr_checker/0.3.1/MODULE.bazel": "f49e037d7fbc0b2a8b2734fc6b47334e8cc8589ca7a5aa0f3ccca85cc5f79fac", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_cr_checker/0.3.1/source.json": "ad038d99c0e2a59cca3a7fa1aac6d87cd0d752314b65b52a91451ab0bd0f7171", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_dash_license_checker/0.1.2/MODULE.bazel": "89ba8c942dfd8d05cbf59b48868c919207aa189c670f97194078d5b8e09c6a8a", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_dash_license_checker/0.1.2/source.json": "f327a8103a33b0668c5cb35a4e68593c5ead8c946abab347b4a09481aaf28465", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_format_checker/0.1.1/MODULE.bazel": "1acc254faa90e9f97b79ac69af25b6c21c561f8d6079914f6352b9b20d26bd37", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_format_checker/0.1.1/source.json": "e3d10be878d1a007967b75a5c6d9c3ec3d47c320685904b7f31c689b3cbcdb3a", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.4/MODULE.bazel": "53bd16dfbb1fb8ecf6822fb26f9f4e8333bac7b14d12bb02bf84078063820a31", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_python_basics/0.3.4/source.json": "28ed0207a16f8498a84fae4983fa73060805003a4fbd68c6d749e2f1cc14601f", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.2/MODULE.bazel": "ade2bad4a331b02d9b7e7d9842e8de8c6fded6186486e02c4f7db5cd4b71d34d", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.3/MODULE.bazel": "9e8310a75c13ccebc49fb9cbf7acc6c1b75654292b2ca907fb5d513133dbf6f3", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.5/MODULE.bazel": "7de02547bdf121d3dedf5141b97f0fd9a545bd255ff5c7b699056b35816ffad9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_rust_policies/0.0.5/source.json": "22c8bf0a5cbf7c7b06f774f3f66498e0bc14346a8b2208f7427a8fbb78a42547", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_starpls_lsp/0.1.0/MODULE.bazel": "b2f8c4c8d8e851706255ff9002b448bff6e040b8f0c6adedbde2a09375aa16cc", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_starpls_lsp/0.1.0/source.json": "3c7c49977b01a990f4f0a6d65c00e75a88433af7ad21a564db338cd079a92913", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_qnx/0.0.7/MODULE.bazel": "2ae1df18803227f4edce7dfa1529ace724f60d9f6d048e20cd3aea1ae1429ba9", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_qnx/0.0.7/source.json": "31864e9f2009cab9ebb50c1afe66f65c74a905e955defe76eb1f4a5ccf12f3bd", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_rust/0.4.0/MODULE.bazel": "e48f2aca62f92a44a939e1347715e7d767b647fc9f8e664e598c56d1d057ad49", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/score_toolchains_rust/0.4.0/source.json": "dcaa0e66166906ed54dc4feb28d02dda54be87b7c4018415d0d7b7190f56f5bb", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.4/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.5.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.6.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/stardoc/0.7.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.5.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.6.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/tar.bzl/0.7.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/toolchain_utils/1.0.2/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/toolchains_protoc/0.2.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20211020-160625a/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/upb/0.0.0-20230907-e7430e6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/xds/0.0.0-20240423-555b57e/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/xz/5.4.5.bcr.6/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/yq.bzl/0.1.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/yq.bzl/0.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.11/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.12/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.2.13/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1.bcr.8/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3.1/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zlib/1.3/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/zstd/1.5.7/MODULE.bazel": "not found" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": { + "general": { + "bzlTransitiveDigest": "lYlp0iair4AKWf6eNAMpjUoH1/S92tlNejMaJswH6hg=", + "usagesDigest": "sj4kz7yaVclWMuWhUhSLq0bVH7+HrkWyMdODMeA7Zhw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "esbuild_darwin-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "darwin-x64" + } + }, + "esbuild_darwin-arm64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "darwin-arm64" + } + }, + "esbuild_linux-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "linux-x64" + } + }, + "esbuild_linux-arm64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "linux-arm64" + } + }, + "esbuild_win32-x64": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild:repositories.bzl%esbuild_repositories", + "attributes": { + "esbuild_version": "0.19.9", + "platform": "win32-x64" + } + }, + "esbuild_toolchains": { + "repoRuleId": "@@aspect_rules_esbuild+//esbuild/private:toolchains_repo.bzl%toolchains_repo", + "attributes": { + "esbuild_version": "0.19.9", + "user_repository_name": "esbuild" + } + }, + "npm__esbuild_0.19.9": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule", + "attributes": { + "package": "esbuild", + "version": "0.19.9", + "root_package": "", + "link_workspace": "", + "link_packages": {}, + "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", + "url": "", + "commit": "", + "patch_args": [ + "-p0" + ], + "patches": [], + "custom_postinstall": "", + "npm_auth": "", + "npm_auth_basic": "", + "npm_auth_username": "", + "npm_auth_password": "", + "lifecycle_hooks": [], + "extra_build_content": "", + "generate_bzl_library_targets": false, + "extract_full_archive": false, + "exclude_package_contents": [], + "system_tar": "auto" + } + }, + "npm__esbuild_0.19.9__links": { + "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links", + "attributes": { + "package": "esbuild", + "version": "0.19.9", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "", + "exclude_package_contents": [] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_bazel_lib+", + "tar.bzl", + "tar.bzl+" + ], + [ + "aspect_rules_esbuild+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_esbuild+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_js+", + "aspect_rules_js", + "aspect_rules_js+" + ], + [ + "aspect_rules_js+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "aspect_rules_js+", + "bazel_tools", + "bazel_tools" + ], + [ + "bazel_lib+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "tar.bzl+", + "bazel_lib", + "bazel_lib+" + ], + [ + "tar.bzl+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "tar.bzl+", + "tar.bzl", + "tar.bzl+" + ] + ] + } + }, + "@@aspect_rules_py+//py:extensions.bzl%py_tools": { + "general": { + "bzlTransitiveDigest": "dAWBz6nfg2GIP7kchPavcBdWoHNQ67aXhXo4MPJJqNk=", + "usagesDigest": "NC1b49l5tenTBVWEUGzzC0j5Kg1GH+l5lBw5JRCldIU=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "bsd_tar_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_windows_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_arm64" + } + }, + "bsd_tar_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:tar_toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar" + } + }, + "rules_py_tools.darwin_amd64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "rules_py_tools.darwin_arm64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "rules_py_tools.linux_amd64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "rules_py_tools.linux_arm64": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:tools.bzl%prebuilt_tool_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "rules_py_tools": { + "repoRuleId": "@@aspect_rules_py+//py/private/toolchain:repo.bzl%toolchains_repo", + "attributes": { + "user_repository_name": "rules_py_tools" + } + }, + "rules_py_pex_2_3_1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://files.pythonhosted.org/packages/e7/d0/fbda2a4d41d62d86ce53f5ae4fbaaee8c34070f75bb7ca009090510ae874/pex-2.3.1-py2.py3-none-any.whl" + ], + "sha256": "64692a5bf6f298403aab930d22f0d836ae4736c5bc820e262e9092fe8c56f830", + "downloaded_file_path": "pex-2.3.1-py2.py3-none-any.whl" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "aspect_rules_py+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_rules_py+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_tools_telemetry+//:extension.bzl%telemetry": { + "general": { + "bzlTransitiveDigest": "gA7tPEdJXhskzPIEUxjX9IdDrM6+WjfbgXJ8Ez47umk=", + "usagesDigest": "i1FqFhjXyyH6bfERz4zwy4c9HppAM5D5gaFRtmhxi/E=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "aspect_tools_telemetry_report": { + "repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository", + "attributes": { + "deps": { + "aspect_rules_lint": "2.0.0", + "aspect_tools_telemetry": "0.2.8" + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_tools_telemetry+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "aspect_tools_telemetry+", + "bazel_skylib", + "bazel_skylib+" + ] + ] + } + }, + "@@container_structure_test+//:repositories.bzl%extension": { + "general": { + "bzlTransitiveDigest": "/vl5vOyGN/nxHtUF3SxoDZnTDgDklt4HUpLQD5LE8+k=", + "usagesDigest": "WCu9SjsdaiOEDLolhYakkmsrItBrznRxVbmS81zCREg=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "structure_test_st_darwin_amd64": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "darwin_amd64" + } + }, + "structure_test_st_darwin_arm64": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "darwin_arm64" + } + }, + "structure_test_st_linux_arm64": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "linux_arm64" + } + }, + "structure_test_st_linux_i386": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "linux_i386" + } + }, + "structure_test_st_linux_s390x": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "linux_s390x" + } + }, + "structure_test_st_linux_amd64": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "linux_amd64" + } + }, + "structure_test_st_windows_amd64": { + "repoRuleId": "@@container_structure_test+//:repositories.bzl%structure_test_repositories", + "attributes": { + "platform": "windows_amd64" + } + }, + "structure_test_toolchains": { + "repoRuleId": "@@container_structure_test+//bazel:toolchains_repo.bzl%toolchains_repo", + "attributes": { + "toolchain_type": "@container_structure_test//bazel:structure_test_toolchain_type", + "toolchain": "@structure_test_st_{platform}//:structure_test_toolchain" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@os_autosd_toolchain+//autosd_10_gcc:extensions.bzl%autosd_10_gcc_extension": { + "general": { + "bzlTransitiveDigest": "q8IPfdy2EuBM6Vu7apobuLWsHXnMTmp4aAD6ESXr5rg=", + "usagesDigest": "oMHYpP3oXa0ve/6EDXRmj1+a4i43scdlE0mUTeyTFEQ=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "autosd_10_gcc_repo": { + "repoRuleId": "@@os_autosd_toolchain+//autosd_10_gcc:extensions.bzl%autosd_10_gcc_toolchain", + "attributes": { + "c_flags": [ + "-O2", + "-g", + "-pipe", + "-Wall", + "-Werror=format-security" + ], + "cxx_flags": [ + "-O2", + "-g", + "-pipe", + "-Wall", + "-Werror=format-security" + ], + "link_flags": [ + "-Wl,-z,relro", + "-Wl,-z,now" + ] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_buf+//buf:extensions.bzl%buf": { + "general": { + "bzlTransitiveDigest": "nziVPz62Pjv2JecWM9NXmhpU/OjKhPz1MT9++4ObLUw=", + "usagesDigest": "vxN6C2h72rUERbAmd1476FWpxdxo1NhYoY5JSFXJT3g=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_buf_toolchains": { + "repoRuleId": "@@rules_buf+//buf/internal:toolchain.bzl%buf_download_releases", + "attributes": { + "version": "v1.47.2", + "sha256": "1b37b75dc0a777a0cba17fa2604bc9906e55bb4c578823d8b7a8fe3fc9fe4439" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_buf+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "OlvsB0HsvxbR8ZN+J9Vf00X/+WVz/Y/5Xrq2LgcVfdo=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "FmfMiNXAxRoLWw3NloQbssosE1egrSvzirbQnso7j7E=", + "usagesDigest": "I5cYiypDP3XvTnYb9IzSaiB/OomxqtxpyZ+m/HlSl2M=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs_windows_arm64": { + "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.19.5", + "include_headers": false, + "platform": "windows_arm64" + } + }, + "nodejs": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_oci+//oci:extensions.bzl%oci": { + "general": { + "bzlTransitiveDigest": "MqWxntdtWHDD1dgfFqd5gcNalY4rODeZTeNemxwfo9k=", + "usagesDigest": "Y3vsKvmjO7mw1c/x9qg5JyreAkm0NMBAUUvHkNnMFN8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "ubuntu_22_04_linux_amd64": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_pull", + "attributes": { + "scheme": "https", + "registry": "index.docker.io", + "repository": "library/ubuntu", + "identifier": "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", + "platform": "linux/amd64", + "target_name": "ubuntu_22_04_linux_amd64", + "bazel_tags": [] + } + }, + "ubuntu_22_04": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_alias", + "attributes": { + "target_name": "ubuntu_22_04", + "scheme": "https", + "registry": "index.docker.io", + "repository": "library/ubuntu", + "identifier": "sha256:3ba65aa20f86a0fad9df2b2c259c613df006b2e6d0bfcc8a146afb8c525a9751", + "platforms": { + "@@platforms//cpu:x86_64": "@ubuntu_22_04_linux_amd64" + }, + "bzlmod_repository": "ubuntu_22_04", + "reproducible": true + } + }, + "centos_stream10_linux_amd64": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_pull", + "attributes": { + "scheme": "https", + "registry": "quay.io", + "repository": "centos/centos", + "identifier": "sha256:01858c09da8f130c718c37673b83aaaf65c6493e66f4c674caffcffe9ed4c225", + "platform": "linux/amd64", + "target_name": "centos_stream10_linux_amd64", + "bazel_tags": [] + } + }, + "centos_stream10": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_alias", + "attributes": { + "target_name": "centos_stream10", + "scheme": "https", + "registry": "quay.io", + "repository": "centos/centos", + "identifier": "sha256:01858c09da8f130c718c37673b83aaaf65c6493e66f4c674caffcffe9ed4c225", + "platforms": { + "@@platforms//cpu:x86_64": "@centos_stream10_linux_amd64" + }, + "bzlmod_repository": "centos_stream10", + "reproducible": true + } + }, + "ubuntu_24_04_linux_amd64": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_pull", + "attributes": { + "scheme": "https", + "registry": "index.docker.io", + "repository": "library/ubuntu", + "identifier": "sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30", + "platform": "linux/amd64", + "target_name": "ubuntu_24_04_linux_amd64", + "bazel_tags": [] + } + }, + "ubuntu_24_04": { + "repoRuleId": "@@rules_oci+//oci/private:pull.bzl%oci_alias", + "attributes": { + "target_name": "ubuntu_24_04", + "scheme": "https", + "registry": "index.docker.io", + "repository": "library/ubuntu", + "identifier": "sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30", + "platforms": { + "@@platforms//cpu:x86_64": "@ubuntu_24_04_linux_amd64" + }, + "bzlmod_repository": "ubuntu_24_04", + "reproducible": true + } + }, + "yq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "4.45.2" + } + }, + "yq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "4.45.2" + } + }, + "yq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "4.45.2" + } + }, + "yq_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "4.45.2" + } + }, + "yq_linux_s390x": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_s390x", + "version": "4.45.2" + } + }, + "yq_linux_riscv64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_riscv64", + "version": "4.45.2" + } + }, + "yq_linux_ppc64le": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_ppc64le", + "version": "4.45.2" + } + }, + "yq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "4.45.2" + } + }, + "yq_windows_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_arm64", + "version": "4.45.2" + } + }, + "yq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_host_alias_repo", + "attributes": {} + }, + "yq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:yq_toolchain.bzl%yq_toolchains_repo", + "attributes": { + "user_repository_name": "yq" + } + }, + "jq_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "1.7" + } + }, + "jq_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "1.7" + } + }, + "jq_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "1.7" + } + }, + "jq_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "1.7" + } + }, + "jq_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "1.7" + } + }, + "jq": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_host_alias_repo", + "attributes": {} + }, + "jq_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:jq_toolchain.bzl%jq_toolchains_repo", + "attributes": { + "user_repository_name": "jq" + } + }, + "coreutils_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "0.1.0" + } + }, + "coreutils_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "0.1.0" + } + }, + "coreutils_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "0.1.0" + } + }, + "coreutils_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "0.1.0" + } + }, + "coreutils_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "0.1.0" + } + }, + "coreutils_windows_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_platform_repo", + "attributes": { + "platform": "windows_arm64", + "version": "0.1.0" + } + }, + "coreutils_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:coreutils_toolchain.bzl%coreutils_toolchains_repo", + "attributes": { + "user_repository_name": "coreutils" + } + }, + "copy_to_directory_darwin_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "copy_to_directory_darwin_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "copy_to_directory_freebsd_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "freebsd_amd64" + } + }, + "copy_to_directory_linux_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "copy_to_directory_linux_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "copy_to_directory_linux_s390x": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "linux_s390x" + } + }, + "copy_to_directory_windows_amd64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "copy_to_directory_windows_arm64": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_platform_repo", + "attributes": { + "platform": "windows_arm64" + } + }, + "copy_to_directory_toolchains": { + "repoRuleId": "@@aspect_bazel_lib+//lib/private:copy_to_directory_toolchain.bzl%copy_to_directory_toolchains_repo", + "attributes": { + "user_repository_name": "copy_to_directory" + } + }, + "oci_crane_darwin_amd64": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "darwin_amd64", + "crane_version": "v0.18.0" + } + }, + "oci_crane_darwin_arm64": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "darwin_arm64", + "crane_version": "v0.18.0" + } + }, + "oci_crane_linux_arm64": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "linux_arm64", + "crane_version": "v0.18.0" + } + }, + "oci_crane_linux_armv6": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "linux_armv6", + "crane_version": "v0.18.0" + } + }, + "oci_crane_linux_i386": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "linux_i386", + "crane_version": "v0.18.0" + } + }, + "oci_crane_linux_s390x": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "linux_s390x", + "crane_version": "v0.18.0" + } + }, + "oci_crane_linux_amd64": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "linux_amd64", + "crane_version": "v0.18.0" + } + }, + "oci_crane_windows_armv6": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "windows_armv6", + "crane_version": "v0.18.0" + } + }, + "oci_crane_windows_amd64": { + "repoRuleId": "@@rules_oci+//oci:repositories.bzl%crane_repositories", + "attributes": { + "platform": "windows_amd64", + "crane_version": "v0.18.0" + } + }, + "oci_crane_toolchains": { + "repoRuleId": "@@rules_oci+//oci/private:toolchains_repo.bzl%toolchains_repo", + "attributes": { + "toolchain_type": "@rules_oci//oci:crane_toolchain_type", + "toolchain": "@oci_crane_{platform}//:crane_toolchain" + } + }, + "oci_crane_registry_toolchains": { + "repoRuleId": "@@rules_oci+//oci/private:toolchains_repo.bzl%toolchains_repo", + "attributes": { + "toolchain_type": "@rules_oci//oci:registry_toolchain_type", + "toolchain": "@oci_crane_{platform}//:registry_toolchain" + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "ubuntu_22_04", + "centos_stream10" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "aspect_bazel_lib+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_oci+", + "aspect_bazel_lib", + "aspect_bazel_lib+" + ], + [ + "rules_oci+", + "bazel_skylib", + "bazel_skylib+" + ] + ] + } + }, + "@@rules_python+//python/extensions:config.bzl%config": { + "general": { + "bzlTransitiveDigest": "d3EJsD++iFgmzgTUZoA7cgWkgF+ZoxelLTMLDrBrjKU=", + "usagesDigest": "HZ99ezJBkgjKcxXQ3OBxGgesUIMF6eg7E0TUNOait2I=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_python_internal": { + "repoRuleId": "@@rules_python+//python/private:internal_config_repo.bzl%internal_config_repo", + "attributes": { + "transition_setting_generators": {}, + "transition_settings": [] + } + }, + "pypi__build": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl", + "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__click": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", + "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__colorama": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", + "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__importlib_metadata": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", + "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__installer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl", + "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__more_itertools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl", + "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__packaging": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl", + "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pep517": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl", + "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl", + "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip_tools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl", + "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pyproject_hooks": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl", + "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__setuptools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", + "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__tomli": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", + "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__wheel": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl", + "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__zipp": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl", + "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++config+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++config+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++config+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++config+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++config+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++config+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++config+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++config+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++config+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++config+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++config+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++config+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++config+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++config+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++config+pypi__zipp" + ] + ] + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "N8SCcKcL6KnzBLApxvY2jR9vhXjA2VCBZMLZfY3sDRA=", + "usagesDigest": "XRYYokHTb3p1WwpZj2sncZ1bh8zJfO4YrKJ2PkapnO8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "platforms", + "platforms" + ] + ] + } + }, + "@@rules_rpm+//toolchain:extensions.bzl%rpm_toolchain": { + "general": { + "bzlTransitiveDigest": "sVM9H/0ylP/87FERTHeMVpdD/8K7C9NhONd5gVMMvM0=", + "usagesDigest": "h4CTc3Tp9qpLsNX1nMVMaaYigHeuNVKXUWvElDXFEas=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rpm_toolchain": { + "repoRuleId": "@@rules_rpm+//toolchain:rpm_toolchain.bzl%rpm_toolchain_repo", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_rust+//crate_universe:extensions.bzl%crate": { + "general": { + "bzlTransitiveDigest": "+gc3YM73lGkqoC/qpGP28MeLEH4t+nxVZNRTksLt2GE=", + "usagesDigest": "pHe9MJNRv5jsUf9XDDRYsA/LPdu6+UMWCoUHg0lVWLo=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": { + "CARGO_BAZEL_DEBUG": null, + "CARGO_BAZEL_GENERATOR_SHA256": null, + "CARGO_BAZEL_GENERATOR_URL": null, + "CARGO_BAZEL_ISOLATED": null, + "CARGO_BAZEL_REPIN": null, + "CARGO_BAZEL_REPIN_ONLY": null, + "REPIN": null + }, + "generatedRepoSpecs": { + "crate_index": { + "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", + "attributes": { + "contents": { + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"adler32-1.2.0\",\n actual = \"@crate_index__adler32-1.2.0//:adler32\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"adler32\",\n actual = \"@crate_index__adler32-1.2.0//:adler32\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow-1.0.102\",\n actual = \"@crate_index__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow\",\n actual = \"@crate_index__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"argh-0.1.14\",\n actual = \"@crate_index__argh-0.1.14//:argh\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"argh\",\n actual = \"@crate_index__argh-0.1.14//:argh\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arrayvec-0.7.6\",\n actual = \"@crate_index__arrayvec-0.7.6//:arrayvec\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arrayvec\",\n actual = \"@crate_index__arrayvec-0.7.6//:arrayvec\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-stream-0.3.6\",\n actual = \"@crate_index__async-stream-0.3.6//:async_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-stream\",\n actual = \"@crate_index__async-stream-0.3.6//:async_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"bytes-1.11.1\",\n actual = \"@crate_index__bytes-1.11.1//:bytes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"bytes\",\n actual = \"@crate_index__bytes-1.11.1//:bytes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cc-1.2.56\",\n actual = \"@crate_index__cc-1.2.56//:cc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cc\",\n actual = \"@crate_index__cc-1.2.56//:cc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap-4.5.60\",\n actual = \"@crate_index__clap-4.5.60//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap\",\n actual = \"@crate_index__clap-4.5.60//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cliclack-0.3.9\",\n actual = \"@crate_index__cliclack-0.3.9//:cliclack\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cliclack\",\n actual = \"@crate_index__cliclack-0.3.9//:cliclack\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"console-0.16.2\",\n actual = \"@crate_index__console-0.16.2//:console\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"console\",\n actual = \"@crate_index__console-0.16.2//:console\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctrlc-3.5.2\",\n actual = \"@crate_index__ctrlc-3.5.2//:ctrlc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctrlc\",\n actual = \"@crate_index__ctrlc-3.5.2//:ctrlc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"env_logger-0.11.9\",\n actual = \"@crate_index__env_logger-0.11.9//:env_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"env_logger\",\n actual = \"@crate_index__env_logger-0.11.9//:env_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures-0.3.32\",\n actual = \"@crate_index__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures\",\n actual = \"@crate_index__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"human_bytes-0.4.3\",\n actual = \"@crate_index__human_bytes-0.4.3//:human_bytes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"human_bytes\",\n actual = \"@crate_index__human_bytes-0.4.3//:human_bytes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-0.5.0\",\n actual = \"@crate_index__iceoryx2-0.5.0//:iceoryx2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2\",\n actual = \"@crate_index__iceoryx2-0.5.0//:iceoryx2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-container-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-container-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-derive-macros-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-derive-macros-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-elementary-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-elementary-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-elementary-traits-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-elementary-traits-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-lock-free-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-lock-free-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-memory-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-memory-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-posix-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-posix-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-system-types-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-system-types-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-testing-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-testing-qnx8-0.7.0//:iceoryx2_bb_testing_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-testing-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-testing-qnx8-0.7.0//:iceoryx2_bb_testing_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-threadsafe-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-bb-threadsafe-qnx8-0.7.0//:iceoryx2_bb_threadsafe_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-bb-threadsafe-qnx8\",\n actual = \"@crate_index__iceoryx2-bb-threadsafe-qnx8-0.7.0//:iceoryx2_bb_threadsafe_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-cal-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-cal-qnx8-0.7.0//:iceoryx2_cal_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-cal-qnx8\",\n actual = \"@crate_index__iceoryx2-cal-qnx8-0.7.0//:iceoryx2_cal_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-pal-concurrency-sync-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-pal-concurrency-sync-qnx8\",\n actual = \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-qnx8-0.7.0\",\n actual = \"@crate_index__iceoryx2-qnx8-0.7.0//:iceoryx2_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"iceoryx2-qnx8\",\n actual = \"@crate_index__iceoryx2-qnx8-0.7.0//:iceoryx2_qnx8\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indicatif-0.18.4\",\n actual = \"@crate_index__indicatif-0.18.4//:indicatif\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indicatif\",\n actual = \"@crate_index__indicatif-0.18.4//:indicatif\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indicatif-log-bridge-0.2.3\",\n actual = \"@crate_index__indicatif-log-bridge-0.2.3//:indicatif_log_bridge\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indicatif-log-bridge\",\n actual = \"@crate_index__indicatif-log-bridge-0.2.3//:indicatif_log_bridge\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ipc-channel-0.20.2\",\n actual = \"@crate_index__ipc-channel-0.20.2//:ipc_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ipc-channel\",\n actual = \"@crate_index__ipc-channel-0.20.2//:ipc_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc-0.2.182\",\n actual = \"@crate_index__libc-0.2.182//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc\",\n actual = \"@crate_index__libc-0.2.182//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log-0.4.29\",\n actual = \"@crate_index__log-0.4.29//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log\",\n actual = \"@crate_index__log-0.4.29//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mio-1.1.1\",\n actual = \"@crate_index__mio-1.1.1//:mio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mio\",\n actual = \"@crate_index__mio-1.1.1//:mio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nix-0.30.1\",\n actual = \"@crate_index__nix-0.30.1//:nix\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nix\",\n actual = \"@crate_index__nix-0.30.1//:nix\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"paste-1.0.15\",\n actual = \"@crate_index__paste-1.0.15//:paste\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"paste\",\n actual = \"@crate_index__paste-1.0.15//:paste\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pico-args-0.5.0\",\n actual = \"@crate_index__pico-args-0.5.0//:pico_args\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pico-args\",\n actual = \"@crate_index__pico-args-0.5.0//:pico_args\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"postcard-1.1.3\",\n actual = \"@crate_index__postcard-1.1.3//:postcard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"postcard\",\n actual = \"@crate_index__postcard-1.1.3//:postcard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proc-macro2-1.0.106\",\n actual = \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proc-macro2\",\n actual = \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-0.14.3\",\n actual = \"@crate_index__prost-0.14.3//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost\",\n actual = \"@crate_index__prost-0.14.3//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-build-0.14.3\",\n actual = \"@crate_index__prost-build-0.14.3//:prost_build\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-build\",\n actual = \"@crate_index__prost-build-0.14.3//:prost_build\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types-0.14.3\",\n actual = \"@crate_index__prost-types-0.14.3//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types\",\n actual = \"@crate_index__prost-types-0.14.3//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"protoc-gen-prost-0.4.0\",\n actual = \"@crate_index__protoc-gen-prost-0.4.0//:protoc_gen_prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"protoc-gen-prost\",\n actual = \"@crate_index__protoc-gen-prost-0.4.0//:protoc_gen_prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"protoc-gen-tonic-0.4.1\",\n actual = \"@crate_index__protoc-gen-tonic-0.4.1//:protoc_gen_tonic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"protoc-gen-tonic\",\n actual = \"@crate_index__protoc-gen-tonic-0.4.1//:protoc_gen_tonic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"quote-1.0.44\",\n actual = \"@crate_index__quote-1.0.44//:quote\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"quote\",\n actual = \"@crate_index__quote-1.0.44//:quote\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand-0.9.2\",\n actual = \"@crate_index__rand-0.9.2//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand\",\n actual = \"@crate_index__rand-0.9.2//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.228\",\n actual = \"@crate_index__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crate_index__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.149\",\n actual = \"@crate_index__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crate_index__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"signal-hook-0.3.18\",\n actual = \"@crate_index__signal-hook-0.3.18//:signal_hook\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"signal-hook\",\n actual = \"@crate_index__signal-hook-0.3.18//:signal_hook\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"socket2-0.6.2\",\n actual = \"@crate_index__socket2-0.6.2//:socket2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"socket2\",\n actual = \"@crate_index__socket2-0.6.2//:socket2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syn-2.0.117\",\n actual = \"@crate_index__syn-2.0.117//:syn\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syn\",\n actual = \"@crate_index__syn-2.0.117//:syn\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile-3.26.0\",\n actual = \"@crate_index__tempfile-3.26.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile\",\n actual = \"@crate_index__tempfile-3.26.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"time-0.3.47\",\n actual = \"@crate_index__time-0.3.47//:time\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"time\",\n actual = \"@crate_index__time-0.3.47//:time\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tinyjson-2.5.1\",\n actual = \"@crate_index__tinyjson-2.5.1//:tinyjson\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tinyjson\",\n actual = \"@crate_index__tinyjson-2.5.1//:tinyjson\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-1.50.0\",\n actual = \"@crate_index__tokio-1.50.0//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio\",\n actual = \"@crate_index__tokio-1.50.0//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-seqpacket-0.8.1\",\n actual = \"@crate_index__tokio-seqpacket-0.8.1//:tokio_seqpacket\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-seqpacket\",\n actual = \"@crate_index__tokio-seqpacket-0.8.1//:tokio_seqpacket\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util-0.7.18\",\n actual = \"@crate_index__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util\",\n actual = \"@crate_index__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tonic-0.14.5\",\n actual = \"@crate_index__tonic-0.14.5//:tonic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tonic\",\n actual = \"@crate_index__tonic-0.14.5//:tonic\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-0.1.44\",\n actual = \"@crate_index__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing\",\n actual = \"@crate_index__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber-0.3.22\",\n actual = \"@crate_index__tracing-subscriber-0.3.22//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber\",\n actual = \"@crate_index__tracing-subscriber-0.3.22//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\n# Binaries\nalias(\n name = \"protoc-gen-prost__protoc-gen-prost\",\n actual = \"@crate_index__protoc-gen-prost-0.4.0//:protoc-gen-prost__bin\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"protoc-gen-tonic__protoc-gen-tonic\",\n actual = \"@crate_index__protoc-gen-tonic-0.4.1//:protoc-gen-tonic__bin\",\n tags = [\"manual\"],\n)\n", + "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"adler32\": Label(\"@crate_index//:adler32-1.2.0\"),\n \"anyhow\": Label(\"@crate_index//:anyhow-1.0.102\"),\n \"argh\": Label(\"@crate_index//:argh-0.1.14\"),\n \"arrayvec\": Label(\"@crate_index//:arrayvec-0.7.6\"),\n \"async-stream\": Label(\"@crate_index//:async-stream-0.3.6\"),\n \"bytes\": Label(\"@crate_index//:bytes-1.11.1\"),\n \"cc\": Label(\"@crate_index//:cc-1.2.56\"),\n \"clap\": Label(\"@crate_index//:clap-4.5.60\"),\n \"cliclack\": Label(\"@crate_index//:cliclack-0.3.9\"),\n \"console\": Label(\"@crate_index//:console-0.16.2\"),\n \"ctrlc\": Label(\"@crate_index//:ctrlc-3.5.2\"),\n \"env_logger\": Label(\"@crate_index//:env_logger-0.11.9\"),\n \"futures\": Label(\"@crate_index//:futures-0.3.32\"),\n \"human_bytes\": Label(\"@crate_index//:human_bytes-0.4.3\"),\n \"iceoryx2\": Label(\"@crate_index//:iceoryx2-0.5.0\"),\n \"iceoryx2-bb-container-qnx8\": Label(\"@crate_index//:iceoryx2-bb-container-qnx8-0.7.0\"),\n \"iceoryx2-bb-elementary-qnx8\": Label(\"@crate_index//:iceoryx2-bb-elementary-qnx8-0.7.0\"),\n \"iceoryx2-bb-elementary-traits-qnx8\": Label(\"@crate_index//:iceoryx2-bb-elementary-traits-qnx8-0.7.0\"),\n \"iceoryx2-bb-lock-free-qnx8\": Label(\"@crate_index//:iceoryx2-bb-lock-free-qnx8-0.7.0\"),\n \"iceoryx2-bb-memory-qnx8\": Label(\"@crate_index//:iceoryx2-bb-memory-qnx8-0.7.0\"),\n \"iceoryx2-bb-posix-qnx8\": Label(\"@crate_index//:iceoryx2-bb-posix-qnx8-0.7.0\"),\n \"iceoryx2-bb-system-types-qnx8\": Label(\"@crate_index//:iceoryx2-bb-system-types-qnx8-0.7.0\"),\n \"iceoryx2-bb-testing-qnx8\": Label(\"@crate_index//:iceoryx2-bb-testing-qnx8-0.7.0\"),\n \"iceoryx2-bb-threadsafe-qnx8\": Label(\"@crate_index//:iceoryx2-bb-threadsafe-qnx8-0.7.0\"),\n \"iceoryx2-cal-qnx8\": Label(\"@crate_index//:iceoryx2-cal-qnx8-0.7.0\"),\n \"iceoryx2-pal-concurrency-sync-qnx8\": Label(\"@crate_index//:iceoryx2-pal-concurrency-sync-qnx8-0.7.0\"),\n \"iceoryx2-qnx8\": Label(\"@crate_index//:iceoryx2-qnx8-0.7.0\"),\n \"indicatif\": Label(\"@crate_index//:indicatif-0.18.4\"),\n \"indicatif-log-bridge\": Label(\"@crate_index//:indicatif-log-bridge-0.2.3\"),\n \"ipc-channel\": Label(\"@crate_index//:ipc-channel-0.20.2\"),\n \"libc\": Label(\"@crate_index//:libc-0.2.182\"),\n \"log\": Label(\"@crate_index//:log-0.4.29\"),\n \"mio\": Label(\"@crate_index//:mio-1.1.1\"),\n \"nix\": Label(\"@crate_index//:nix-0.30.1\"),\n \"pico-args\": Label(\"@crate_index//:pico-args-0.5.0\"),\n \"postcard\": Label(\"@crate_index//:postcard-1.1.3\"),\n \"proc-macro2\": Label(\"@crate_index//:proc-macro2-1.0.106\"),\n \"prost\": Label(\"@crate_index//:prost-0.14.3\"),\n \"prost-build\": Label(\"@crate_index//:prost-build-0.14.3\"),\n \"prost-types\": Label(\"@crate_index//:prost-types-0.14.3\"),\n \"protoc-gen-prost\": Label(\"@crate_index//:protoc-gen-prost-0.4.0\"),\n \"protoc-gen-tonic\": Label(\"@crate_index//:protoc-gen-tonic-0.4.1\"),\n \"quote\": Label(\"@crate_index//:quote-1.0.44\"),\n \"rand\": Label(\"@crate_index//:rand-0.9.2\"),\n \"serde\": Label(\"@crate_index//:serde-1.0.228\"),\n \"serde_json\": Label(\"@crate_index//:serde_json-1.0.149\"),\n \"signal-hook\": Label(\"@crate_index//:signal-hook-0.3.18\"),\n \"socket2\": Label(\"@crate_index//:socket2-0.6.2\"),\n \"syn\": Label(\"@crate_index//:syn-2.0.117\"),\n \"tempfile\": Label(\"@crate_index//:tempfile-3.26.0\"),\n \"time\": Label(\"@crate_index//:time-0.3.47\"),\n \"tinyjson\": Label(\"@crate_index//:tinyjson-2.5.1\"),\n \"tokio\": Label(\"@crate_index//:tokio-1.50.0\"),\n \"tokio-seqpacket\": Label(\"@crate_index//:tokio-seqpacket-0.8.1\"),\n \"tokio-util\": Label(\"@crate_index//:tokio-util-0.7.18\"),\n \"tonic\": Label(\"@crate_index//:tonic-0.14.5\"),\n \"tracing\": Label(\"@crate_index//:tracing-0.1.44\"),\n \"tracing-subscriber\": Label(\"@crate_index//:tracing-subscriber-0.3.22\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"iceoryx2-bb-derive-macros-qnx8\": Label(\"@crate_index//:iceoryx2-bb-derive-macros-qnx8-0.7.0\"),\n \"paste\": Label(\"@crate_index//:paste-1.0.15\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-pc-windows-gnullvm\": [],\n \"aarch64-unknown-nto-qnx710\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\"],\n \"cfg(all(any(target_arch = \\\"x86_64\\\", target_arch = \\\"arm64ec\\\"), target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(any(target_os = \\\"android\\\", target_os = \\\"linux\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-none\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-none\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p2\\\"))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p3\\\"))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\"))\": [],\n \"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\": [],\n \"cfg(any())\": [],\n \"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\": [],\n \"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\"],\n \"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\": [],\n \"cfg(any(target_os = \\\"linux\\\", target_os = \\\"openbsd\\\", target_os = \\\"freebsd\\\", target_os = \\\"illumos\\\"))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\": [],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(any(windows, unix, target_os = \\\"redox\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(not(target_has_atomic = \\\"ptr\\\"))\": [],\n \"cfg(target_arch = \\\"x86_64\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-none\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"macos\\\")\": [],\n \"cfg(target_os = \\\"netbsd\\\")\": [],\n \"cfg(target_os = \\\"solaris\\\")\": [],\n \"cfg(target_os = \\\"vxworks\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [],\n \"cfg(target_os = \\\"windows\\\")\": [],\n \"cfg(target_vendor = \\\"apple\\\")\": [],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"cfg(windows)\": [],\n \"cfg(windows_raw_dylib)\": [],\n \"i686-pc-windows-gnu\": [],\n \"i686-pc-windows-gnullvm\": [],\n \"riscv32i-unknown-none-elf\": [],\n \"riscv32imc-unknown-none-elf\": [],\n \"x86_64-pc-nto-qnx710\": [\"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\"],\n \"x86_64-pc-windows-gnu\": [],\n \"x86_64-pc-windows-gnullvm\": [],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"x86_64-unknown-none\": [\"@rules_rust//rust/platform:x86_64-unknown-none\"],\n \"xtensa-esp32s2-none-elf\": [],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crate_index__adler32-1.2.0\",\n sha256 = \"aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adler32/1.2.0/download\"],\n strip_prefix = \"adler32-1.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.adler32-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__aho-corasick-1.1.4\",\n sha256 = \"ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.4/download\"],\n strip_prefix = \"aho-corasick-1.1.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.aho-corasick-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__aliasable-0.1.3\",\n sha256 = \"250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aliasable/0.1.3/download\"],\n strip_prefix = \"aliasable-0.1.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.aliasable-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anstream-0.6.21\",\n sha256 = \"43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstream/0.6.21/download\"],\n strip_prefix = \"anstream-0.6.21\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anstream-0.6.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anstyle-1.0.13\",\n sha256 = \"5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle/1.0.13/download\"],\n strip_prefix = \"anstyle-1.0.13\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anstyle-1.0.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anstyle-parse-0.2.7\",\n sha256 = \"4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-parse/0.2.7/download\"],\n strip_prefix = \"anstyle-parse-0.2.7\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anstyle-parse-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anstyle-query-1.1.5\",\n sha256 = \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-query/1.1.5/download\"],\n strip_prefix = \"anstyle-query-1.1.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anstyle-query-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anstyle-wincon-3.0.11\",\n sha256 = \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-wincon/3.0.11/download\"],\n strip_prefix = \"anstyle-wincon-3.0.11\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anstyle-wincon-3.0.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__anyhow-1.0.102\",\n sha256 = \"7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anyhow/1.0.102/download\"],\n strip_prefix = \"anyhow-1.0.102\",\n build_file = Label(\"@crate_index//crate_index:BUILD.anyhow-1.0.102.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__argh-0.1.14\",\n sha256 = \"7f384d96bfd3c0b3c41f24dae69ee9602c091d64fc432225cf5295b5abbe0036\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/argh/0.1.14/download\"],\n strip_prefix = \"argh-0.1.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.argh-0.1.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__argh_derive-0.1.14\",\n sha256 = \"938e5f66269c1f168035e29ed3fb437b084e476465e9314a0328f4005d7be599\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/argh_derive/0.1.14/download\"],\n strip_prefix = \"argh_derive-0.1.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.argh_derive-0.1.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__argh_shared-0.1.14\",\n sha256 = \"5127f8a5bc1cfb0faf1f6248491452b8a5b6901068d8da2d47cbb285986ae683\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/argh_shared/0.1.14/download\"],\n strip_prefix = \"argh_shared-0.1.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.argh_shared-0.1.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__arrayvec-0.7.6\",\n sha256 = \"7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arrayvec/0.7.6/download\"],\n strip_prefix = \"arrayvec-0.7.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.arrayvec-0.7.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__async-stream-0.3.6\",\n sha256 = \"0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream/0.3.6/download\"],\n strip_prefix = \"async-stream-0.3.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.async-stream-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__async-stream-impl-0.3.6\",\n sha256 = \"c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream-impl/0.3.6/download\"],\n strip_prefix = \"async-stream-impl-0.3.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.async-stream-impl-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__async-trait-0.1.89\",\n sha256 = \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-trait/0.1.89/download\"],\n strip_prefix = \"async-trait-0.1.89\",\n build_file = Label(\"@crate_index//crate_index:BUILD.async-trait-0.1.89.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__atomic-polyfill-1.0.3\",\n sha256 = \"8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic-polyfill/1.0.3/download\"],\n strip_prefix = \"atomic-polyfill-1.0.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.atomic-polyfill-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__atomic-waker-1.1.2\",\n sha256 = \"1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic-waker/1.1.2/download\"],\n strip_prefix = \"atomic-waker-1.1.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.atomic-waker-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__axum-0.8.8\",\n sha256 = \"8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum/0.8.8/download\"],\n strip_prefix = \"axum-0.8.8\",\n build_file = Label(\"@crate_index//crate_index:BUILD.axum-0.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__axum-core-0.5.6\",\n sha256 = \"08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum-core/0.5.6/download\"],\n strip_prefix = \"axum-core-0.5.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.axum-core-0.5.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__base64-0.22.1\",\n sha256 = \"72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64/0.22.1/download\"],\n strip_prefix = \"base64-0.22.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.base64-0.22.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bincode-1.3.3\",\n sha256 = \"b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bincode/1.3.3/download\"],\n strip_prefix = \"bincode-1.3.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bincode-1.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bindgen-0.69.5\",\n sha256 = \"271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bindgen/0.69.5/download\"],\n strip_prefix = \"bindgen-0.69.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bindgen-0.69.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bindgen-0.72.1\",\n sha256 = \"993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bindgen/0.72.1/download\"],\n strip_prefix = \"bindgen-0.72.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bindgen-0.72.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bitflags-2.11.0\",\n sha256 = \"843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.0/download\"],\n strip_prefix = \"bitflags-2.11.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bitflags-2.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__block2-0.6.2\",\n sha256 = \"cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block2/0.6.2/download\"],\n strip_prefix = \"block2-0.6.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.block2-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bumpalo-3.20.2\",\n sha256 = \"5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bumpalo/3.20.2/download\"],\n strip_prefix = \"bumpalo-3.20.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bumpalo-3.20.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__byteorder-1.5.0\",\n sha256 = \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder/1.5.0/download\"],\n strip_prefix = \"byteorder-1.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.byteorder-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__bytes-1.11.1\",\n sha256 = \"1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytes/1.11.1/download\"],\n strip_prefix = \"bytes-1.11.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.bytes-1.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cc-1.2.56\",\n sha256 = \"aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cc/1.2.56/download\"],\n strip_prefix = \"cc-1.2.56\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cc-1.2.56.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cdr-0.2.4\",\n sha256 = \"9617422bf43fde9280707a7e90f8f7494389c182f5c70b0f67592d0f06d41dfa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cdr/0.2.4/download\"],\n strip_prefix = \"cdr-0.2.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cdr-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cexpr-0.6.0\",\n sha256 = \"6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cexpr/0.6.0/download\"],\n strip_prefix = \"cexpr-0.6.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cexpr-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cfg-if-1.0.4\",\n sha256 = \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.4/download\"],\n strip_prefix = \"cfg-if-1.0.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cfg-if-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cfg_aliases-0.2.1\",\n sha256 = \"613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg_aliases/0.2.1/download\"],\n strip_prefix = \"cfg_aliases-0.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cfg_aliases-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__clang-sys-1.8.1\",\n sha256 = \"0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clang-sys/1.8.1/download\"],\n strip_prefix = \"clang-sys-1.8.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.clang-sys-1.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__clap-4.5.60\",\n sha256 = \"2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap/4.5.60/download\"],\n strip_prefix = \"clap-4.5.60\",\n build_file = Label(\"@crate_index//crate_index:BUILD.clap-4.5.60.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__clap_builder-4.5.60\",\n sha256 = \"24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_builder/4.5.60/download\"],\n strip_prefix = \"clap_builder-4.5.60\",\n build_file = Label(\"@crate_index//crate_index:BUILD.clap_builder-4.5.60.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__clap_derive-4.5.55\",\n sha256 = \"a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_derive/4.5.55/download\"],\n strip_prefix = \"clap_derive-4.5.55\",\n build_file = Label(\"@crate_index//crate_index:BUILD.clap_derive-4.5.55.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__clap_lex-1.0.0\",\n sha256 = \"3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_lex/1.0.0/download\"],\n strip_prefix = \"clap_lex-1.0.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.clap_lex-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cliclack-0.3.9\",\n sha256 = \"4797110534d49f4e38465be8d84c911f3a9e0f6582f70d3aa4cb30c8fa737851\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cliclack/0.3.9/download\"],\n strip_prefix = \"cliclack-0.3.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cliclack-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__cobs-0.3.0\",\n sha256 = \"0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cobs/0.3.0/download\"],\n strip_prefix = \"cobs-0.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.cobs-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__colorchoice-1.0.4\",\n sha256 = \"b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colorchoice/1.0.4/download\"],\n strip_prefix = \"colorchoice-1.0.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.colorchoice-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__console-0.16.2\",\n sha256 = \"03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/console/0.16.2/download\"],\n strip_prefix = \"console-0.16.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.console-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__critical-section-1.2.0\",\n sha256 = \"790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/critical-section/1.2.0/download\"],\n strip_prefix = \"critical-section-1.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.critical-section-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__crossbeam-channel-0.5.15\",\n sha256 = \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-channel/0.5.15/download\"],\n strip_prefix = \"crossbeam-channel-0.5.15\",\n build_file = Label(\"@crate_index//crate_index:BUILD.crossbeam-channel-0.5.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__crossbeam-utils-0.8.21\",\n sha256 = \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.21/download\"],\n strip_prefix = \"crossbeam-utils-0.8.21\",\n build_file = Label(\"@crate_index//crate_index:BUILD.crossbeam-utils-0.8.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__ctrlc-3.5.2\",\n sha256 = \"e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ctrlc/3.5.2/download\"],\n strip_prefix = \"ctrlc-3.5.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.ctrlc-3.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__deranged-0.5.8\",\n sha256 = \"7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deranged/0.5.8/download\"],\n strip_prefix = \"deranged-0.5.8\",\n build_file = Label(\"@crate_index//crate_index:BUILD.deranged-0.5.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__dispatch2-0.3.1\",\n sha256 = \"1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dispatch2/0.3.1/download\"],\n strip_prefix = \"dispatch2-0.3.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.dispatch2-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__either-1.15.0\",\n sha256 = \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.15.0/download\"],\n strip_prefix = \"either-1.15.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.either-1.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__embedded-io-0.4.0\",\n sha256 = \"ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io/0.4.0/download\"],\n strip_prefix = \"embedded-io-0.4.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.embedded-io-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__embedded-io-0.6.1\",\n sha256 = \"edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io/0.6.1/download\"],\n strip_prefix = \"embedded-io-0.6.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.embedded-io-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__encode_unicode-1.0.0\",\n sha256 = \"34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/encode_unicode/1.0.0/download\"],\n strip_prefix = \"encode_unicode-1.0.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.encode_unicode-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__enum-iterator-2.3.0\",\n sha256 = \"a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/enum-iterator/2.3.0/download\"],\n strip_prefix = \"enum-iterator-2.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.enum-iterator-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__enum-iterator-derive-1.5.0\",\n sha256 = \"685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/enum-iterator-derive/1.5.0/download\"],\n strip_prefix = \"enum-iterator-derive-1.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.enum-iterator-derive-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__env_filter-1.0.0\",\n sha256 = \"7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/env_filter/1.0.0/download\"],\n strip_prefix = \"env_filter-1.0.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.env_filter-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__env_logger-0.11.9\",\n sha256 = \"b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/env_logger/0.11.9/download\"],\n strip_prefix = \"env_logger-0.11.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.env_logger-0.11.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__equivalent-1.0.2\",\n sha256 = \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.2/download\"],\n strip_prefix = \"equivalent-1.0.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.equivalent-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__errno-0.3.14\",\n sha256 = \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/errno/0.3.14/download\"],\n strip_prefix = \"errno-0.3.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.errno-0.3.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__fastrand-2.3.0\",\n sha256 = \"37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fastrand/2.3.0/download\"],\n strip_prefix = \"fastrand-2.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.fastrand-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__filedesc-0.6.3\",\n sha256 = \"c4960c866d9cf4c48f64f11ef0020c98900d0cb32e9b019c000ed838470daa1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/filedesc/0.6.3/download\"],\n strip_prefix = \"filedesc-0.6.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.filedesc-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__find-msvc-tools-0.1.9\",\n sha256 = \"5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/find-msvc-tools/0.1.9/download\"],\n strip_prefix = \"find-msvc-tools-0.1.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.find-msvc-tools-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__fixedbitset-0.5.7\",\n sha256 = \"1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fixedbitset/0.5.7/download\"],\n strip_prefix = \"fixedbitset-0.5.7\",\n build_file = Label(\"@crate_index//crate_index:BUILD.fixedbitset-0.5.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__fnv-1.0.7\",\n sha256 = \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fnv/1.0.7/download\"],\n strip_prefix = \"fnv-1.0.7\",\n build_file = Label(\"@crate_index//crate_index:BUILD.fnv-1.0.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__foldhash-0.1.5\",\n sha256 = \"d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.1.5/download\"],\n strip_prefix = \"foldhash-0.1.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.foldhash-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-0.3.32\",\n sha256 = \"8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures/0.3.32/download\"],\n strip_prefix = \"futures-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-channel-0.3.32\",\n sha256 = \"07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-channel/0.3.32/download\"],\n strip_prefix = \"futures-channel-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-channel-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-core-0.3.32\",\n sha256 = \"7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-core/0.3.32/download\"],\n strip_prefix = \"futures-core-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-core-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-executor-0.3.32\",\n sha256 = \"baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-executor/0.3.32/download\"],\n strip_prefix = \"futures-executor-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-executor-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-io-0.3.32\",\n sha256 = \"cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-io/0.3.32/download\"],\n strip_prefix = \"futures-io-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-io-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-macro-0.3.32\",\n sha256 = \"e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-macro/0.3.32/download\"],\n strip_prefix = \"futures-macro-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-macro-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-sink-0.3.32\",\n sha256 = \"c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-sink/0.3.32/download\"],\n strip_prefix = \"futures-sink-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-sink-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-task-0.3.32\",\n sha256 = \"037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-task/0.3.32/download\"],\n strip_prefix = \"futures-task-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-task-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__futures-util-0.3.32\",\n sha256 = \"389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-util/0.3.32/download\"],\n strip_prefix = \"futures-util-0.3.32\",\n build_file = Label(\"@crate_index//crate_index:BUILD.futures-util-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__getrandom-0.3.4\",\n sha256 = \"899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.3.4/download\"],\n strip_prefix = \"getrandom-0.3.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.getrandom-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__getrandom-0.4.2\",\n sha256 = \"0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.4.2/download\"],\n strip_prefix = \"getrandom-0.4.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.getrandom-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__glob-0.3.3\",\n sha256 = \"0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/glob/0.3.3/download\"],\n strip_prefix = \"glob-0.3.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.glob-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__h2-0.4.13\",\n sha256 = \"2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/h2/0.4.13/download\"],\n strip_prefix = \"h2-0.4.13\",\n build_file = Label(\"@crate_index//crate_index:BUILD.h2-0.4.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hash32-0.2.1\",\n sha256 = \"b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hash32/0.2.1/download\"],\n strip_prefix = \"hash32-0.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hash32-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hashbrown-0.15.5\",\n sha256 = \"9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.15.5/download\"],\n strip_prefix = \"hashbrown-0.15.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hashbrown-0.15.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__heapless-0.7.17\",\n sha256 = \"cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heapless/0.7.17/download\"],\n strip_prefix = \"heapless-0.7.17\",\n build_file = Label(\"@crate_index//crate_index:BUILD.heapless-0.7.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__heck-0.4.1\",\n sha256 = \"95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.4.1/download\"],\n strip_prefix = \"heck-0.4.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.heck-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__heck-0.5.0\",\n sha256 = \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.5.0/download\"],\n strip_prefix = \"heck-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.heck-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__home-0.5.12\",\n sha256 = \"cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/home/0.5.12/download\"],\n strip_prefix = \"home-0.5.12\",\n build_file = Label(\"@crate_index//crate_index:BUILD.home-0.5.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__http-1.4.0\",\n sha256 = \"e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http/1.4.0/download\"],\n strip_prefix = \"http-1.4.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.http-1.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__http-body-1.0.1\",\n sha256 = \"1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body/1.0.1/download\"],\n strip_prefix = \"http-body-1.0.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.http-body-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__http-body-util-0.1.3\",\n sha256 = \"b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body-util/0.1.3/download\"],\n strip_prefix = \"http-body-util-0.1.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.http-body-util-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__httparse-1.10.1\",\n sha256 = \"6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httparse/1.10.1/download\"],\n strip_prefix = \"httparse-1.10.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.httparse-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__httpdate-1.0.3\",\n sha256 = \"df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httpdate/1.0.3/download\"],\n strip_prefix = \"httpdate-1.0.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.httpdate-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__human_bytes-0.4.3\",\n sha256 = \"91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/human_bytes/0.4.3/download\"],\n strip_prefix = \"human_bytes-0.4.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.human_bytes-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hyper-1.8.1\",\n sha256 = \"2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper/1.8.1/download\"],\n strip_prefix = \"hyper-1.8.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hyper-1.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hyper-timeout-0.5.2\",\n sha256 = \"2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-timeout/0.5.2/download\"],\n strip_prefix = \"hyper-timeout-0.5.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hyper-timeout-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__hyper-util-0.1.20\",\n sha256 = \"96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-util/0.1.20/download\"],\n strip_prefix = \"hyper-util-0.1.20\",\n build_file = Label(\"@crate_index//crate_index:BUILD.hyper-util-0.1.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-0.5.0\",\n sha256 = \"12c091b5786a230240f8f2691b9d29508ed0a02c025c254abaed8bc788a66bb3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2/0.5.0/download\"],\n strip_prefix = \"iceoryx2-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-container-0.5.0\",\n sha256 = \"fff9d75921f8ccd3e19261d72082b52ccc4704dcdd6930efe6c17b15693ab519\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-container/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-container-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-container-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-container-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-container-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/container\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-derive-macros-0.5.0\",\n sha256 = \"9257482fb822946bb3028225b6807350e3f815068961ff5bf683735ce01d59a4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-derive-macros/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-derive-macros-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-derive-macros-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n patches = [\n \"@@score_crates+//patches:iceoryx2_bb_derive_macros_readme.patch\",\n ],\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-derive-macros-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/derive-macros\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-elementary-0.5.0\",\n sha256 = \"38aae0237ff1575a7d9672c0202e5d313e7f674a635f6aaf619d2090fb7a12c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-elementary/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-elementary-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-elementary-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-elementary-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-elementary-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/elementary\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-elementary-traits-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/elementary-traits\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-linux-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-linux-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/linux\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-lock-free-0.5.0\",\n sha256 = \"3ec3227a0c8b1d9e1ea4c61fa6a773e7c3b721fa3e2fd4363324f302b35ac85b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-lock-free/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-lock-free-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-lock-free-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-lock-free-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/lock-free\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-log-0.5.0\",\n sha256 = \"07df5e6ff06cc2ffb0a86b67c7cd4be86b11264d5e83c02a52b384e2d5e6363a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-log/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-log-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-log-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-log-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-log-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/log\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-memory-0.5.0\",\n sha256 = \"55a4ae8856404b6e7eca567004673ca39109fc70fcf387b96ca6d6d27c61f31b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-memory/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-memory-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-memory-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-memory-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-memory-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/memory\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-posix-0.5.0\",\n sha256 = \"122ff88c452a3045a9de6db73d0429da736578f76eab75779dd0d3681de75d57\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-posix/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-posix-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-posix-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-posix-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-posix-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/posix\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-bb-system-types-0.5.0\",\n sha256 = \"ac2fb11a94823c3b9117a5e14edf16fd467794cf5391738eb2d8b7fc8e9b04fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-bb-system-types/0.5.0/download\"],\n strip_prefix = \"iceoryx2-bb-system-types-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-system-types-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-system-types-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-system-types-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/system-types\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-testing-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-testing-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/testing\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-bb-threadsafe-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-bb-threadsafe-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-bb/threadsafe\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-cal-0.5.0\",\n sha256 = \"6c64b8eee1d57c4336d7df7d521671d8b76c72cac16af0db651e40f8c45f0946\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-cal/0.5.0/download\"],\n strip_prefix = \"iceoryx2-cal-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-cal-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-cal-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-cal-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-cal\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-pal-concurrency-sync-0.5.0\",\n sha256 = \"92dc4ec7c023819c41b5a14c9ca58e8dbb86476053321decda73ac440996f35f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-pal-concurrency-sync/0.5.0/download\"],\n strip_prefix = \"iceoryx2-pal-concurrency-sync-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-concurrency-sync-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-concurrency-sync-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-pal/concurrency-sync\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-pal-configuration-0.5.0\",\n sha256 = \"d900aa8f9c5b661a9c5ddfbdc28eb87ac8c32be5375ca9b055b087d1c89c984d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-pal-configuration/0.5.0/download\"],\n strip_prefix = \"iceoryx2-pal-configuration-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-configuration-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-pal-configuration-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-configuration-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-pal/configuration\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-pal-os-api-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-os-api-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-pal/os-api\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__iceoryx2-pal-posix-0.5.0\",\n sha256 = \"5789169791a6274b492561b95543e1c635285cb454d547f78e53cbc1acd9b3f5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iceoryx2-pal-posix/0.5.0/download\"],\n strip_prefix = \"iceoryx2-pal-posix-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-posix-0.5.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-pal-posix-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n patches = [\n \"@@score_crates+//patches:qnx8_iceoryx2.patch\",\n ],\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-posix-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-pal/posix\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-pal-testing-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-pal-testing-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2-pal/testing\",\n )\n\n maybe(\n new_git_repository,\n name = \"crate_index__iceoryx2-qnx8-0.7.0\",\n commit = \"bd16da32190d53d69c3e5504aab47df52ca8b5f8\",\n init_submodules = True,\n remote = \"https://github.com/qorix-group/iceoryx2.git\",\n build_file = Label(\"@crate_index//crate_index:BUILD.iceoryx2-qnx8-0.7.0.bazel\"),\n strip_prefix = \"iceoryx2\",\n )\n\n maybe(\n http_archive,\n name = \"crate_index__id-arena-2.3.0\",\n sha256 = \"3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/id-arena/2.3.0/download\"],\n strip_prefix = \"id-arena-2.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.id-arena-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__indexmap-2.13.0\",\n sha256 = \"7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.13.0/download\"],\n strip_prefix = \"indexmap-2.13.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.indexmap-2.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__indicatif-0.18.4\",\n sha256 = \"25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indicatif/0.18.4/download\"],\n strip_prefix = \"indicatif-0.18.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.indicatif-0.18.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__indicatif-log-bridge-0.2.3\",\n sha256 = \"63703cf9069b85dbe6fe26e1c5230d013dee99d3559cd3d02ba39e099ef7ab02\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indicatif-log-bridge/0.2.3/download\"],\n strip_prefix = \"indicatif-log-bridge-0.2.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.indicatif-log-bridge-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__ipc-channel-0.20.2\",\n sha256 = \"f93600b5616c2d075f8af8dbd23c1d69278c5d24e4913d220cbc60b14c95c180\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ipc-channel/0.20.2/download\"],\n strip_prefix = \"ipc-channel-0.20.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.ipc-channel-0.20.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__is_terminal_polyfill-1.70.2\",\n sha256 = \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download\"],\n strip_prefix = \"is_terminal_polyfill-1.70.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.is_terminal_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__itertools-0.12.1\",\n sha256 = \"ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.12.1/download\"],\n strip_prefix = \"itertools-0.12.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.itertools-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__itertools-0.13.0\",\n sha256 = \"413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.13.0/download\"],\n strip_prefix = \"itertools-0.13.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.itertools-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__itoa-1.0.17\",\n sha256 = \"92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.17/download\"],\n strip_prefix = \"itoa-1.0.17\",\n build_file = Label(\"@crate_index//crate_index:BUILD.itoa-1.0.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__jiff-0.2.22\",\n sha256 = \"819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/jiff/0.2.22/download\"],\n strip_prefix = \"jiff-0.2.22\",\n build_file = Label(\"@crate_index//crate_index:BUILD.jiff-0.2.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__jiff-static-0.2.22\",\n sha256 = \"470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/jiff-static/0.2.22/download\"],\n strip_prefix = \"jiff-static-0.2.22\",\n build_file = Label(\"@crate_index//crate_index:BUILD.jiff-static-0.2.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__js-sys-0.3.91\",\n sha256 = \"b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/js-sys/0.3.91/download\"],\n strip_prefix = \"js-sys-0.3.91\",\n build_file = Label(\"@crate_index//crate_index:BUILD.js-sys-0.3.91.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__lazy_static-1.5.0\",\n sha256 = \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazy_static/1.5.0/download\"],\n strip_prefix = \"lazy_static-1.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.lazy_static-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__lazycell-1.3.0\",\n sha256 = \"830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazycell/1.3.0/download\"],\n strip_prefix = \"lazycell-1.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.lazycell-1.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__leb128fmt-0.1.0\",\n sha256 = \"09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/leb128fmt/0.1.0/download\"],\n strip_prefix = \"leb128fmt-0.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.leb128fmt-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__libc-0.2.182\",\n sha256 = \"6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.182/download\"],\n strip_prefix = \"libc-0.2.182\",\n build_file = Label(\"@crate_index//crate_index:BUILD.libc-0.2.182.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__libloading-0.8.9\",\n sha256 = \"d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libloading/0.8.9/download\"],\n strip_prefix = \"libloading-0.8.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.libloading-0.8.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__linux-raw-sys-0.12.1\",\n sha256 = \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.12.1/download\"],\n strip_prefix = \"linux-raw-sys-0.12.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.linux-raw-sys-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__linux-raw-sys-0.4.15\",\n sha256 = \"d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.4.15/download\"],\n strip_prefix = \"linux-raw-sys-0.4.15\",\n build_file = Label(\"@crate_index//crate_index:BUILD.linux-raw-sys-0.4.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__lock_api-0.4.14\",\n sha256 = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lock_api/0.4.14/download\"],\n strip_prefix = \"lock_api-0.4.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.lock_api-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__log-0.4.29\",\n sha256 = \"5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.29/download\"],\n strip_prefix = \"log-0.4.29\",\n build_file = Label(\"@crate_index//crate_index:BUILD.log-0.4.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__matchit-0.8.4\",\n sha256 = \"47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/matchit/0.8.4/download\"],\n strip_prefix = \"matchit-0.8.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.matchit-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__memchr-2.8.0\",\n sha256 = \"f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.0/download\"],\n strip_prefix = \"memchr-2.8.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.memchr-2.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__mime-0.3.17\",\n sha256 = \"6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mime/0.3.17/download\"],\n strip_prefix = \"mime-0.3.17\",\n build_file = Label(\"@crate_index//crate_index:BUILD.mime-0.3.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__minimal-lexical-0.2.1\",\n sha256 = \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/minimal-lexical/0.2.1/download\"],\n strip_prefix = \"minimal-lexical-0.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.minimal-lexical-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__mio-1.1.1\",\n sha256 = \"a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/1.1.1/download\"],\n strip_prefix = \"mio-1.1.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.mio-1.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__multimap-0.10.1\",\n sha256 = \"1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/multimap/0.10.1/download\"],\n strip_prefix = \"multimap-0.10.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.multimap-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__nix-0.30.1\",\n sha256 = \"74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.30.1/download\"],\n strip_prefix = \"nix-0.30.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.nix-0.30.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__nix-0.31.2\",\n sha256 = \"5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.31.2/download\"],\n strip_prefix = \"nix-0.31.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.nix-0.31.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__nom-7.1.3\",\n sha256 = \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nom/7.1.3/download\"],\n strip_prefix = \"nom-7.1.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.nom-7.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__nu-ansi-term-0.50.3\",\n sha256 = \"7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nu-ansi-term/0.50.3/download\"],\n strip_prefix = \"nu-ansi-term-0.50.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.nu-ansi-term-0.50.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__num-conv-0.2.0\",\n sha256 = \"cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-conv/0.2.0/download\"],\n strip_prefix = \"num-conv-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.num-conv-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__objc2-0.6.4\",\n sha256 = \"3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2/0.6.4/download\"],\n strip_prefix = \"objc2-0.6.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.objc2-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__objc2-encode-4.1.0\",\n sha256 = \"ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-encode/4.1.0/download\"],\n strip_prefix = \"objc2-encode-4.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.objc2-encode-4.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__once_cell-1.21.3\",\n sha256 = \"42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.3/download\"],\n strip_prefix = \"once_cell-1.21.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.once_cell-1.21.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__once_cell_polyfill-1.70.2\",\n sha256 = \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell_polyfill/1.70.2/download\"],\n strip_prefix = \"once_cell_polyfill-1.70.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.once_cell_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__ouroboros-0.18.5\",\n sha256 = \"1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ouroboros/0.18.5/download\"],\n strip_prefix = \"ouroboros-0.18.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.ouroboros-0.18.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__ouroboros_macro-0.18.5\",\n sha256 = \"3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ouroboros_macro/0.18.5/download\"],\n strip_prefix = \"ouroboros_macro-0.18.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.ouroboros_macro-0.18.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__paste-1.0.15\",\n sha256 = \"57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/paste/1.0.15/download\"],\n strip_prefix = \"paste-1.0.15\",\n build_file = Label(\"@crate_index//crate_index:BUILD.paste-1.0.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__petgraph-0.7.1\",\n sha256 = \"3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/petgraph/0.7.1/download\"],\n strip_prefix = \"petgraph-0.7.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.petgraph-0.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__petgraph-0.8.3\",\n sha256 = \"8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/petgraph/0.8.3/download\"],\n strip_prefix = \"petgraph-0.8.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.petgraph-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__pico-args-0.5.0\",\n sha256 = \"5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pico-args/0.5.0/download\"],\n strip_prefix = \"pico-args-0.5.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.pico-args-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__pin-project-1.1.11\",\n sha256 = \"f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project/1.1.11/download\"],\n strip_prefix = \"pin-project-1.1.11\",\n build_file = Label(\"@crate_index//crate_index:BUILD.pin-project-1.1.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__pin-project-internal-1.1.11\",\n sha256 = \"d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-internal/1.1.11/download\"],\n strip_prefix = \"pin-project-internal-1.1.11\",\n build_file = Label(\"@crate_index//crate_index:BUILD.pin-project-internal-1.1.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__pin-project-lite-0.2.17\",\n sha256 = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.17/download\"],\n strip_prefix = \"pin-project-lite-0.2.17\",\n build_file = Label(\"@crate_index//crate_index:BUILD.pin-project-lite-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__pin-utils-0.1.0\",\n sha256 = \"8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-utils/0.1.0/download\"],\n strip_prefix = \"pin-utils-0.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.pin-utils-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__portable-atomic-1.13.1\",\n sha256 = \"c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/portable-atomic/1.13.1/download\"],\n strip_prefix = \"portable-atomic-1.13.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.portable-atomic-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__portable-atomic-util-0.2.5\",\n sha256 = \"7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/portable-atomic-util/0.2.5/download\"],\n strip_prefix = \"portable-atomic-util-0.2.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.portable-atomic-util-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__postcard-1.1.3\",\n sha256 = \"6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/postcard/1.1.3/download\"],\n strip_prefix = \"postcard-1.1.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.postcard-1.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__postcard-derive-0.2.2\",\n sha256 = \"e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/postcard-derive/0.2.2/download\"],\n strip_prefix = \"postcard-derive-0.2.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.postcard-derive-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__powerfmt-0.2.0\",\n sha256 = \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/powerfmt/0.2.0/download\"],\n strip_prefix = \"powerfmt-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.powerfmt-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__ppv-lite86-0.2.21\",\n sha256 = \"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ppv-lite86/0.2.21/download\"],\n strip_prefix = \"ppv-lite86-0.2.21\",\n build_file = Label(\"@crate_index//crate_index:BUILD.ppv-lite86-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prettyplease-0.2.37\",\n sha256 = \"479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prettyplease/0.2.37/download\"],\n strip_prefix = \"prettyplease-0.2.37\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prettyplease-0.2.37.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@crate_index//crate_index:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__proc-macro2-diagnostics-0.10.1\",\n sha256 = \"af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2-diagnostics/0.10.1/download\"],\n strip_prefix = \"proc-macro2-diagnostics-0.10.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.proc-macro2-diagnostics-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-0.13.5\",\n sha256 = \"2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.13.5/download\"],\n strip_prefix = \"prost-0.13.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-0.14.3\",\n sha256 = \"d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.14.3/download\"],\n strip_prefix = \"prost-0.14.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-0.14.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-build-0.13.5\",\n sha256 = \"be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-build/0.13.5/download\"],\n strip_prefix = \"prost-build-0.13.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-build-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-build-0.14.3\",\n sha256 = \"343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-build/0.14.3/download\"],\n strip_prefix = \"prost-build-0.14.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-build-0.14.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-derive-0.13.5\",\n sha256 = \"8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.13.5/download\"],\n strip_prefix = \"prost-derive-0.13.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-derive-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-derive-0.14.3\",\n sha256 = \"27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.14.3/download\"],\n strip_prefix = \"prost-derive-0.14.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-derive-0.14.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-types-0.13.5\",\n sha256 = \"52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-types/0.13.5/download\"],\n strip_prefix = \"prost-types-0.13.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-types-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__prost-types-0.14.3\",\n sha256 = \"8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-types/0.14.3/download\"],\n strip_prefix = \"prost-types-0.14.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.prost-types-0.14.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__protoc-gen-prost-0.4.0\",\n sha256 = \"77eb17a7657a703f30cb9b7ba4d981e4037b8af2d819ab0077514b0bef537406\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/protoc-gen-prost/0.4.0/download\"],\n strip_prefix = \"protoc-gen-prost-0.4.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.protoc-gen-prost-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__protoc-gen-tonic-0.4.1\",\n sha256 = \"6ab6a0d73a0914752ed8fd7cc51afe169e28da87be3efef292de5676cc527634\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/protoc-gen-tonic/0.4.1/download\"],\n strip_prefix = \"protoc-gen-tonic-0.4.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.protoc-gen-tonic-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__quote-1.0.44\",\n sha256 = \"21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.44/download\"],\n strip_prefix = \"quote-1.0.44\",\n build_file = Label(\"@crate_index//crate_index:BUILD.quote-1.0.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__r-efi-5.3.0\",\n sha256 = \"69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/5.3.0/download\"],\n strip_prefix = \"r-efi-5.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.r-efi-5.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__r-efi-6.0.0\",\n sha256 = \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/6.0.0/download\"],\n strip_prefix = \"r-efi-6.0.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.r-efi-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rand-0.9.2\",\n sha256 = \"6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand/0.9.2/download\"],\n strip_prefix = \"rand-0.9.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rand-0.9.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rand_chacha-0.9.0\",\n sha256 = \"d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_chacha/0.9.0/download\"],\n strip_prefix = \"rand_chacha-0.9.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rand_chacha-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rand_core-0.9.5\",\n sha256 = \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.9.5/download\"],\n strip_prefix = \"rand_core-0.9.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rand_core-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__regex-1.12.3\",\n sha256 = \"e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.12.3/download\"],\n strip_prefix = \"regex-1.12.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.regex-1.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__regex-automata-0.4.14\",\n sha256 = \"6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.14/download\"],\n strip_prefix = \"regex-automata-0.4.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.regex-automata-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__regex-syntax-0.8.10\",\n sha256 = \"dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.10/download\"],\n strip_prefix = \"regex-syntax-0.8.10\",\n build_file = Label(\"@crate_index//crate_index:BUILD.regex-syntax-0.8.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustc-hash-1.1.0\",\n sha256 = \"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/1.1.0/download\"],\n strip_prefix = \"rustc-hash-1.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustc-hash-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustc-hash-2.1.1\",\n sha256 = \"357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.1/download\"],\n strip_prefix = \"rustc-hash-2.1.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustc-hash-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustc_version-0.4.1\",\n sha256 = \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.4.1/download\"],\n strip_prefix = \"rustc_version-0.4.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustc_version-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustix-0.38.44\",\n sha256 = \"fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/0.38.44/download\"],\n strip_prefix = \"rustix-0.38.44\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustix-0.38.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustix-1.1.4\",\n sha256 = \"b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/1.1.4/download\"],\n strip_prefix = \"rustix-1.1.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustix-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__rustversion-1.0.22\",\n sha256 = \"b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustversion/1.0.22/download\"],\n strip_prefix = \"rustversion-1.0.22\",\n build_file = Label(\"@crate_index//crate_index:BUILD.rustversion-1.0.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__scopeguard-1.2.0\",\n sha256 = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scopeguard/1.2.0/download\"],\n strip_prefix = \"scopeguard-1.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.scopeguard-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__semver-1.0.27\",\n sha256 = \"d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/1.0.27/download\"],\n strip_prefix = \"semver-1.0.27\",\n build_file = Label(\"@crate_index//crate_index:BUILD.semver-1.0.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__serde-1.0.228\",\n sha256 = \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.228/download\"],\n strip_prefix = \"serde-1.0.228\",\n build_file = Label(\"@crate_index//crate_index:BUILD.serde-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__serde_core-1.0.228\",\n sha256 = \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.228/download\"],\n strip_prefix = \"serde_core-1.0.228\",\n build_file = Label(\"@crate_index//crate_index:BUILD.serde_core-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__serde_derive-1.0.228\",\n sha256 = \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.228/download\"],\n strip_prefix = \"serde_derive-1.0.228\",\n build_file = Label(\"@crate_index//crate_index:BUILD.serde_derive-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__serde_json-1.0.149\",\n sha256 = \"83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.149/download\"],\n strip_prefix = \"serde_json-1.0.149\",\n build_file = Label(\"@crate_index//crate_index:BUILD.serde_json-1.0.149.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__serde_spanned-0.6.9\",\n sha256 = \"bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_spanned/0.6.9/download\"],\n strip_prefix = \"serde_spanned-0.6.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.serde_spanned-0.6.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__sha1_smol-1.0.1\",\n sha256 = \"bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sha1_smol/1.0.1/download\"],\n strip_prefix = \"sha1_smol-1.0.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.sha1_smol-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__sharded-slab-0.1.7\",\n sha256 = \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sharded-slab/0.1.7/download\"],\n strip_prefix = \"sharded-slab-0.1.7\",\n build_file = Label(\"@crate_index//crate_index:BUILD.sharded-slab-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__shlex-1.3.0\",\n sha256 = \"0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/shlex/1.3.0/download\"],\n strip_prefix = \"shlex-1.3.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.shlex-1.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__signal-hook-0.3.18\",\n sha256 = \"d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook/0.3.18/download\"],\n strip_prefix = \"signal-hook-0.3.18\",\n build_file = Label(\"@crate_index//crate_index:BUILD.signal-hook-0.3.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__signal-hook-registry-1.4.8\",\n sha256 = \"c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook-registry/1.4.8/download\"],\n strip_prefix = \"signal-hook-registry-1.4.8\",\n build_file = Label(\"@crate_index//crate_index:BUILD.signal-hook-registry-1.4.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__slab-0.4.12\",\n sha256 = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/slab/0.4.12/download\"],\n strip_prefix = \"slab-0.4.12\",\n build_file = Label(\"@crate_index//crate_index:BUILD.slab-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__smallvec-1.15.1\",\n sha256 = \"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.15.1/download\"],\n strip_prefix = \"smallvec-1.15.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.smallvec-1.15.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__smawk-0.3.2\",\n sha256 = \"b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smawk/0.3.2/download\"],\n strip_prefix = \"smawk-0.3.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.smawk-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__socket2-0.6.2\",\n sha256 = \"86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.6.2/download\"],\n strip_prefix = \"socket2-0.6.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.socket2-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__spin-0.9.8\",\n sha256 = \"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/spin/0.9.8/download\"],\n strip_prefix = \"spin-0.9.8\",\n build_file = Label(\"@crate_index//crate_index:BUILD.spin-0.9.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__static_assertions-1.1.0\",\n sha256 = \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/static_assertions/1.1.0/download\"],\n strip_prefix = \"static_assertions-1.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.static_assertions-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__strsim-0.11.1\",\n sha256 = \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.11.1/download\"],\n strip_prefix = \"strsim-0.11.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.strsim-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@crate_index//crate_index:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__sync_wrapper-1.0.2\",\n sha256 = \"0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sync_wrapper/1.0.2/download\"],\n strip_prefix = \"sync_wrapper-1.0.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.sync_wrapper-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tempfile-3.26.0\",\n sha256 = \"82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tempfile/3.26.0/download\"],\n strip_prefix = \"tempfile-3.26.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tempfile-3.26.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__termsize-0.1.9\",\n sha256 = \"6f11ff5c25c172608d5b85e2fb43ee9a6d683a7f4ab7f96ae07b3d8b590368fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termsize/0.1.9/download\"],\n strip_prefix = \"termsize-0.1.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.termsize-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__textwrap-0.16.2\",\n sha256 = \"c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/textwrap/0.16.2/download\"],\n strip_prefix = \"textwrap-0.16.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.textwrap-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__thiserror-2.0.18\",\n sha256 = \"4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/2.0.18/download\"],\n strip_prefix = \"thiserror-2.0.18\",\n build_file = Label(\"@crate_index//crate_index:BUILD.thiserror-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__thiserror-impl-2.0.18\",\n sha256 = \"ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/2.0.18/download\"],\n strip_prefix = \"thiserror-impl-2.0.18\",\n build_file = Label(\"@crate_index//crate_index:BUILD.thiserror-impl-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__thread_local-1.1.9\",\n sha256 = \"f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thread_local/1.1.9/download\"],\n strip_prefix = \"thread_local-1.1.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.thread_local-1.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__time-0.3.47\",\n sha256 = \"743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time/0.3.47/download\"],\n strip_prefix = \"time-0.3.47\",\n build_file = Label(\"@crate_index//crate_index:BUILD.time-0.3.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__time-core-0.1.8\",\n sha256 = \"7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-core/0.1.8/download\"],\n strip_prefix = \"time-core-0.1.8\",\n build_file = Label(\"@crate_index//crate_index:BUILD.time-core-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__time-macros-0.2.27\",\n sha256 = \"2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-macros/0.2.27/download\"],\n strip_prefix = \"time-macros-0.2.27\",\n build_file = Label(\"@crate_index//crate_index:BUILD.time-macros-0.2.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tiny-fn-0.1.9\",\n sha256 = \"9659b108631d1e1cf3e8e489f894bee40bc9d68fd6cc67ec4d4ce9b72d565228\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tiny-fn/0.1.9/download\"],\n strip_prefix = \"tiny-fn-0.1.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tiny-fn-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tinyjson-2.5.1\",\n sha256 = \"9ab95735ea2c8fd51154d01e39cf13912a78071c2d89abc49a7ef102a7dd725a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinyjson/2.5.1/download\"],\n strip_prefix = \"tinyjson-2.5.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tinyjson-2.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tokio-1.50.0\",\n sha256 = \"27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio/1.50.0/download\"],\n strip_prefix = \"tokio-1.50.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tokio-1.50.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tokio-macros-2.6.1\",\n sha256 = \"5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-macros/2.6.1/download\"],\n strip_prefix = \"tokio-macros-2.6.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tokio-macros-2.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tokio-seqpacket-0.8.1\",\n sha256 = \"ab144b76e4ffb1d1a4e8b404073c922a243baebcc580cd75f415ae3ae9e42add\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-seqpacket/0.8.1/download\"],\n strip_prefix = \"tokio-seqpacket-0.8.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tokio-seqpacket-0.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tokio-stream-0.1.18\",\n sha256 = \"32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-stream/0.1.18/download\"],\n strip_prefix = \"tokio-stream-0.1.18\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tokio-stream-0.1.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tokio-util-0.7.18\",\n sha256 = \"9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-util/0.7.18/download\"],\n strip_prefix = \"tokio-util-0.7.18\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tokio-util-0.7.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__toml-0.8.23\",\n sha256 = \"dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml/0.8.23/download\"],\n strip_prefix = \"toml-0.8.23\",\n build_file = Label(\"@crate_index//crate_index:BUILD.toml-0.8.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__toml_datetime-0.6.11\",\n sha256 = \"22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_datetime/0.6.11/download\"],\n strip_prefix = \"toml_datetime-0.6.11\",\n build_file = Label(\"@crate_index//crate_index:BUILD.toml_datetime-0.6.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__toml_edit-0.22.27\",\n sha256 = \"41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_edit/0.22.27/download\"],\n strip_prefix = \"toml_edit-0.22.27\",\n build_file = Label(\"@crate_index//crate_index:BUILD.toml_edit-0.22.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__toml_write-0.1.2\",\n sha256 = \"5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml_write/0.1.2/download\"],\n strip_prefix = \"toml_write-0.1.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.toml_write-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tonic-0.14.5\",\n sha256 = \"fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tonic/0.14.5/download\"],\n strip_prefix = \"tonic-0.14.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tonic-0.14.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tonic-build-0.12.3\",\n sha256 = \"9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tonic-build/0.12.3/download\"],\n strip_prefix = \"tonic-build-0.12.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tonic-build-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tower-0.5.3\",\n sha256 = \"ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower/0.5.3/download\"],\n strip_prefix = \"tower-0.5.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tower-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tower-layer-0.3.3\",\n sha256 = \"121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-layer/0.3.3/download\"],\n strip_prefix = \"tower-layer-0.3.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tower-layer-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tower-service-0.3.3\",\n sha256 = \"8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-service/0.3.3/download\"],\n strip_prefix = \"tower-service-0.3.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tower-service-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-0.1.44\",\n sha256 = \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing/0.1.44/download\"],\n strip_prefix = \"tracing-0.1.44\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-0.1.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-attributes-0.1.31\",\n sha256 = \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-attributes/0.1.31/download\"],\n strip_prefix = \"tracing-attributes-0.1.31\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-attributes-0.1.31.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-core-0.1.36\",\n sha256 = \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-core/0.1.36/download\"],\n strip_prefix = \"tracing-core-0.1.36\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-core-0.1.36.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-log-0.2.0\",\n sha256 = \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-log/0.2.0/download\"],\n strip_prefix = \"tracing-log-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-log-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-serde-0.2.0\",\n sha256 = \"704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-serde/0.2.0/download\"],\n strip_prefix = \"tracing-serde-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-serde-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__tracing-subscriber-0.3.22\",\n sha256 = \"2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-subscriber/0.3.22/download\"],\n strip_prefix = \"tracing-subscriber-0.3.22\",\n build_file = Label(\"@crate_index//crate_index:BUILD.tracing-subscriber-0.3.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__try-lock-0.2.5\",\n sha256 = \"e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/try-lock/0.2.5/download\"],\n strip_prefix = \"try-lock-0.2.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.try-lock-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crate_index//crate_index:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__unicode-linebreak-0.1.5\",\n sha256 = \"3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-linebreak/0.1.5/download\"],\n strip_prefix = \"unicode-linebreak-0.1.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.unicode-linebreak-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__unicode-xid-0.2.6\",\n sha256 = \"ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-xid/0.2.6/download\"],\n strip_prefix = \"unicode-xid-0.2.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.unicode-xid-0.2.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__unit-prefix-0.5.2\",\n sha256 = \"81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unit-prefix/0.5.2/download\"],\n strip_prefix = \"unit-prefix-0.5.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.unit-prefix-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__utf8parse-0.2.2\",\n sha256 = \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8parse/0.2.2/download\"],\n strip_prefix = \"utf8parse-0.2.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.utf8parse-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__uuid-1.21.0\",\n sha256 = \"b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/uuid/1.21.0/download\"],\n strip_prefix = \"uuid-1.21.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.uuid-1.21.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__valuable-0.1.1\",\n sha256 = \"ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/valuable/0.1.1/download\"],\n strip_prefix = \"valuable-0.1.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.valuable-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__version_check-0.9.5\",\n sha256 = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/version_check/0.9.5/download\"],\n strip_prefix = \"version_check-0.9.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.version_check-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__want-0.3.1\",\n sha256 = \"bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/want/0.3.1/download\"],\n strip_prefix = \"want-0.3.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.want-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasi-0.11.1-wasi-snapshot-preview1\",\n sha256 = \"ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download\"],\n strip_prefix = \"wasi-0.11.1+wasi-snapshot-preview1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasip2-1.0.2-wasi-0.2.9\",\n sha256 = \"9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip2/1.0.2+wasi-0.2.9/download\"],\n strip_prefix = \"wasip2-1.0.2+wasi-0.2.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasip2-1.0.2+wasi-0.2.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06\",\n sha256 = \"5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download\"],\n strip_prefix = \"wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-bindgen-0.2.114\",\n sha256 = \"6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen/0.2.114/download\"],\n strip_prefix = \"wasm-bindgen-0.2.114\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-bindgen-0.2.114.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-bindgen-macro-0.2.114\",\n sha256 = \"18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro/0.2.114/download\"],\n strip_prefix = \"wasm-bindgen-macro-0.2.114\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-bindgen-macro-0.2.114.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-bindgen-macro-support-0.2.114\",\n sha256 = \"03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.114/download\"],\n strip_prefix = \"wasm-bindgen-macro-support-0.2.114\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-bindgen-macro-support-0.2.114.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-bindgen-shared-0.2.114\",\n sha256 = \"75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-shared/0.2.114/download\"],\n strip_prefix = \"wasm-bindgen-shared-0.2.114\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-bindgen-shared-0.2.114.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-encoder-0.244.0\",\n sha256 = \"990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-encoder/0.244.0/download\"],\n strip_prefix = \"wasm-encoder-0.244.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-encoder-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasm-metadata-0.244.0\",\n sha256 = \"bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-metadata/0.244.0/download\"],\n strip_prefix = \"wasm-metadata-0.244.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasm-metadata-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wasmparser-0.244.0\",\n sha256 = \"47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasmparser/0.244.0/download\"],\n strip_prefix = \"wasmparser-0.244.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wasmparser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__web-time-1.1.0\",\n sha256 = \"5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/web-time/1.1.0/download\"],\n strip_prefix = \"web-time-1.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.web-time-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__which-4.4.2\",\n sha256 = \"87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/which/4.4.2/download\"],\n strip_prefix = \"which-4.4.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.which-4.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__winapi-0.3.9\",\n sha256 = \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi/0.3.9/download\"],\n strip_prefix = \"winapi-0.3.9\",\n build_file = Label(\"@crate_index//crate_index:BUILD.winapi-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__winapi-i686-pc-windows-gnu-0.4.0\",\n sha256 = \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-i686-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__winapi-x86_64-pc-windows-gnu-0.4.0\",\n sha256 = \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-x86_64-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-0.61.3\",\n sha256 = \"9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows/0.61.3/download\"],\n strip_prefix = \"windows-0.61.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-0.61.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-collections-0.2.0\",\n sha256 = \"3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-collections/0.2.0/download\"],\n strip_prefix = \"windows-collections-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-collections-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-core-0.61.2\",\n sha256 = \"c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-core/0.61.2/download\"],\n strip_prefix = \"windows-core-0.61.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-core-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-future-0.2.1\",\n sha256 = \"fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-future/0.2.1/download\"],\n strip_prefix = \"windows-future-0.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-future-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-implement-0.60.2\",\n sha256 = \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-implement/0.60.2/download\"],\n strip_prefix = \"windows-implement-0.60.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-implement-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-interface-0.59.3\",\n sha256 = \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-interface/0.59.3/download\"],\n strip_prefix = \"windows-interface-0.59.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-interface-0.59.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-link-0.1.3\",\n sha256 = \"5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.1.3/download\"],\n strip_prefix = \"windows-link-0.1.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-link-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-numerics-0.2.0\",\n sha256 = \"9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-numerics/0.2.0/download\"],\n strip_prefix = \"windows-numerics-0.2.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-numerics-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-result-0.3.4\",\n sha256 = \"56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-result/0.3.4/download\"],\n strip_prefix = \"windows-result-0.3.4\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-result-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-strings-0.4.2\",\n sha256 = \"56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-strings/0.4.2/download\"],\n strip_prefix = \"windows-strings-0.4.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-strings-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-sys-0.48.0\",\n sha256 = \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.48.0/download\"],\n strip_prefix = \"windows-sys-0.48.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-sys-0.48.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-sys-0.59.0\",\n sha256 = \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.59.0/download\"],\n strip_prefix = \"windows-sys-0.59.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-sys-0.59.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-sys-0.60.2\",\n sha256 = \"f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.60.2/download\"],\n strip_prefix = \"windows-sys-0.60.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-sys-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-targets-0.48.5\",\n sha256 = \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.48.5/download\"],\n strip_prefix = \"windows-targets-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-targets-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-targets-0.52.6\",\n sha256 = \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.52.6/download\"],\n strip_prefix = \"windows-targets-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-targets-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-targets-0.53.5\",\n sha256 = \"4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.53.5/download\"],\n strip_prefix = \"windows-targets-0.53.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-targets-0.53.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows-threading-0.1.0\",\n sha256 = \"b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-threading/0.1.0/download\"],\n strip_prefix = \"windows-threading-0.1.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows-threading-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_gnullvm-0.48.5\",\n sha256 = \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_gnullvm-0.52.6\",\n sha256 = \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_gnullvm-0.53.1\",\n sha256 = \"a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_msvc-0.48.5\",\n sha256 = \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_msvc-0.52.6\",\n sha256 = \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_aarch64_msvc-0.53.1\",\n sha256 = \"b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_aarch64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_gnu-0.48.5\",\n sha256 = \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.48.5/download\"],\n strip_prefix = \"windows_i686_gnu-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_gnu-0.52.6\",\n sha256 = \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnu-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_gnu-0.53.1\",\n sha256 = \"960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnu-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_gnullvm-0.52.6\",\n sha256 = \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_gnullvm-0.53.1\",\n sha256 = \"fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_msvc-0.48.5\",\n sha256 = \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.48.5/download\"],\n strip_prefix = \"windows_i686_msvc-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_msvc-0.52.6\",\n sha256 = \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.52.6/download\"],\n strip_prefix = \"windows_i686_msvc-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_i686_msvc-0.53.1\",\n sha256 = \"1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.53.1/download\"],\n strip_prefix = \"windows_i686_msvc-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_i686_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnu-0.48.5\",\n sha256 = \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnu-0.52.6\",\n sha256 = \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnu-0.53.1\",\n sha256 = \"9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnullvm-0.48.5\",\n sha256 = \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnullvm-0.52.6\",\n sha256 = \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_gnullvm-0.53.1\",\n sha256 = \"0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_msvc-0.48.5\",\n sha256 = \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.48.5\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_msvc-0.52.6\",\n sha256 = \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.52.6\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__windows_x86_64_msvc-0.53.1\",\n sha256 = \"d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.53.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.windows_x86_64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__winnow-0.7.14\",\n sha256 = \"5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winnow/0.7.14/download\"],\n strip_prefix = \"winnow-0.7.14\",\n build_file = Label(\"@crate_index//crate_index:BUILD.winnow-0.7.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-bindgen-0.51.0\",\n sha256 = \"d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-0.51.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-bindgen-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-bindgen-core-0.51.0\",\n sha256 = \"ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-core/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-core-0.51.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-bindgen-core-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-bindgen-rust-0.51.0\",\n sha256 = \"b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-0.51.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-bindgen-rust-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-bindgen-rust-macro-0.51.0\",\n sha256 = \"0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-macro-0.51.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-bindgen-rust-macro-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-component-0.244.0\",\n sha256 = \"9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-component/0.244.0/download\"],\n strip_prefix = \"wit-component-0.244.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-component-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__wit-parser-0.244.0\",\n sha256 = \"ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-parser/0.244.0/download\"],\n strip_prefix = \"wit-parser-0.244.0\",\n build_file = Label(\"@crate_index//crate_index:BUILD.wit-parser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__yansi-1.0.1\",\n sha256 = \"cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yansi/1.0.1/download\"],\n strip_prefix = \"yansi-1.0.1\",\n build_file = Label(\"@crate_index//crate_index:BUILD.yansi-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__zerocopy-0.8.40\",\n sha256 = \"a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy/0.8.40/download\"],\n strip_prefix = \"zerocopy-0.8.40\",\n build_file = Label(\"@crate_index//crate_index:BUILD.zerocopy-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__zerocopy-derive-0.8.40\",\n sha256 = \"f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy-derive/0.8.40/download\"],\n strip_prefix = \"zerocopy-derive-0.8.40\",\n build_file = Label(\"@crate_index//crate_index:BUILD.zerocopy-derive-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__zeroize-1.8.2\",\n sha256 = \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize/1.8.2/download\"],\n strip_prefix = \"zeroize-1.8.2\",\n build_file = Label(\"@crate_index//crate_index:BUILD.zeroize-1.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__zeroize_derive-1.4.3\",\n sha256 = \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize_derive/1.4.3/download\"],\n strip_prefix = \"zeroize_derive-1.4.3\",\n build_file = Label(\"@crate_index//crate_index:BUILD.zeroize_derive-1.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crate_index__zmij-1.0.21\",\n sha256 = \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.21/download\"],\n strip_prefix = \"zmij-1.0.21\",\n build_file = Label(\"@crate_index//crate_index:BUILD.zmij-1.0.21.bazel\"),\n )\n\n return [\n struct(repo=\"crate_index__adler32-1.2.0\", is_dev_dep = False),\n struct(repo=\"crate_index__anyhow-1.0.102\", is_dev_dep = False),\n struct(repo=\"crate_index__argh-0.1.14\", is_dev_dep = False),\n struct(repo=\"crate_index__arrayvec-0.7.6\", is_dev_dep = False),\n struct(repo=\"crate_index__async-stream-0.3.6\", is_dev_dep = False),\n struct(repo=\"crate_index__bytes-1.11.1\", is_dev_dep = False),\n struct(repo=\"crate_index__cc-1.2.56\", is_dev_dep = False),\n struct(repo=\"crate_index__clap-4.5.60\", is_dev_dep = False),\n struct(repo=\"crate_index__cliclack-0.3.9\", is_dev_dep = False),\n struct(repo=\"crate_index__console-0.16.2\", is_dev_dep = False),\n struct(repo=\"crate_index__ctrlc-3.5.2\", is_dev_dep = False),\n struct(repo=\"crate_index__env_logger-0.11.9\", is_dev_dep = False),\n struct(repo=\"crate_index__futures-0.3.32\", is_dev_dep = False),\n struct(repo=\"crate_index__human_bytes-0.4.3\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-0.5.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-container-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-elementary-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-memory-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-posix-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-system-types-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-testing-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-bb-threadsafe-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-cal-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__iceoryx2-qnx8-0.7.0\", is_dev_dep = False),\n struct(repo=\"crate_index__indicatif-0.18.4\", is_dev_dep = False),\n struct(repo=\"crate_index__indicatif-log-bridge-0.2.3\", is_dev_dep = False),\n struct(repo=\"crate_index__ipc-channel-0.20.2\", is_dev_dep = False),\n struct(repo=\"crate_index__libc-0.2.182\", is_dev_dep = False),\n struct(repo=\"crate_index__log-0.4.29\", is_dev_dep = False),\n struct(repo=\"crate_index__mio-1.1.1\", is_dev_dep = False),\n struct(repo=\"crate_index__nix-0.30.1\", is_dev_dep = False),\n struct(repo=\"crate_index__paste-1.0.15\", is_dev_dep = False),\n struct(repo=\"crate_index__pico-args-0.5.0\", is_dev_dep = False),\n struct(repo=\"crate_index__postcard-1.1.3\", is_dev_dep = False),\n struct(repo=\"crate_index__proc-macro2-1.0.106\", is_dev_dep = False),\n struct(repo=\"crate_index__prost-0.14.3\", is_dev_dep = False),\n struct(repo=\"crate_index__prost-build-0.14.3\", is_dev_dep = False),\n struct(repo=\"crate_index__prost-types-0.14.3\", is_dev_dep = False),\n struct(repo=\"crate_index__protoc-gen-prost-0.4.0\", is_dev_dep = False),\n struct(repo=\"crate_index__protoc-gen-tonic-0.4.1\", is_dev_dep = False),\n struct(repo=\"crate_index__quote-1.0.44\", is_dev_dep = False),\n struct(repo=\"crate_index__rand-0.9.2\", is_dev_dep = False),\n struct(repo=\"crate_index__serde-1.0.228\", is_dev_dep = False),\n struct(repo=\"crate_index__serde_json-1.0.149\", is_dev_dep = False),\n struct(repo=\"crate_index__signal-hook-0.3.18\", is_dev_dep = False),\n struct(repo=\"crate_index__socket2-0.6.2\", is_dev_dep = False),\n struct(repo=\"crate_index__syn-2.0.117\", is_dev_dep = False),\n struct(repo=\"crate_index__tempfile-3.26.0\", is_dev_dep = False),\n struct(repo=\"crate_index__time-0.3.47\", is_dev_dep = False),\n struct(repo=\"crate_index__tinyjson-2.5.1\", is_dev_dep = False),\n struct(repo=\"crate_index__tokio-1.50.0\", is_dev_dep = False),\n struct(repo=\"crate_index__tokio-seqpacket-0.8.1\", is_dev_dep = False),\n struct(repo=\"crate_index__tokio-util-0.7.18\", is_dev_dep = False),\n struct(repo=\"crate_index__tonic-0.14.5\", is_dev_dep = False),\n struct(repo=\"crate_index__tracing-0.1.44\", is_dev_dep = False),\n struct(repo=\"crate_index__tracing-subscriber-0.3.22\", is_dev_dep = False),\n ]\n" + } + } + }, + "crate_index__adler32-1.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/adler32/1.2.0/download" + ], + "strip_prefix": "adler32-1.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"adler32\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=adler32\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.0\",\n)\n" + } + }, + "crate_index__aho-corasick-1.1.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/aho-corasick/1.1.4/download" + ], + "strip_prefix": "aho-corasick-1.1.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"aho_corasick\",\n deps = [\n \"@crate_index__memchr-2.8.0//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"perf-literal\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=aho-corasick\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.4\",\n)\n" + } + }, + "crate_index__aliasable-0.1.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/aliasable/0.1.3/download" + ], + "strip_prefix": "aliasable-0.1.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"aliasable\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=aliasable\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.3\",\n)\n" + } + }, + "crate_index__anstream-0.6.21": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstream/0.6.21/download" + ], + "strip_prefix": "anstream-0.6.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstream\",\n deps = [\n \"@crate_index__anstyle-1.0.13//:anstyle\",\n \"@crate_index__anstyle-parse-0.2.7//:anstyle_parse\",\n \"@crate_index__anstyle-query-1.1.5//:anstyle_query\",\n \"@crate_index__colorchoice-1.0.4//:colorchoice\",\n \"@crate_index__is_terminal_polyfill-1.70.2//:is_terminal_polyfill\",\n \"@crate_index__utf8parse-0.2.2//:utf8parse\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auto\",\n \"default\",\n \"wincon\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.21\",\n)\n" + } + }, + "crate_index__anstyle-1.0.13": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle/1.0.13/download" + ], + "strip_prefix": "anstyle-1.0.13", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.13\",\n)\n" + } + }, + "crate_index__anstyle-parse-0.2.7": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-parse/0.2.7/download" + ], + "strip_prefix": "anstyle-parse-0.2.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_parse\",\n deps = [\n \"@crate_index__utf8parse-0.2.2//:utf8parse\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"utf8\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.7\",\n)\n" + } + }, + "crate_index__anstyle-query-1.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-query/1.1.5/download" + ], + "strip_prefix": "anstyle-query-1.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_query\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-query\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.5\",\n)\n" + } + }, + "crate_index__anstyle-wincon-3.0.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-wincon/3.0.11/download" + ], + "strip_prefix": "anstyle-wincon-3.0.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anstyle_wincon\",\n deps = [\n \"@crate_index__anstyle-1.0.13//:anstyle\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anstyle-wincon\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.0.11\",\n)\n" + } + }, + "crate_index__anyhow-1.0.102": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anyhow/1.0.102/download" + ], + "strip_prefix": "anyhow-1.0.102", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anyhow\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anyhow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.102\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"anyhow\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anyhow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.102\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__argh-0.1.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7f384d96bfd3c0b3c41f24dae69ee9602c091d64fc432225cf5295b5abbe0036", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/argh/0.1.14/download" + ], + "strip_prefix": "argh-0.1.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"argh\",\n deps = [\n \"@crate_index__argh_shared-0.1.14//:argh_shared\",\n ],\n proc_macro_deps = [\n \"@crate_index__argh_derive-0.1.14//:argh_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"help\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=argh\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.14\",\n)\n" + } + }, + "crate_index__argh_derive-0.1.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "938e5f66269c1f168035e29ed3fb437b084e476465e9314a0328f4005d7be599", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/argh_derive/0.1.14/download" + ], + "strip_prefix": "argh_derive-0.1.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"argh_derive\",\n deps = [\n \"@crate_index__argh_shared-0.1.14//:argh_shared\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"help\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=argh_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.14\",\n)\n" + } + }, + "crate_index__argh_shared-0.1.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5127f8a5bc1cfb0faf1f6248491452b8a5b6901068d8da2d47cbb285986ae683", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/argh_shared/0.1.14/download" + ], + "strip_prefix": "argh_shared-0.1.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"argh_shared\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=argh_shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.14\",\n)\n" + } + }, + "crate_index__arrayvec-0.7.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/arrayvec/0.7.6/download" + ], + "strip_prefix": "arrayvec-0.7.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"arrayvec\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=arrayvec\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.6\",\n)\n" + } + }, + "crate_index__async-stream-0.3.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/async-stream/0.3.6/download" + ], + "strip_prefix": "async-stream-0.3.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"async_stream\",\n deps = [\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n ],\n proc_macro_deps = [\n \"@crate_index__async-stream-impl-0.3.6//:async_stream_impl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=async-stream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.6\",\n)\n" + } + }, + "crate_index__async-stream-impl-0.3.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/async-stream-impl/0.3.6/download" + ], + "strip_prefix": "async-stream-impl-0.3.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"async_stream_impl\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=async-stream-impl\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.6\",\n)\n" + } + }, + "crate_index__async-trait-0.1.89": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/async-trait/0.1.89/download" + ], + "strip_prefix": "async-trait-0.1.89", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"async_trait\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=async-trait\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.89\",\n)\n" + } + }, + "crate_index__atomic-polyfill-1.0.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/atomic-polyfill/1.0.3/download" + ], + "strip_prefix": "atomic-polyfill-1.0.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"atomic_polyfill\",\n deps = [\n \"@crate_index__atomic-polyfill-1.0.3//:build_script_build\",\n \"@crate_index__critical-section-1.2.0//:critical_section\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=atomic-polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.3\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"atomic-polyfill\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=atomic-polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.3\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__atomic-waker-1.1.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/atomic-waker/1.1.2/download" + ], + "strip_prefix": "atomic-waker-1.1.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"atomic_waker\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=atomic-waker\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.2\",\n)\n" + } + }, + "crate_index__axum-0.8.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/axum/0.8.8/download" + ], + "strip_prefix": "axum-0.8.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum\",\n deps = [\n \"@crate_index__axum-core-0.5.6//:axum_core\",\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-util-0.3.32//:futures_util\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__http-body-util-0.1.3//:http_body_util\",\n \"@crate_index__itoa-1.0.17//:itoa\",\n \"@crate_index__matchit-0.8.4//:matchit\",\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__mime-0.3.17//:mime\",\n \"@crate_index__percent-encoding-2.3.2//:percent_encoding\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__serde_core-1.0.228//:serde_core\",\n \"@crate_index__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crate_index__tower-0.5.3//:tower\",\n \"@crate_index__tower-layer-0.3.3//:tower_layer\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.8\",\n)\n" + } + }, + "crate_index__axum-core-0.5.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/axum-core/0.5.6/download" + ], + "strip_prefix": "axum-core-0.5.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum_core\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__http-body-util-0.1.3//:http_body_util\",\n \"@crate_index__mime-0.3.17//:mime\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crate_index__tower-layer-0.3.3//:tower_layer\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.6\",\n)\n" + } + }, + "crate_index__base64-0.22.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/base64/0.22.1/download" + ], + "strip_prefix": "base64-0.22.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"base64\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=base64\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.22.1\",\n)\n" + } + }, + "crate_index__bincode-1.3.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bincode/1.3.3/download" + ], + "strip_prefix": "bincode-1.3.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bincode\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bincode\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.3\",\n)\n" + } + }, + "crate_index__bindgen-0.69.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bindgen/0.69.5/download" + ], + "strip_prefix": "bindgen-0.69.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bindgen\",\n deps = [\n \"@crate_index__bindgen-0.69.5//:build_script_build\",\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__cexpr-0.6.0//:cexpr\",\n \"@crate_index__clang-sys-1.8.1//:clang_sys\",\n \"@crate_index__itertools-0.12.1//:itertools\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__lazycell-1.3.0//:lazycell\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__rustc-hash-1.1.0//:rustc_hash\",\n \"@crate_index__shlex-1.3.0//:shlex\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__which-4.4.2//:which\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"logging\",\n \"prettyplease\",\n \"runtime\",\n \"which-rustfmt\",\n ],\n crate_root = \"lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.69.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"logging\",\n \"prettyplease\",\n \"runtime\",\n \"which-rustfmt\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crate_index__clang-sys-1.8.1//:clang_sys\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n ],\n edition = \"2018\",\n pkg_name = \"bindgen\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.69.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__bindgen-0.72.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bindgen/0.72.1/download" + ], + "strip_prefix": "bindgen-0.72.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bindgen\",\n deps = [\n \"@crate_index__bindgen-0.72.1//:build_script_build\",\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__cexpr-0.6.0//:cexpr\",\n \"@crate_index__clang-sys-1.8.1//:clang_sys\",\n \"@crate_index__itertools-0.13.0//:itertools\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__rustc-hash-2.1.1//:rustc_hash\",\n \"@crate_index__shlex-1.3.0//:shlex\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"logging\",\n \"prettyplease\",\n \"runtime\",\n ],\n crate_root = \"lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.72.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"logging\",\n \"prettyplease\",\n \"runtime\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crate_index__clang-sys-1.8.1//:clang_sys\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n ],\n edition = \"2021\",\n pkg_name = \"bindgen\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.72.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__bitflags-2.11.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitflags/2.11.0/download" + ], + "strip_prefix": "bitflags-2.11.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitflags\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"std\", # aarch64-unknown-nto-qnx710\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"std\", # x86_64-pc-nto-qnx710\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"std\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitflags\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.11.0\",\n)\n" + } + }, + "crate_index__block2-0.6.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/block2/0.6.2/download" + ], + "strip_prefix": "block2-0.6.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"block2\",\n deps = [\n \"@crate_index__objc2-0.6.4//:objc2\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=block2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.2\",\n)\n" + } + }, + "crate_index__bumpalo-3.20.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bumpalo/3.20.2/download" + ], + "strip_prefix": "bumpalo-3.20.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bumpalo\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bumpalo\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.20.2\",\n)\n" + } + }, + "crate_index__byteorder-1.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/byteorder/1.5.0/download" + ], + "strip_prefix": "byteorder-1.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"byteorder\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=byteorder\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.0\",\n)\n" + } + }, + "crate_index__bytes-1.11.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bytes/1.11.1/download" + ], + "strip_prefix": "bytes-1.11.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bytes\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bytes\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.11.1\",\n)\n" + } + }, + "crate_index__cc-1.2.56": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cc/1.2.56/download" + ], + "strip_prefix": "cc-1.2.56", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cc\",\n deps = [\n \"@crate_index__find-msvc-tools-0.1.9//:find_msvc_tools\",\n \"@crate_index__shlex-1.3.0//:shlex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.56\",\n)\n" + } + }, + "crate_index__cdr-0.2.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9617422bf43fde9280707a7e90f8f7494389c182f5c70b0f67592d0f06d41dfa", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cdr/0.2.4/download" + ], + "strip_prefix": "cdr-0.2.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cdr\",\n deps = [\n \"@crate_index__byteorder-1.5.0//:byteorder\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cdr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.4\",\n)\n" + } + }, + "crate_index__cexpr-0.6.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cexpr/0.6.0/download" + ], + "strip_prefix": "cexpr-0.6.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cexpr\",\n deps = [\n \"@crate_index__nom-7.1.3//:nom\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cexpr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.0\",\n)\n" + } + }, + "crate_index__cfg-if-1.0.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cfg-if/1.0.4/download" + ], + "strip_prefix": "cfg-if-1.0.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cfg_if\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cfg-if\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.4\",\n)\n" + } + }, + "crate_index__cfg_aliases-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cfg_aliases/0.2.1/download" + ], + "strip_prefix": "cfg_aliases-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cfg_aliases\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cfg_aliases\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crate_index__clang-sys-1.8.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clang-sys/1.8.1/download" + ], + "strip_prefix": "clang-sys-1.8.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clang_sys\",\n deps = [\n \"@crate_index__clang-sys-1.8.1//:build_script_build\",\n \"@crate_index__glob-0.3.3//:glob\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__libloading-0.8.9//:libloading\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clang_10_0\",\n \"clang_11_0\",\n \"clang_3_5\",\n \"clang_3_6\",\n \"clang_3_7\",\n \"clang_3_8\",\n \"clang_3_9\",\n \"clang_4_0\",\n \"clang_5_0\",\n \"clang_6_0\",\n \"clang_7_0\",\n \"clang_8_0\",\n \"clang_9_0\",\n \"libloading\",\n \"runtime\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clang-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.8.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clang_10_0\",\n \"clang_11_0\",\n \"clang_3_5\",\n \"clang_3_6\",\n \"clang_3_7\",\n \"clang_3_8\",\n \"clang_3_9\",\n \"clang_4_0\",\n \"clang_5_0\",\n \"clang_6_0\",\n \"clang_7_0\",\n \"clang_8_0\",\n \"clang_9_0\",\n \"libloading\",\n \"runtime\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__glob-0.3.3//:glob\",\n ],\n edition = \"2021\",\n links = \"clang\",\n pkg_name = \"clang-sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clang-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.8.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__clap-4.5.60": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap/4.5.60/download" + ], + "strip_prefix": "clap-4.5.60", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap\",\n deps = [\n \"@crate_index__clap_builder-4.5.60//:clap_builder\",\n ],\n proc_macro_deps = [\n \"@crate_index__clap_derive-4.5.55//:clap_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"default\",\n \"derive\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.60\",\n)\n" + } + }, + "crate_index__clap_builder-4.5.60": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_builder/4.5.60/download" + ], + "strip_prefix": "clap_builder-4.5.60", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_builder\",\n deps = [\n \"@crate_index__anstream-0.6.21//:anstream\",\n \"@crate_index__anstyle-1.0.13//:anstyle\",\n \"@crate_index__clap_lex-1.0.0//:clap_lex\",\n \"@crate_index__strsim-0.11.1//:strsim\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"color\",\n \"error-context\",\n \"help\",\n \"std\",\n \"suggestions\",\n \"usage\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_builder\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.60\",\n)\n" + } + }, + "crate_index__clap_derive-4.5.55": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_derive/4.5.55/download" + ], + "strip_prefix": "clap_derive-4.5.55", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"clap_derive\",\n deps = [\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.5.55\",\n)\n" + } + }, + "crate_index__clap_lex-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_lex/1.0.0/download" + ], + "strip_prefix": "clap_lex-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"clap_lex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=clap_lex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crate_index__cliclack-0.3.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4797110534d49f4e38465be8d84c911f3a9e0f6582f70d3aa4cb30c8fa737851", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cliclack/0.3.9/download" + ], + "strip_prefix": "cliclack-0.3.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cliclack\",\n deps = [\n \"@crate_index__console-0.16.2//:console\",\n \"@crate_index__indicatif-0.18.4//:indicatif\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__strsim-0.11.1//:strsim\",\n \"@crate_index__textwrap-0.16.2//:textwrap\",\n \"@crate_index__zeroize-1.8.2//:zeroize\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cliclack\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.9\",\n)\n" + } + }, + "crate_index__cobs-0.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cobs/0.3.0/download" + ], + "strip_prefix": "cobs-0.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cobs\",\n deps = [\n \"@crate_index__thiserror-2.0.18//:thiserror\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cobs\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.0\",\n)\n" + } + }, + "crate_index__colorchoice-1.0.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/colorchoice/1.0.4/download" + ], + "strip_prefix": "colorchoice-1.0.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"colorchoice\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=colorchoice\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.4\",\n)\n" + } + }, + "crate_index__console-0.16.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/console/0.16.2/download" + ], + "strip_prefix": "console-0.16.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"console\",\n deps = [\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__unicode-width-0.2.2//:unicode_width\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"ansi-parsing\",\n \"default\",\n \"std\",\n \"unicode-width\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=console\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.16.2\",\n)\n" + } + }, + "crate_index__critical-section-1.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/critical-section/1.2.0/download" + ], + "strip_prefix": "critical-section-1.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"critical_section\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=critical-section\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.0\",\n)\n" + } + }, + "crate_index__crossbeam-channel-0.5.15": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crossbeam-channel/0.5.15/download" + ], + "strip_prefix": "crossbeam-channel-0.5.15", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossbeam_channel\",\n deps = [\n \"@crate_index__crossbeam-utils-0.8.21//:crossbeam_utils\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossbeam-channel\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.15\",\n)\n" + } + }, + "crate_index__crossbeam-utils-0.8.21": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crossbeam-utils/0.8.21/download" + ], + "strip_prefix": "crossbeam-utils-0.8.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossbeam_utils\",\n deps = [\n \"@crate_index__crossbeam-utils-0.8.21//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossbeam-utils\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.21\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"crossbeam-utils\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossbeam-utils\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.8.21\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__ctrlc-3.5.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ctrlc/3.5.2/download" + ], + "strip_prefix": "ctrlc-3.5.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ctrlc\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__nix-0.31.2//:nix\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__nix-0.31.2//:nix\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__nix-0.31.2//:nix\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"termination\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ctrlc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.5.2\",\n)\n" + } + }, + "crate_index__deranged-0.5.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/deranged/0.5.8/download" + ], + "strip_prefix": "deranged-0.5.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"deranged\",\n deps = [\n \"@crate_index__powerfmt-0.2.0//:powerfmt\",\n \"@crate_index__serde_core-1.0.228//:serde_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"powerfmt\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=deranged\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.8\",\n)\n" + } + }, + "crate_index__dispatch2-0.3.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/dispatch2/0.3.1/download" + ], + "strip_prefix": "dispatch2-0.3.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"dispatch2\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=dispatch2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.1\",\n)\n" + } + }, + "crate_index__either-1.15.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/either/1.15.0/download" + ], + "strip_prefix": "either-1.15.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"either\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n \"std\", # x86_64-unknown-linux-gnu\n \"use_std\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=either\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.15.0\",\n)\n" + } + }, + "crate_index__embedded-io-0.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/embedded-io/0.4.0/download" + ], + "strip_prefix": "embedded-io-0.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"embedded_io\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=embedded-io\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0\",\n)\n" + } + }, + "crate_index__embedded-io-0.6.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/embedded-io/0.6.1/download" + ], + "strip_prefix": "embedded-io-0.6.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"embedded_io\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=embedded-io\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.1\",\n)\n" + } + }, + "crate_index__encode_unicode-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/encode_unicode/1.0.0/download" + ], + "strip_prefix": "encode_unicode-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"encode_unicode\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=encode_unicode\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crate_index__enum-iterator-2.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/enum-iterator/2.3.0/download" + ], + "strip_prefix": "enum-iterator-2.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"enum_iterator\",\n proc_macro_deps = [\n \"@crate_index__enum-iterator-derive-1.5.0//:enum_iterator_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=enum-iterator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.3.0\",\n)\n" + } + }, + "crate_index__enum-iterator-derive-1.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/enum-iterator-derive/1.5.0/download" + ], + "strip_prefix": "enum-iterator-derive-1.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"enum_iterator_derive\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=enum-iterator-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.0\",\n)\n" + } + }, + "crate_index__env_filter-1.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/env_filter/1.0.0/download" + ], + "strip_prefix": "env_filter-1.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"env_filter\",\n deps = [\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__regex-1.12.3//:regex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"regex\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=env_filter\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.0\",\n)\n" + } + }, + "crate_index__env_logger-0.11.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/env_logger/0.11.9/download" + ], + "strip_prefix": "env_logger-0.11.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"env_logger\",\n deps = [\n \"@crate_index__anstream-0.6.21//:anstream\",\n \"@crate_index__anstyle-1.0.13//:anstyle\",\n \"@crate_index__env_filter-1.0.0//:env_filter\",\n \"@crate_index__jiff-0.2.22//:jiff\",\n \"@crate_index__log-0.4.29//:log\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auto-color\",\n \"color\",\n \"default\",\n \"humantime\",\n \"regex\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=env_logger\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.9\",\n)\n" + } + }, + "crate_index__equivalent-1.0.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/equivalent/1.0.2/download" + ], + "strip_prefix": "equivalent-1.0.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"equivalent\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=equivalent\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.2\",\n)\n" + } + }, + "crate_index__errno-0.3.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/errno/0.3.14/download" + ], + "strip_prefix": "errno-0.3.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"errno\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=errno\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.14\",\n)\n" + } + }, + "crate_index__fastrand-2.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fastrand/2.3.0/download" + ], + "strip_prefix": "fastrand-2.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fastrand\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fastrand\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.3.0\",\n)\n" + } + }, + "crate_index__filedesc-0.6.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c4960c866d9cf4c48f64f11ef0020c98900d0cb32e9b019c000ed838470daa1d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/filedesc/0.6.3/download" + ], + "strip_prefix": "filedesc-0.6.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"filedesc\",\n deps = [\n \"@crate_index__libc-0.2.182//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=filedesc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.3\",\n)\n" + } + }, + "crate_index__find-msvc-tools-0.1.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/find-msvc-tools/0.1.9/download" + ], + "strip_prefix": "find-msvc-tools-0.1.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"find_msvc_tools\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=find-msvc-tools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.9\",\n)\n" + } + }, + "crate_index__fixedbitset-0.5.7": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fixedbitset/0.5.7/download" + ], + "strip_prefix": "fixedbitset-0.5.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fixedbitset\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fixedbitset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.7\",\n)\n" + } + }, + "crate_index__fnv-1.0.7": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fnv/1.0.7/download" + ], + "strip_prefix": "fnv-1.0.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fnv\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fnv\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.7\",\n)\n" + } + }, + "crate_index__foldhash-0.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/foldhash/0.1.5/download" + ], + "strip_prefix": "foldhash-0.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"foldhash\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=foldhash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.5\",\n)\n" + } + }, + "crate_index__futures-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures/0.3.32/download" + ], + "strip_prefix": "futures-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures\",\n deps = [\n \"@crate_index__futures-channel-0.3.32//:futures_channel\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-executor-0.3.32//:futures_executor\",\n \"@crate_index__futures-io-0.3.32//:futures_io\",\n \"@crate_index__futures-sink-0.3.32//:futures_sink\",\n \"@crate_index__futures-task-0.3.32//:futures_task\",\n \"@crate_index__futures-util-0.3.32//:futures_util\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"async-await\",\n \"default\",\n \"executor\",\n \"futures-executor\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-channel-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-channel/0.3.32/download" + ], + "strip_prefix": "futures-channel-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_channel\",\n deps = [\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-sink-0.3.32//:futures_sink\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"futures-sink\",\n \"sink\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-channel\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-core-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-core/0.3.32/download" + ], + "strip_prefix": "futures-core-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_core\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-executor-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-executor/0.3.32/download" + ], + "strip_prefix": "futures-executor-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_executor\",\n deps = [\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-task-0.3.32//:futures_task\",\n \"@crate_index__futures-util-0.3.32//:futures_util\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-executor\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-io-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-io/0.3.32/download" + ], + "strip_prefix": "futures-io-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_io\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-io\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-macro-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-macro/0.3.32/download" + ], + "strip_prefix": "futures-macro-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"futures_macro\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-sink-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-sink/0.3.32/download" + ], + "strip_prefix": "futures-sink-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_sink\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-sink\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-task-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-task/0.3.32/download" + ], + "strip_prefix": "futures-task-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_task\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-task\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__futures-util-0.3.32": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/futures-util/0.3.32/download" + ], + "strip_prefix": "futures-util-0.3.32", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_util\",\n deps = [\n \"@crate_index__futures-channel-0.3.32//:futures_channel\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-io-0.3.32//:futures_io\",\n \"@crate_index__futures-sink-0.3.32//:futures_sink\",\n \"@crate_index__futures-task-0.3.32//:futures_task\",\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__slab-0.4.12//:slab\",\n ],\n proc_macro_deps = [\n \"@crate_index__futures-macro-0.3.32//:futures_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"async-await\",\n \"async-await-macro\",\n \"channel\",\n \"futures-channel\",\n \"futures-io\",\n \"futures-macro\",\n \"futures-sink\",\n \"io\",\n \"memchr\",\n \"sink\",\n \"slab\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + } + }, + "crate_index__getrandom-0.3.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/getrandom/0.3.4/download" + ], + "strip_prefix": "getrandom-0.3.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"getrandom\",\n deps = [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n \"@crate_index__getrandom-0.3.4//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.4\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"getrandom\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.3.4\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__getrandom-0.4.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/getrandom/0.4.2/download" + ], + "strip_prefix": "getrandom-0.4.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"getrandom\",\n deps = [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n \"@crate_index__getrandom-0.4.2//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(any(target_os = \"haiku\", target_os = \"redox\", target_os = \"nto\", target_os = \"aix\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(any(target_os = \"linux\", target_os = \"android\"), not(any(all(target_os = \"linux\", target_env = \"\"), getrandom_backend = \"custom\", getrandom_backend = \"linux_raw\", getrandom_backend = \"rdrand\", getrandom_backend = \"rndr\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2024\",\n pkg_name = \"getrandom\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.4.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__glob-0.3.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/glob/0.3.3/download" + ], + "strip_prefix": "glob-0.3.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"glob\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=glob\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.3\",\n)\n" + } + }, + "crate_index__h2-0.4.13": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/h2/0.4.13/download" + ], + "strip_prefix": "h2-0.4.13", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"h2\",\n deps = [\n \"@crate_index__atomic-waker-1.1.2//:atomic_waker\",\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__fnv-1.0.7//:fnv\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-sink-0.3.32//:futures_sink\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__slab-0.4.12//:slab\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__tokio-util-0.7.18//:tokio_util\",\n \"@crate_index__tracing-0.1.44//:tracing\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=h2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.13\",\n)\n" + } + }, + "crate_index__hash32-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hash32/0.2.1/download" + ], + "strip_prefix": "hash32-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hash32\",\n deps = [\n \"@crate_index__byteorder-1.5.0//:byteorder\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hash32\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crate_index__hashbrown-0.15.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashbrown/0.15.5/download" + ], + "strip_prefix": "hashbrown-0.15.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n deps = [\n \"@crate_index__foldhash-0.1.5//:foldhash\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default-hasher\",\n \"inline-more\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.15.5\",\n)\n" + } + }, + "crate_index__hashbrown-0.16.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashbrown/0.16.1/download" + ], + "strip_prefix": "hashbrown-0.16.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.16.1\",\n)\n" + } + }, + "crate_index__heapless-0.7.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heapless/0.7.17/download" + ], + "strip_prefix": "heapless-0.7.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"heapless\",\n deps = [\n \"@crate_index__hash32-0.2.1//:hash32\",\n \"@crate_index__heapless-0.7.17//:build_script_build\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__stable_deref_trait-1.2.1//:stable_deref_trait\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__spin-0.9.8//:spin\", # cfg(target_arch = \"x86_64\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__spin-0.9.8//:spin\", # cfg(target_arch = \"x86_64\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [\n \"@crate_index__spin-0.9.8//:spin\", # cfg(target_arch = \"x86_64\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"atomic-polyfill\",\n \"cas\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heapless\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.17\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"atomic-polyfill\",\n \"cas\",\n \"serde\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__rustc_version-0.4.1//:rustc_version\",\n ],\n edition = \"2018\",\n pkg_name = \"heapless\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heapless\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.7.17\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__heck-0.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heck/0.4.1/download" + ], + "strip_prefix": "heck-0.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"heck\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heck\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n" + } + }, + "crate_index__heck-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heck/0.5.0/download" + ], + "strip_prefix": "heck-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"heck\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=heck\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__home-0.5.12": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/home/0.5.12/download" + ], + "strip_prefix": "home-0.5.12", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"home\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=home\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.12\",\n)\n" + } + }, + "crate_index__http-1.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/http/1.4.0/download" + ], + "strip_prefix": "http-1.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__itoa-1.0.17//:itoa\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.0\",\n)\n" + } + }, + "crate_index__http-body-1.0.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/http-body/1.0.1/download" + ], + "strip_prefix": "http-body-1.0.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__http-1.4.0//:http\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n" + } + }, + "crate_index__http-body-util-0.1.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/http-body-util/0.1.3/download" + ], + "strip_prefix": "http-body-util-0.1.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body_util\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.3\",\n)\n" + } + }, + "crate_index__httparse-1.10.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/httparse/1.10.1/download" + ], + "strip_prefix": "httparse-1.10.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"httparse\",\n deps = [\n \"@crate_index__httparse-1.10.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=httparse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.10.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"httparse\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=httparse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.10.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__httpdate-1.0.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/httpdate/1.0.3/download" + ], + "strip_prefix": "httpdate-1.0.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"httpdate\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=httpdate\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.3\",\n)\n" + } + }, + "crate_index__human_bytes-0.4.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/human_bytes/0.4.3/download" + ], + "strip_prefix": "human_bytes-0.4.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"human_bytes\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"si-units\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=human_bytes\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.3\",\n)\n" + } + }, + "crate_index__hyper-1.8.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hyper/1.8.1/download" + ], + "strip_prefix": "hyper-1.8.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper\",\n deps = [\n \"@crate_index__atomic-waker-1.1.2//:atomic_waker\",\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-channel-0.3.32//:futures_channel\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__h2-0.4.13//:h2\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__httparse-1.10.1//:httparse\",\n \"@crate_index__httpdate-1.0.3//:httpdate\",\n \"@crate_index__itoa-1.0.17//:itoa\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__pin-utils-0.1.0//:pin_utils\",\n \"@crate_index__smallvec-1.15.1//:smallvec\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__want-0.3.1//:want\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"default\",\n \"http1\",\n \"http2\",\n \"server\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.8.1\",\n)\n" + } + }, + "crate_index__hyper-timeout-0.5.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hyper-timeout/0.5.2/download" + ], + "strip_prefix": "hyper-timeout-0.5.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_timeout\",\n deps = [\n \"@crate_index__hyper-1.8.1//:hyper\",\n \"@crate_index__hyper-util-0.1.20//:hyper_util\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-timeout\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" + } + }, + "crate_index__hyper-util-0.1.20": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hyper-util/0.1.20/download" + ], + "strip_prefix": "hyper-util-0.1.20", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_util\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-channel-0.3.32//:futures_channel\",\n \"@crate_index__futures-util-0.3.32//:futures_util\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__hyper-1.8.1//:hyper\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__socket2-0.6.2//:socket2\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n \"@crate_index__tracing-0.1.44//:tracing\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"client-legacy\",\n \"default\",\n \"http1\",\n \"http2\",\n \"server\",\n \"server-auto\",\n \"service\",\n \"tokio\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.20\",\n)\n" + } + }, + "crate_index__iceoryx2-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "12c091b5786a230240f8f2691b9d29508ed0a02c025c254abaed8bc788a66bb3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2/0.5.0/download" + ], + "strip_prefix": "iceoryx2-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2\",\n deps = [\n \"@crate_index__cdr-0.2.4//:cdr\",\n \"@crate_index__iceoryx2-bb-container-0.5.0//:iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-lock-free-0.5.0//:iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-memory-0.5.0//:iceoryx2_bb_memory\",\n \"@crate_index__iceoryx2-bb-posix-0.5.0//:iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-bb-system-types-0.5.0//:iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-cal-0.5.0//:iceoryx2_cal\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__sha1_smol-1.0.1//:sha1_smol\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n \"@crate_index__toml-0.8.23//:toml\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-0.5.0//:iceoryx2_bb_derive_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-container-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fff9d75921f8ccd3e19261d72082b52ccc4704dcdd6930efe6c17b15693ab519", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-container/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-container-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_container\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-0.5.0//:iceoryx2_bb_derive_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-container\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-container-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_container_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\": \"iceoryx2_bb_derive_macros\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-container-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/container", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-derive-macros-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9257482fb822946bb3028225b6807350e3f815068961ff5bf683735ce01d59a4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-derive-macros/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-derive-macros-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"iceoryx2_bb_derive_macros\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-derive-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [ + "@@score_crates+//patches:iceoryx2_bb_derive_macros_readme.patch" + ], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"iceoryx2_bb_derive_macros_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-derive-macros-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/derive-macros", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-elementary-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "38aae0237ff1575a7d9672c0202e5d313e7f674a635f6aaf619d2090fb7a12c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-elementary/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-elementary-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_elementary\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-elementary\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-elementary-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_elementary_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-elementary-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/elementary", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_elementary_traits_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-elementary-traits-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/elementary-traits", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-linux-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_linux_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__iceoryx2-pal-os-api-qnx8-0.7.0//:iceoryx2_pal_os_api_qnx8\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\": \"iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\": \"iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-os-api-qnx8-0.7.0//:iceoryx2_pal_os_api_qnx8\": \"iceoryx2_pal_os_api\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\": \"iceoryx2_pal_posix\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-linux-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/linux", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-lock-free-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3ec3227a0c8b1d9e1ea4c61fa6a773e7c3b721fa3e2fd4363324f302b35ac85b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-lock-free/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-lock-free-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_lock_free\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-lock-free\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_lock_free_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-lock-free-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/lock-free", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-log-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "07df5e6ff06cc2ffb0a86b67c7cd4be86b11264d5e83c02a52b384e2d5e6363a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-log/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-log-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_log\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__termsize-0.1.9//:termsize\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-log-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_log_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-log-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/log", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-memory-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "55a4ae8856404b6e7eca567004673ca39109fc70fcf387b96ca6d6d27c61f31b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-memory/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-memory-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_memory\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-lock-free-0.5.0//:iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-posix-0.5.0//:iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-memory\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-memory-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_memory_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\": \"iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\": \"iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-memory-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/memory", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-posix-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "122ff88c452a3045a9de6db73d0429da736578f76eab75779dd0d3681de75d57", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-posix/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-posix-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_posix\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__enum-iterator-2.3.0//:enum_iterator\",\n \"@crate_index__iceoryx2-bb-container-0.5.0//:iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-system-types-0.5.0//:iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-configuration-0.5.0//:iceoryx2_pal_configuration\",\n \"@crate_index__iceoryx2-pal-posix-0.5.0//:iceoryx2_pal_posix\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-posix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-posix-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_posix_qnx8\",\n deps = [\n \"@crate_index__enum-iterator-2.3.0//:enum_iterator\",\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\": \"iceoryx2_bb_derive_macros\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\": \"iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\": \"iceoryx2_pal_posix\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-posix-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/posix", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-system-types-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ac2fb11a94823c3b9117a5e14edf16fd467794cf5391738eb2d8b7fc8e9b04fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-bb-system-types/0.5.0/download" + ], + "strip_prefix": "iceoryx2-bb-system-types-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_system_types\",\n deps = [\n \"@crate_index__iceoryx2-bb-container-0.5.0//:iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-configuration-0.5.0//:iceoryx2_pal_configuration\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-system-types\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-bb-system-types-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_system_types_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\": \"iceoryx2_bb_derive_macros\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\": \"iceoryx2_pal_posix\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-system-types-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/system-types", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-testing-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_testing_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n \"@crate_index__iceoryx2-pal-testing-qnx8-0.7.0//:iceoryx2_pal_testing_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n \"@crate_index__iceoryx2-pal-testing-qnx8-0.7.0//:iceoryx2_pal_testing_qnx8\": \"iceoryx2_pal_testing\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-testing-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/testing", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-bb-threadsafe-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_bb_threadsafe_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\": \"iceoryx2_bb_posix\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-bb-threadsafe-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-bb/threadsafe", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-cal-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6c64b8eee1d57c4336d7df7d521671d8b76c72cac16af0db651e40f8c45f0946", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-cal/0.5.0/download" + ], + "strip_prefix": "iceoryx2-cal-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_cal\",\n deps = [\n \"@crate_index__cdr-0.2.4//:cdr\",\n \"@crate_index__iceoryx2-bb-container-0.5.0//:iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-elementary-0.5.0//:iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-lock-free-0.5.0//:iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-0.5.0//:iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-memory-0.5.0//:iceoryx2_bb_memory\",\n \"@crate_index__iceoryx2-bb-posix-0.5.0//:iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-bb-system-types-0.5.0//:iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__ouroboros-0.18.5//:ouroboros\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__sha1_smol-1.0.1//:sha1_smol\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n \"@crate_index__toml-0.8.23//:toml\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-cal\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-cal-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_cal_qnx8\",\n deps = [\n \"@crate_index__cdr-0.2.4//:cdr\",\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-linux-qnx8-0.7.0//:iceoryx2_bb_linux_qnx8\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__postcard-1.1.3//:postcard\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__sha1_smol-1.0.1//:sha1_smol\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n \"@crate_index__toml-0.8.23//:toml\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\": \"iceoryx2_bb_derive_macros\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-linux-qnx8-0.7.0//:iceoryx2_bb_linux_qnx8\": \"iceoryx2_bb_linux\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\": \"iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\": \"iceoryx2_bb_memory\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\": \"iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\": \"iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-cal-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-cal", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-pal-concurrency-sync-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "92dc4ec7c023819c41b5a14c9ca58e8dbb86476053321decda73ac440996f35f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-pal-concurrency-sync/0.5.0/download" + ], + "strip_prefix": "iceoryx2-pal-concurrency-sync-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_concurrency_sync\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-concurrency-sync\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_concurrency_sync_qnx8\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-concurrency-sync-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-pal/concurrency-sync", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-pal-configuration-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d900aa8f9c5b661a9c5ddfbdc28eb87ac8c32be5375ca9b055b087d1c89c984d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-pal-configuration/0.5.0/download" + ], + "strip_prefix": "iceoryx2-pal-configuration-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_configuration\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-configuration\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__iceoryx2-pal-configuration-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_configuration_qnx8\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-configuration-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-pal/configuration", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-pal-os-api-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_os_api_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-pal-os-api-qnx8-0.7.0//:build_script_build\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:iceoryx2_pal_posix_qnx8\": \"iceoryx2_pal_posix\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-os-api-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__bindgen-0.72.1//:bindgen\",\n \"@crate_index__cc-1.2.56//:cc\",\n ],\n edition = \"2021\",\n pkg_name = \"iceoryx2-pal-os-api-qnx8\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-os-api-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.7.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n", + "strip_prefix": "iceoryx2-pal/os-api", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-pal-posix-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5789169791a6274b492561b95543e1c635285cb454d547f78e53cbc1acd9b3f5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/iceoryx2-pal-posix/0.5.0/download" + ], + "strip_prefix": "iceoryx2-pal-posix-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_posix\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-0.5.0//:iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-configuration-0.5.0//:iceoryx2_pal_configuration\",\n \"@crate_index__iceoryx2-pal-posix-0.5.0//:build_script_build\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-posix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__bindgen-0.69.5//:bindgen\",\n \"@crate_index__cc-1.2.56//:cc\",\n ],\n edition = \"2021\",\n pkg_name = \"iceoryx2-pal-posix\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-posix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.5.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__iceoryx2-pal-posix-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [ + "@@score_crates+//patches:qnx8_iceoryx2.patch" + ], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_posix_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n \"@crate_index__iceoryx2-pal-posix-qnx8-0.7.0//:build_script_build\",\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-posix-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__bindgen-0.72.1//:bindgen\",\n \"@crate_index__cc-1.2.56//:cc\",\n ],\n edition = \"2021\",\n pkg_name = \"iceoryx2-pal-posix-qnx8\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-posix-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.7.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n", + "strip_prefix": "iceoryx2-pal/posix", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-pal-testing-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_pal_testing_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-pal-testing-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2-pal/testing", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__iceoryx2-qnx8-0.7.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/qorix-group/iceoryx2.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iceoryx2_qnx8\",\n deps = [\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\",\n \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\",\n \"@crate_index__iceoryx2-cal-qnx8-0.7.0//:iceoryx2_cal_qnx8\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__tiny-fn-0.1.9//:tiny_fn\",\n \"@crate_index__toml-0.8.23//:toml\",\n ],\n proc_macro_deps = [\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\",\n ],\n aliases = {\n \"@crate_index__iceoryx2-bb-container-qnx8-0.7.0//:iceoryx2_bb_container_qnx8\": \"iceoryx2_bb_container\",\n \"@crate_index__iceoryx2-bb-derive-macros-qnx8-0.7.0//:iceoryx2_bb_derive_macros_qnx8\": \"iceoryx2_bb_derive_macros\",\n \"@crate_index__iceoryx2-bb-elementary-qnx8-0.7.0//:iceoryx2_bb_elementary_qnx8\": \"iceoryx2_bb_elementary\",\n \"@crate_index__iceoryx2-bb-elementary-traits-qnx8-0.7.0//:iceoryx2_bb_elementary_traits_qnx8\": \"iceoryx2_bb_elementary_traits\",\n \"@crate_index__iceoryx2-bb-lock-free-qnx8-0.7.0//:iceoryx2_bb_lock_free_qnx8\": \"iceoryx2_bb_lock_free\",\n \"@crate_index__iceoryx2-bb-log-qnx8-0.7.0//:iceoryx2_bb_log_qnx8\": \"iceoryx2_bb_log\",\n \"@crate_index__iceoryx2-bb-memory-qnx8-0.7.0//:iceoryx2_bb_memory_qnx8\": \"iceoryx2_bb_memory\",\n \"@crate_index__iceoryx2-bb-posix-qnx8-0.7.0//:iceoryx2_bb_posix_qnx8\": \"iceoryx2_bb_posix\",\n \"@crate_index__iceoryx2-bb-system-types-qnx8-0.7.0//:iceoryx2_bb_system_types_qnx8\": \"iceoryx2_bb_system_types\",\n \"@crate_index__iceoryx2-cal-qnx8-0.7.0//:iceoryx2_cal_qnx8\": \"iceoryx2_cal\",\n \"@crate_index__iceoryx2-pal-concurrency-sync-qnx8-0.7.0//:iceoryx2_pal_concurrency_sync_qnx8\": \"iceoryx2_pal_concurrency_sync\",\n \"@crate_index__iceoryx2-pal-configuration-qnx8-0.7.0//:iceoryx2_pal_configuration_qnx8\": \"iceoryx2_pal_configuration\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iceoryx2-qnx8\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.0\",\n)\n", + "strip_prefix": "iceoryx2", + "commit": "bd16da32190d53d69c3e5504aab47df52ca8b5f8" + } + }, + "crate_index__id-arena-2.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/id-arena/2.3.0/download" + ], + "strip_prefix": "id-arena-2.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"id_arena\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=id-arena\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.3.0\",\n)\n" + } + }, + "crate_index__indexmap-2.13.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indexmap/2.13.0/download" + ], + "strip_prefix": "indexmap-2.13.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indexmap\",\n deps = [\n \"@crate_index__equivalent-1.0.2//:equivalent\",\n \"@crate_index__hashbrown-0.16.1//:hashbrown\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__serde_core-1.0.228//:serde_core\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"serde\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.13.0\",\n)\n" + } + }, + "crate_index__indicatif-0.18.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indicatif/0.18.4/download" + ], + "strip_prefix": "indicatif-0.18.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indicatif\",\n deps = [\n \"@crate_index__console-0.16.2//:console\",\n \"@crate_index__portable-atomic-1.13.1//:portable_atomic\",\n \"@crate_index__unicode-width-0.2.2//:unicode_width\",\n \"@crate_index__unit-prefix-0.5.2//:unit_prefix\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"unicode-width\",\n \"wasmbind\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indicatif\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.18.4\",\n)\n" + } + }, + "crate_index__indicatif-log-bridge-0.2.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "63703cf9069b85dbe6fe26e1c5230d013dee99d3559cd3d02ba39e099ef7ab02", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indicatif-log-bridge/0.2.3/download" + ], + "strip_prefix": "indicatif-log-bridge-0.2.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indicatif_log_bridge\",\n deps = [\n \"@crate_index__indicatif-0.18.4//:indicatif\",\n \"@crate_index__log-0.4.29//:log\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indicatif-log-bridge\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.3\",\n)\n" + } + }, + "crate_index__ipc-channel-0.20.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f93600b5616c2d075f8af8dbd23c1d69278c5d24e4913d220cbc60b14c95c180", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ipc-channel/0.20.2/download" + ], + "strip_prefix": "ipc-channel-0.20.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ipc_channel\",\n deps = [\n \"@crate_index__bincode-1.3.3//:bincode\",\n \"@crate_index__crossbeam-channel-0.5.15//:crossbeam_channel\",\n \"@crate_index__fnv-1.0.7//:fnv\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__uuid-1.21.0//:uuid\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__mio-1.1.1//:mio\", # cfg(any(target_os = \"linux\", target_os = \"openbsd\", target_os = \"freebsd\", target_os = \"illumos\"))\n \"@crate_index__tempfile-3.26.0//:tempfile\", # cfg(any(target_os = \"linux\", target_os = \"openbsd\", target_os = \"freebsd\", target_os = \"illumos\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ipc-channel\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.20.2\",\n)\n" + } + }, + "crate_index__is_terminal_polyfill-1.70.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download" + ], + "strip_prefix": "is_terminal_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"is_terminal_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=is_terminal_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" + } + }, + "crate_index__itertools-0.12.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itertools/0.12.1/download" + ], + "strip_prefix": "itertools-0.12.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crate_index__either-1.15.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.1\",\n)\n" + } + }, + "crate_index__itertools-0.13.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itertools/0.13.0/download" + ], + "strip_prefix": "itertools-0.13.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crate_index__either-1.15.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.0\",\n)\n" + } + }, + "crate_index__itertools-0.14.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itertools/0.14.0/download" + ], + "strip_prefix": "itertools-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crate_index__either-1.15.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"use_alloc\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n \"use_std\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" + } + }, + "crate_index__itoa-1.0.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itoa/1.0.17/download" + ], + "strip_prefix": "itoa-1.0.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itoa\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itoa\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.17\",\n)\n" + } + }, + "crate_index__jiff-0.2.22": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/jiff/0.2.22/download" + ], + "strip_prefix": "jiff-0.2.22", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"jiff\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=jiff\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.22\",\n)\n" + } + }, + "crate_index__jiff-static-0.2.22": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/jiff-static/0.2.22/download" + ], + "strip_prefix": "jiff-static-0.2.22", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"jiff_static\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=jiff-static\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.22\",\n)\n" + } + }, + "crate_index__js-sys-0.3.91": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/js-sys/0.3.91/download" + ], + "strip_prefix": "js-sys-0.3.91", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"js_sys\",\n deps = [\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__wasm-bindgen-0.2.114//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=js-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.91\",\n)\n" + } + }, + "crate_index__lazy_static-1.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/lazy_static/1.5.0/download" + ], + "strip_prefix": "lazy_static-1.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lazy_static\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lazy_static\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.0\",\n)\n" + } + }, + "crate_index__lazycell-1.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/lazycell/1.3.0/download" + ], + "strip_prefix": "lazycell-1.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lazycell\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lazycell\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.0\",\n)\n" + } + }, + "crate_index__leb128fmt-0.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/leb128fmt/0.1.0/download" + ], + "strip_prefix": "leb128fmt-0.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"leb128fmt\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=leb128fmt\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n" + } + }, + "crate_index__libc-0.2.182": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libc/0.2.182/download" + ], + "strip_prefix": "libc-0.2.182", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libc\",\n deps = [\n \"@crate_index__libc-0.2.182//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"extra_traits\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.182\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"extra_traits\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"libc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.182\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__libloading-0.8.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libloading/0.8.9/download" + ], + "strip_prefix": "libloading-0.8.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libloading\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libloading\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.9\",\n)\n" + } + }, + "crate_index__linux-raw-sys-0.4.15": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/linux-raw-sys/0.4.15/download" + ], + "strip_prefix": "linux-raw-sys-0.4.15", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"linux_raw_sys\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"elf\",\n \"errno\",\n \"general\",\n \"ioctl\",\n \"no_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=linux-raw-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.15\",\n)\n" + } + }, + "crate_index__linux-raw-sys-0.12.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/linux-raw-sys/0.12.1/download" + ], + "strip_prefix": "linux-raw-sys-0.12.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"linux_raw_sys\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"auxvec\",\n \"elf\",\n \"errno\",\n \"general\",\n \"ioctl\",\n \"no_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=linux-raw-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.1\",\n)\n" + } + }, + "crate_index__lock_api-0.4.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/lock_api/0.4.14/download" + ], + "strip_prefix": "lock_api-0.4.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lock_api\",\n deps = [\n \"@crate_index__scopeguard-1.2.0//:scopeguard\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"atomic_usize\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lock_api\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" + } + }, + "crate_index__log-0.4.29": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/log/0.4.29/download" + ], + "strip_prefix": "log-0.4.29", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"log\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.29\",\n)\n" + } + }, + "crate_index__matchit-0.8.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/matchit/0.8.4/download" + ], + "strip_prefix": "matchit-0.8.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"matchit\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=matchit\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.4\",\n)\n" + } + }, + "crate_index__memchr-2.8.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memchr/2.8.0/download" + ], + "strip_prefix": "memchr-2.8.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.0\",\n)\n" + } + }, + "crate_index__mime-0.3.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/mime/0.3.17/download" + ], + "strip_prefix": "mime-0.3.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mime\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.17\",\n)\n" + } + }, + "crate_index__minimal-lexical-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/minimal-lexical/0.2.1/download" + ], + "strip_prefix": "minimal-lexical-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"minimal_lexical\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=minimal-lexical\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crate_index__mio-1.1.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/mio/1.1.1/download" + ], + "strip_prefix": "mio-1.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mio\",\n deps = [\n \"@crate_index__log-0.4.29//:log\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"log\",\n \"net\",\n \"os-ext\",\n \"os-poll\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.1\",\n)\n" + } + }, + "crate_index__multimap-0.10.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/multimap/0.10.1/download" + ], + "strip_prefix": "multimap-0.10.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"multimap\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=multimap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.10.1\",\n)\n" + } + }, + "crate_index__nix-0.30.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/nix/0.30.1/download" + ], + "strip_prefix": "nix-0.30.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nix\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__nix-0.30.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"fs\",\n \"mman\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.30.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"fs\",\n \"mman\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__cfg_aliases-0.2.1//:cfg_aliases\",\n ],\n edition = \"2021\",\n pkg_name = \"nix\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.30.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__nix-0.31.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/nix/0.31.2/download" + ], + "strip_prefix": "nix-0.31.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nix\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__nix-0.31.2//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"process\",\n \"signal\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.31.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"process\",\n \"signal\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__cfg_aliases-0.2.1//:cfg_aliases\",\n ],\n edition = \"2021\",\n pkg_name = \"nix\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.31.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__nom-7.1.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/nom/7.1.3/download" + ], + "strip_prefix": "nom-7.1.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nom\",\n deps = [\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__minimal-lexical-0.2.1//:minimal_lexical\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"7.1.3\",\n)\n" + } + }, + "crate_index__nu-ansi-term-0.50.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/nu-ansi-term/0.50.3/download" + ], + "strip_prefix": "nu-ansi-term-0.50.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nu_ansi_term\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nu-ansi-term\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.50.3\",\n)\n" + } + }, + "crate_index__num-conv-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/num-conv/0.2.0/download" + ], + "strip_prefix": "num-conv-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"num_conv\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=num-conv\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__objc2-0.6.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/objc2/0.6.4/download" + ], + "strip_prefix": "objc2-0.6.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"objc2\",\n deps = [\n \"@crate_index__objc2-0.6.4//:build_script_build\",\n \"@crate_index__objc2-encode-4.1.0//:objc2_encode\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=objc2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.4\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"objc2\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=objc2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.6.4\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__objc2-encode-4.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/objc2-encode/4.1.0/download" + ], + "strip_prefix": "objc2-encode-4.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"objc2_encode\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=objc2-encode\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.1.0\",\n)\n" + } + }, + "crate_index__once_cell-1.21.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell/1.21.3/download" + ], + "strip_prefix": "once_cell-1.21.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"race\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.21.3\",\n)\n" + } + }, + "crate_index__once_cell_polyfill-1.70.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell_polyfill/1.70.2/download" + ], + "strip_prefix": "once_cell_polyfill-1.70.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"once_cell_polyfill\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=once_cell_polyfill\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.70.2\",\n)\n" + } + }, + "crate_index__ouroboros-0.18.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ouroboros/0.18.5/download" + ], + "strip_prefix": "ouroboros-0.18.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ouroboros\",\n deps = [\n \"@crate_index__aliasable-0.1.3//:aliasable\",\n \"@crate_index__static_assertions-1.1.0//:static_assertions\",\n ],\n proc_macro_deps = [\n \"@crate_index__ouroboros_macro-0.18.5//:ouroboros_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ouroboros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.18.5\",\n)\n" + } + }, + "crate_index__ouroboros_macro-0.18.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ouroboros_macro/0.18.5/download" + ], + "strip_prefix": "ouroboros_macro-0.18.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"ouroboros_macro\",\n deps = [\n \"@crate_index__heck-0.4.1//:heck\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ouroboros_macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.18.5\",\n)\n" + } + }, + "crate_index__paste-1.0.15": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/paste/1.0.15/download" + ], + "strip_prefix": "paste-1.0.15", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"paste\",\n deps = [\n \"@crate_index__paste-1.0.15//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=paste\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.15\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"paste\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=paste\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.15\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__percent-encoding-2.3.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/percent-encoding/2.3.2/download" + ], + "strip_prefix": "percent-encoding-2.3.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"percent_encoding\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=percent-encoding\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.3.2\",\n)\n" + } + }, + "crate_index__petgraph-0.7.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/petgraph/0.7.1/download" + ], + "strip_prefix": "petgraph-0.7.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"petgraph\",\n deps = [\n \"@crate_index__fixedbitset-0.5.7//:fixedbitset\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=petgraph\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.1\",\n)\n" + } + }, + "crate_index__petgraph-0.8.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/petgraph/0.8.3/download" + ], + "strip_prefix": "petgraph-0.8.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"petgraph\",\n deps = [\n \"@crate_index__fixedbitset-0.5.7//:fixedbitset\",\n \"@crate_index__hashbrown-0.15.5//:hashbrown\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=petgraph\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.3\",\n)\n" + } + }, + "crate_index__pico-args-0.5.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pico-args/0.5.0/download" + ], + "strip_prefix": "pico-args-0.5.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pico_args\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pico-args\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + } + }, + "crate_index__pin-project-1.1.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pin-project/1.1.11/download" + ], + "strip_prefix": "pin-project-1.1.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pin_project\",\n proc_macro_deps = [\n \"@crate_index__pin-project-internal-1.1.11//:pin_project_internal\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pin-project\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.11\",\n)\n" + } + }, + "crate_index__pin-project-internal-1.1.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pin-project-internal/1.1.11/download" + ], + "strip_prefix": "pin-project-internal-1.1.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"pin_project_internal\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pin-project-internal\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.11\",\n)\n" + } + }, + "crate_index__pin-project-lite-0.2.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pin-project-lite/0.2.17/download" + ], + "strip_prefix": "pin-project-lite-0.2.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pin_project_lite\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pin-project-lite\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.17\",\n)\n" + } + }, + "crate_index__pin-utils-0.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pin-utils/0.1.0/download" + ], + "strip_prefix": "pin-utils-0.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pin_utils\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pin-utils\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n" + } + }, + "crate_index__portable-atomic-1.13.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/portable-atomic/1.13.1/download" + ], + "strip_prefix": "portable-atomic-1.13.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"portable_atomic\",\n deps = [\n \"@crate_index__portable-atomic-1.13.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"fallback\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=portable-atomic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.13.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"fallback\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"portable-atomic\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=portable-atomic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.13.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__portable-atomic-util-0.2.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/portable-atomic-util/0.2.5/download" + ], + "strip_prefix": "portable-atomic-util-0.2.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"portable_atomic_util\",\n deps = [\n \"@crate_index__portable-atomic-1.13.1//:portable_atomic\",\n \"@crate_index__portable-atomic-util-0.2.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=portable-atomic-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"portable-atomic-util\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=portable-atomic-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__postcard-1.1.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/postcard/1.1.3/download" + ], + "strip_prefix": "postcard-1.1.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"postcard\",\n deps = [\n \"@crate_index__cobs-0.3.0//:cobs\",\n \"@crate_index__heapless-0.7.17//:heapless\",\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n proc_macro_deps = [\n \"@crate_index__postcard-derive-0.2.2//:postcard_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"experimental-derive\",\n \"heapless\",\n \"heapless-cas\",\n \"postcard-derive\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=postcard\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.3\",\n)\n" + } + }, + "crate_index__postcard-derive-0.2.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e0232bd009a197ceec9cc881ba46f727fcd8060a2d8d6a9dde7a69030a6fe2bb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/postcard-derive/0.2.2/download" + ], + "strip_prefix": "postcard-derive-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"postcard_derive\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=postcard-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" + } + }, + "crate_index__powerfmt-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/powerfmt/0.2.0/download" + ], + "strip_prefix": "powerfmt-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"powerfmt\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=powerfmt\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__ppv-lite86-0.2.21": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ppv-lite86/0.2.21/download" + ], + "strip_prefix": "ppv-lite86-0.2.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ppv_lite86\",\n deps = [\n \"@crate_index__zerocopy-0.8.40//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ppv-lite86\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.21\",\n)\n" + } + }, + "crate_index__prettyplease-0.2.37": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prettyplease/0.2.37/download" + ], + "strip_prefix": "prettyplease-0.2.37", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prettyplease\",\n deps = [\n \"@crate_index__prettyplease-0.2.37//:build_script_build\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"verbatim\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prettyplease\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.37\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"verbatim\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n links = \"prettyplease02\",\n pkg_name = \"prettyplease\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prettyplease\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.37\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__proc-macro2-1.0.106": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2/1.0.106/download" + ], + "strip_prefix": "proc-macro2-1.0.106", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"proc_macro2\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:build_script_build\",\n \"@crate_index__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.106\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"proc-macro2\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.106\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__proc-macro2-diagnostics-0.10.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2-diagnostics/0.10.1/download" + ], + "strip_prefix": "proc-macro2-diagnostics-0.10.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"proc_macro2_diagnostics\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__proc-macro2-diagnostics-0.10.1//:build_script_build\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__yansi-1.0.1//:yansi\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"colors\",\n \"default\",\n \"yansi\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2-diagnostics\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.10.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"colors\",\n \"default\",\n \"yansi\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crate_index__version_check-0.9.5//:version_check\",\n ],\n edition = \"2018\",\n pkg_name = \"proc-macro2-diagnostics\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=proc-macro2-diagnostics\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.10.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__prost-0.13.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost/0.13.5/download" + ], + "strip_prefix": "prost-0.13.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n ],\n proc_macro_deps = [\n \"@crate_index__prost-derive-0.13.5//:prost_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"derive\",\n \"prost-derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.5\",\n)\n" + } + }, + "crate_index__prost-0.14.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost/0.14.3/download" + ], + "strip_prefix": "prost-0.14.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n ],\n proc_macro_deps = [\n \"@crate_index__prost-derive-0.14.3//:prost_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.3\",\n)\n" + } + }, + "crate_index__prost-build-0.13.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-build/0.13.5/download" + ], + "strip_prefix": "prost-build-0.13.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost_build\",\n deps = [\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__itertools-0.14.0//:itertools\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__multimap-0.10.1//:multimap\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__petgraph-0.7.1//:petgraph\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__prost-0.13.5//:prost\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__tempfile-3.26.0//:tempfile\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"format\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-build\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.5\",\n)\n" + } + }, + "crate_index__prost-build-0.14.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-build/0.14.3/download" + ], + "strip_prefix": "prost-build-0.14.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost_build\",\n deps = [\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__itertools-0.14.0//:itertools\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__multimap-0.10.1//:multimap\",\n \"@crate_index__petgraph-0.8.3//:petgraph\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__prost-0.14.3//:prost\",\n \"@crate_index__prost-types-0.14.3//:prost_types\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__tempfile-3.26.0//:tempfile\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"format\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-build\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.3\",\n)\n" + } + }, + "crate_index__prost-derive-0.13.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-derive/0.13.5/download" + ], + "strip_prefix": "prost-derive-0.13.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"prost_derive\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__itertools-0.14.0//:itertools\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.5\",\n)\n" + } + }, + "crate_index__prost-derive-0.14.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-derive/0.14.3/download" + ], + "strip_prefix": "prost-derive-0.14.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"prost_derive\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__itertools-0.14.0//:itertools\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.3\",\n)\n" + } + }, + "crate_index__prost-types-0.13.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-types/0.13.5/download" + ], + "strip_prefix": "prost-types-0.13.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost_types\",\n deps = [\n \"@crate_index__prost-0.13.5//:prost\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-types\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.5\",\n)\n" + } + }, + "crate_index__prost-types-0.14.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prost-types/0.14.3/download" + ], + "strip_prefix": "prost-types-0.14.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"prost_types\",\n deps = [\n \"@crate_index__prost-0.14.3//:prost\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=prost-types\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.3\",\n)\n" + } + }, + "crate_index__protoc-gen-prost-0.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "77eb17a7657a703f30cb9b7ba4d981e4037b8af2d819ab0077514b0bef537406", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/protoc-gen-prost/0.4.0/download" + ], + "strip_prefix": "protoc-gen-prost-0.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\n \"@rules_rust//rust:defs.bzl\",\n \"rust_binary\",\n \"rust_library\",\n)\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"protoc_gen_prost\",\n deps = [\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__prost-0.13.5//:prost\",\n \"@crate_index__prost-build-0.13.5//:prost_build\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__regex-1.12.3//:regex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=protoc-gen-prost\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0\",\n)\n\nrust_binary(\n name = \"protoc-gen-prost__bin\",\n deps = [\n \":protoc_gen_prost\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__prost-0.13.5//:prost\",\n \"@crate_index__prost-build-0.13.5//:prost_build\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__regex-1.12.3//:regex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/main.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=protoc-gen-prost\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0\",\n)\n" + } + }, + "crate_index__protoc-gen-tonic-0.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6ab6a0d73a0914752ed8fd7cc51afe169e28da87be3efef292de5676cc527634", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/protoc-gen-tonic/0.4.1/download" + ], + "strip_prefix": "protoc-gen-tonic-0.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\n \"@rules_rust//rust:defs.bzl\",\n \"rust_binary\",\n \"rust_library\",\n)\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"protoc_gen_tonic\",\n deps = [\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__prost-0.13.5//:prost\",\n \"@crate_index__prost-build-0.13.5//:prost_build\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__protoc-gen-prost-0.4.0//:protoc_gen_prost\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__tonic-build-0.12.3//:tonic_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=protoc-gen-tonic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n\nrust_binary(\n name = \"protoc-gen-tonic__bin\",\n deps = [\n \":protoc_gen_tonic\",\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__prost-0.13.5//:prost\",\n \"@crate_index__prost-build-0.13.5//:prost_build\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__protoc-gen-prost-0.4.0//:protoc_gen_prost\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__regex-1.12.3//:regex\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__tonic-build-0.12.3//:tonic_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/main.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=protoc-gen-tonic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n" + } + }, + "crate_index__quote-1.0.44": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/quote/1.0.44/download" + ], + "strip_prefix": "quote-1.0.44", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quote\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.44\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"proc-macro\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"quote\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quote\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.44\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__r-efi-5.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/r-efi/5.3.0/download" + ], + "strip_prefix": "r-efi-5.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"r_efi\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=r-efi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.3.0\",\n)\n" + } + }, + "crate_index__r-efi-6.0.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/r-efi/6.0.0/download" + ], + "strip_prefix": "r-efi-6.0.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"r_efi\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=r-efi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"6.0.0\",\n)\n" + } + }, + "crate_index__rand-0.9.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rand/0.9.2/download" + ], + "strip_prefix": "rand-0.9.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rand\",\n deps = [\n \"@crate_index__rand_chacha-0.9.0//:rand_chacha\",\n \"@crate_index__rand_core-0.9.5//:rand_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"os_rng\",\n \"small_rng\",\n \"std\",\n \"std_rng\",\n \"thread_rng\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rand\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.2\",\n)\n" + } + }, + "crate_index__rand_chacha-0.9.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rand_chacha/0.9.0/download" + ], + "strip_prefix": "rand_chacha-0.9.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rand_chacha\",\n deps = [\n \"@crate_index__ppv-lite86-0.2.21//:ppv_lite86\",\n \"@crate_index__rand_core-0.9.5//:rand_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rand_chacha\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.0\",\n)\n" + } + }, + "crate_index__rand_core-0.9.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rand_core/0.9.5/download" + ], + "strip_prefix": "rand_core-0.9.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rand_core\",\n deps = [\n \"@crate_index__getrandom-0.3.4//:getrandom\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"os_rng\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rand_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.5\",\n)\n" + } + }, + "crate_index__regex-1.12.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex/1.12.3/download" + ], + "strip_prefix": "regex-1.12.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex\",\n deps = [\n \"@crate_index__aho-corasick-1.1.4//:aho_corasick\",\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__regex-automata-0.4.14//:regex_automata\",\n \"@crate_index__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"perf\",\n \"perf-backtrack\",\n \"perf-cache\",\n \"perf-dfa\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-onepass\",\n \"std\",\n \"unicode-bool\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"unicode-perl\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.12.3\",\n)\n" + } + }, + "crate_index__regex-automata-0.4.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-automata/0.4.14/download" + ], + "strip_prefix": "regex-automata-0.4.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_automata\",\n deps = [\n \"@crate_index__aho-corasick-1.1.4//:aho_corasick\",\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"dfa-onepass\",\n \"hybrid\",\n \"meta\",\n \"nfa-backtrack\",\n \"nfa-pikevm\",\n \"nfa-thompson\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-literal-multisubstring\",\n \"perf-literal-substring\",\n \"std\",\n \"syntax\",\n \"unicode-bool\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"unicode-perl\", # x86_64-unknown-linux-gnu\n \"unicode-word-boundary\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-automata\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" + } + }, + "crate_index__regex-syntax-0.8.10": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-syntax/0.8.10/download" + ], + "strip_prefix": "regex-syntax-0.8.10", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_syntax\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n \"unicode-bool\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"unicode-perl\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-syntax\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.10\",\n)\n" + } + }, + "crate_index__rustc-hash-1.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustc-hash/1.1.0/download" + ], + "strip_prefix": "rustc-hash-1.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustc_hash\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustc-hash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" + } + }, + "crate_index__rustc-hash-2.1.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustc-hash/2.1.1/download" + ], + "strip_prefix": "rustc-hash-2.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustc_hash\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustc-hash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.1.1\",\n)\n" + } + }, + "crate_index__rustc_version-0.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustc_version/0.4.1/download" + ], + "strip_prefix": "rustc_version-0.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustc_version\",\n deps = [\n \"@crate_index__semver-1.0.27//:semver\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustc_version\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n" + } + }, + "crate_index__rustix-0.38.44": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustix/0.38.44/download" + ], + "strip_prefix": "rustix-0.38.44", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustix\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__rustix-0.38.44//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__errno-0.3.14//:errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__errno-0.3.14//:errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__linux-raw-sys-0.4.15//:linux_raw_sys\", # cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [\n \"@crate_index__errno-0.3.14//:errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n ],\n \"//conditions:default\": [],\n }),\n aliases = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n },\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n },\n \"@rules_rust//rust/platform:x86_64-unknown-none\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", target_arch = \"s390x\"), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n },\n \"//conditions:default\": {},\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"fs\",\n \"libc-extra-traits\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.38.44\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"fs\",\n \"libc-extra-traits\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"rustix\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.38.44\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__rustix-1.1.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustix/1.1.4/download" + ], + "strip_prefix": "rustix-1.1.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rustix\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__rustix-1.1.4//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__errno-0.3.14//:errno\", # aarch64-unknown-nto-qnx710, cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n \"@crate_index__libc-0.2.182//:libc\", # aarch64-unknown-nto-qnx710, cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__errno-0.3.14//:errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))))), x86_64-pc-nto-qnx710\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))))), x86_64-pc-nto-qnx710\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__linux-raw-sys-0.12.1//:linux_raw_sys\", # cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [\n \"@crate_index__errno-0.3.14//:errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n \"@crate_index__libc-0.2.182//:libc\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n ],\n \"//conditions:default\": [],\n }),\n aliases = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # aarch64-unknown-nto-qnx710, cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n },\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))))), x86_64-pc-nto-qnx710\n },\n \"@rules_rust//rust/platform:x86_64-unknown-none\": {\n \"@crate_index__errno-0.3.14//:errno\": \"libc_errno\", # cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_endian = \"little\", any(target_arch = \"s390x\", target_arch = \"powerpc\")), any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc\"), all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"s390x\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))\n },\n \"//conditions:default\": {},\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"fs\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.4\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"fs\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"rustix\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.1.4\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__rustversion-1.0.22": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustversion/1.0.22/download" + ], + "strip_prefix": "rustversion-1.0.22", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"rustversion\",\n deps = [\n \"@crate_index__rustversion-1.0.22//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustversion\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.22\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build/build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"rustversion\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rustversion\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.22\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__scopeguard-1.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/scopeguard/1.2.0/download" + ], + "strip_prefix": "scopeguard-1.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"scopeguard\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=scopeguard\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.0\",\n)\n" + } + }, + "crate_index__semver-1.0.27": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/semver/1.0.27/download" + ], + "strip_prefix": "semver-1.0.27", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"semver\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=semver\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.27\",\n)\n" + } + }, + "crate_index__serde-1.0.228": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde/1.0.228/download" + ], + "strip_prefix": "serde-1.0.228", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde\",\n deps = [\n \"@crate_index__serde-1.0.228//:build_script_build\",\n \"@crate_index__serde_core-1.0.228//:serde_core\",\n ],\n proc_macro_deps = [\n \"@crate_index__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"derive\",\n \"rc\",\n \"serde_derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"derive\",\n \"rc\",\n \"serde_derive\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__serde_core-1.0.228": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_core/1.0.228/download" + ], + "strip_prefix": "serde_core-1.0.228", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_core\",\n deps = [\n \"@crate_index__serde_core-1.0.228//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"rc\",\n \"result\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"rc\",\n \"result\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_core\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.228\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__serde_derive-1.0.228": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_derive/1.0.228/download" + ], + "strip_prefix": "serde_derive-1.0.228", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"serde_derive\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.228\",\n)\n" + } + }, + "crate_index__serde_json-1.0.149": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_json/1.0.149/download" + ], + "strip_prefix": "serde_json-1.0.149", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crate_index__itoa-1.0.17//:itoa\",\n \"@crate_index__memchr-2.8.0//:memchr\",\n \"@crate_index__serde_core-1.0.228//:serde_core\",\n \"@crate_index__serde_json-1.0.149//:build_script_build\",\n \"@crate_index__zmij-1.0.21//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.149\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.149\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__serde_spanned-0.6.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_spanned/0.6.9/download" + ], + "strip_prefix": "serde_spanned-0.6.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_spanned\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_spanned\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.9\",\n)\n" + } + }, + "crate_index__sha1_smol-1.0.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sha1_smol/1.0.1/download" + ], + "strip_prefix": "sha1_smol-1.0.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"sha1_smol\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=sha1_smol\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n" + } + }, + "crate_index__sharded-slab-0.1.7": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sharded-slab/0.1.7/download" + ], + "strip_prefix": "sharded-slab-0.1.7", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"sharded_slab\",\n deps = [\n \"@crate_index__lazy_static-1.5.0//:lazy_static\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=sharded-slab\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.7\",\n)\n" + } + }, + "crate_index__shlex-1.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/shlex/1.3.0/download" + ], + "strip_prefix": "shlex-1.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"shlex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=shlex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.0\",\n)\n" + } + }, + "crate_index__signal-hook-0.3.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/signal-hook/0.3.18/download" + ], + "strip_prefix": "signal-hook-0.3.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"signal_hook\",\n deps = [\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__signal-hook-0.3.18//:build_script_build\",\n \"@crate_index__signal-hook-registry-1.4.8//:signal_hook_registry\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"channel\",\n \"default\",\n \"iterator\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=signal-hook\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.18\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"channel\",\n \"default\",\n \"iterator\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"signal-hook\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=signal-hook\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.3.18\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__signal-hook-registry-1.4.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/signal-hook-registry/1.4.8/download" + ], + "strip_prefix": "signal-hook-registry-1.4.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"signal_hook_registry\",\n deps = [\n \"@crate_index__errno-0.3.14//:errno\",\n \"@crate_index__libc-0.2.182//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=signal-hook-registry\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.8\",\n)\n" + } + }, + "crate_index__slab-0.4.12": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/slab/0.4.12/download" + ], + "strip_prefix": "slab-0.4.12", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"slab\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=slab\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.12\",\n)\n" + } + }, + "crate_index__smallvec-1.15.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smallvec/1.15.1/download" + ], + "strip_prefix": "smallvec-1.15.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"smallvec\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"const_generics\",\n \"const_new\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=smallvec\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.15.1\",\n)\n" + } + }, + "crate_index__smawk-0.3.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smawk/0.3.2/download" + ], + "strip_prefix": "smawk-0.3.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"smawk\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=smawk\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.2\",\n)\n" + } + }, + "crate_index__socket2-0.6.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/socket2/0.6.2/download" + ], + "strip_prefix": "socket2-0.6.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"socket2\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"all\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=socket2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.2\",\n)\n" + } + }, + "crate_index__spin-0.9.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/spin/0.9.8/download" + ], + "strip_prefix": "spin-0.9.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"spin\",\n deps = [\n \"@crate_index__lock_api-0.4.14//:lock_api\",\n ],\n aliases = {\n \"@crate_index__lock_api-0.4.14//:lock_api\": \"lock_api_crate\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"barrier\",\n \"default\",\n \"lazy\",\n \"lock_api\",\n \"lock_api_crate\",\n \"mutex\",\n \"once\",\n \"rwlock\",\n \"spin_mutex\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=spin\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.8\",\n)\n" + } + }, + "crate_index__stable_deref_trait-1.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/stable_deref_trait/1.2.1/download" + ], + "strip_prefix": "stable_deref_trait-1.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"stable_deref_trait\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=stable_deref_trait\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.1\",\n)\n" + } + }, + "crate_index__static_assertions-1.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/static_assertions/1.1.0/download" + ], + "strip_prefix": "static_assertions-1.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"static_assertions\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=static_assertions\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" + } + }, + "crate_index__strsim-0.11.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strsim/0.11.1/download" + ], + "strip_prefix": "strsim-0.11.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"strsim\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=strsim\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.1\",\n)\n" + } + }, + "crate_index__syn-2.0.117": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/2.0.117/download" + ], + "strip_prefix": "syn-2.0.117", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syn\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__unicode-ident-1.0.24//:unicode_ident\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"clone-impls\",\n \"default\",\n \"derive\",\n \"full\",\n \"parsing\",\n \"printing\",\n \"proc-macro\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"extra-traits\", # x86_64-unknown-linux-gnu\n \"visit\", # x86_64-unknown-linux-gnu\n \"visit-mut\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.117\",\n)\n" + } + }, + "crate_index__sync_wrapper-1.0.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sync_wrapper/1.0.2/download" + ], + "strip_prefix": "sync_wrapper-1.0.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"sync_wrapper\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=sync_wrapper\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.2\",\n)\n" + } + }, + "crate_index__tempfile-3.26.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tempfile/3.26.0/download" + ], + "strip_prefix": "tempfile-3.26.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tempfile\",\n deps = [\n \"@crate_index__fastrand-2.3.0//:fastrand\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__getrandom-0.4.2//:getrandom\", # aarch64-unknown-nto-qnx710\n \"@crate_index__rustix-1.1.4//:rustix\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__getrandom-0.4.2//:getrandom\", # x86_64-pc-nto-qnx710\n \"@crate_index__rustix-1.1.4//:rustix\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__getrandom-0.4.2//:getrandom\", # x86_64-unknown-linux-gnu\n \"@crate_index__rustix-1.1.4//:rustix\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"getrandom\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tempfile\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.26.0\",\n)\n" + } + }, + "crate_index__termsize-0.1.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6f11ff5c25c172608d5b85e2fb43ee9a6d683a7f4ab7f96ae07b3d8b590368fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/termsize/0.1.9/download" + ], + "strip_prefix": "termsize-0.1.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"termsize\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=termsize\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.9\",\n)\n" + } + }, + "crate_index__textwrap-0.16.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/textwrap/0.16.2/download" + ], + "strip_prefix": "textwrap-0.16.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"textwrap\",\n deps = [\n \"@crate_index__smawk-0.3.2//:smawk\",\n \"@crate_index__unicode-linebreak-0.1.5//:unicode_linebreak\",\n \"@crate_index__unicode-width-0.2.2//:unicode_width\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"smawk\",\n \"unicode-linebreak\",\n \"unicode-width\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=textwrap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.16.2\",\n)\n" + } + }, + "crate_index__thiserror-2.0.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror/2.0.18/download" + ], + "strip_prefix": "thiserror-2.0.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"thiserror\",\n deps = [\n \"@crate_index__thiserror-2.0.18//:build_script_build\",\n ],\n proc_macro_deps = [\n \"@crate_index__thiserror-impl-2.0.18//:thiserror_impl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.18\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"thiserror\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"2.0.18\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__thiserror-impl-2.0.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror-impl/2.0.18/download" + ], + "strip_prefix": "thiserror-impl-2.0.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"thiserror_impl\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thiserror-impl\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.18\",\n)\n" + } + }, + "crate_index__thread_local-1.1.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thread_local/1.1.9/download" + ], + "strip_prefix": "thread_local-1.1.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"thread_local\",\n deps = [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=thread_local\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.9\",\n)\n" + } + }, + "crate_index__time-0.3.47": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/time/0.3.47/download" + ], + "strip_prefix": "time-0.3.47", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"time\",\n deps = [\n \"@crate_index__deranged-0.5.8//:deranged\",\n \"@crate_index__itoa-1.0.17//:itoa\",\n \"@crate_index__num-conv-0.2.0//:num_conv\",\n \"@crate_index__powerfmt-0.2.0//:powerfmt\",\n \"@crate_index__serde_core-1.0.228//:serde_core\",\n \"@crate_index__time-core-0.1.8//:time_core\",\n ],\n proc_macro_deps = [\n \"@crate_index__time-macros-0.2.27//:time_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"formatting\",\n \"macros\",\n \"serde\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=time\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.47\",\n)\n" + } + }, + "crate_index__time-core-0.1.8": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/time-core/0.1.8/download" + ], + "strip_prefix": "time-core-0.1.8", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"time_core\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=time-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.8\",\n)\n" + } + }, + "crate_index__time-macros-0.2.27": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/time-macros/0.2.27/download" + ], + "strip_prefix": "time-macros-0.2.27", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"time_macros\",\n deps = [\n \"@crate_index__num-conv-0.2.0//:num_conv\",\n \"@crate_index__time-core-0.1.8//:time_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"formatting\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=time-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.27\",\n)\n" + } + }, + "crate_index__tiny-fn-0.1.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9659b108631d1e1cf3e8e489f894bee40bc9d68fd6cc67ec4d4ce9b72d565228", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tiny-fn/0.1.9/download" + ], + "strip_prefix": "tiny-fn-0.1.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tiny_fn\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tiny-fn\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.9\",\n)\n" + } + }, + "crate_index__tinyjson-2.5.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9ab95735ea2c8fd51154d01e39cf13912a78071c2d89abc49a7ef102a7dd725a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tinyjson/2.5.1/download" + ], + "strip_prefix": "tinyjson-2.5.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tinyjson\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tinyjson\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.5.1\",\n)\n" + } + }, + "crate_index__tokio-1.50.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tokio/1.50.0/download" + ], + "strip_prefix": "tokio-1.50.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__mio-1.1.1//:mio\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__socket2-0.6.2//:socket2\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # aarch64-unknown-nto-qnx710\n \"@crate_index__signal-hook-registry-1.4.8//:signal_hook_registry\", # aarch64-unknown-nto-qnx710\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__libc-0.2.182//:libc\", # x86_64-pc-nto-qnx710\n \"@crate_index__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-pc-nto-qnx710\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__libc-0.2.182//:libc\", # x86_64-unknown-linux-gnu\n \"@crate_index__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-unknown-linux-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crate_index__tokio-macros-2.6.1//:tokio_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bytes\",\n \"default\",\n \"io-util\",\n \"libc\",\n \"macros\",\n \"mio\",\n \"net\",\n \"rt\",\n \"rt-multi-thread\",\n \"signal\",\n \"signal-hook-registry\",\n \"socket2\",\n \"sync\",\n \"time\",\n \"tokio-macros\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.50.0\",\n)\n" + } + }, + "crate_index__tokio-macros-2.6.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tokio-macros/2.6.1/download" + ], + "strip_prefix": "tokio-macros-2.6.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"tokio_macros\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.6.1\",\n)\n" + } + }, + "crate_index__tokio-seqpacket-0.8.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ab144b76e4ffb1d1a4e8b404073c922a243baebcc580cd75f415ae3ae9e42add", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tokio-seqpacket/0.8.1/download" + ], + "strip_prefix": "tokio-seqpacket-0.8.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio_seqpacket\",\n deps = [\n \"@crate_index__filedesc-0.6.3//:filedesc\",\n \"@crate_index__libc-0.2.182//:libc\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio-seqpacket\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.1\",\n)\n" + } + }, + "crate_index__tokio-stream-0.1.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tokio-stream/0.1.18/download" + ], + "strip_prefix": "tokio-stream-0.1.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio_stream\",\n deps = [\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"net\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio-stream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.18\",\n)\n" + } + }, + "crate_index__tokio-util-0.7.18": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tokio-util/0.7.18/download" + ], + "strip_prefix": "tokio-util-0.7.18", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio_util\",\n deps = [\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-sink-0.3.32//:futures_sink\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"codec\",\n \"default\",\n \"io\",\n \"net\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.18\",\n)\n" + } + }, + "crate_index__toml-0.8.23": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml/0.8.23/download" + ], + "strip_prefix": "toml-0.8.23", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__serde_spanned-0.6.9//:serde_spanned\",\n \"@crate_index__toml_datetime-0.6.11//:toml_datetime\",\n \"@crate_index__toml_edit-0.22.27//:toml_edit\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"display\",\n \"parse\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.23\",\n)\n" + } + }, + "crate_index__toml_datetime-0.6.11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_datetime/0.6.11/download" + ], + "strip_prefix": "toml_datetime-0.6.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_datetime\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_datetime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.11\",\n)\n" + } + }, + "crate_index__toml_edit-0.22.27": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_edit/0.22.27/download" + ], + "strip_prefix": "toml_edit-0.22.27", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_edit\",\n deps = [\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__serde_spanned-0.6.9//:serde_spanned\",\n \"@crate_index__toml_datetime-0.6.11//:toml_datetime\",\n \"@crate_index__toml_write-0.1.2//:toml_write\",\n \"@crate_index__winnow-0.7.14//:winnow\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"display\",\n \"parse\",\n \"serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_edit\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.22.27\",\n)\n" + } + }, + "crate_index__toml_write-0.1.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_write/0.1.2/download" + ], + "strip_prefix": "toml_write-0.1.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"toml_write\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=toml_write\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.2\",\n)\n" + } + }, + "crate_index__tonic-0.14.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tonic/0.14.5/download" + ], + "strip_prefix": "tonic-0.14.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tonic\",\n deps = [\n \"@crate_index__axum-0.8.8//:axum\",\n \"@crate_index__base64-0.22.1//:base64\",\n \"@crate_index__bytes-1.11.1//:bytes\",\n \"@crate_index__h2-0.4.13//:h2\",\n \"@crate_index__http-1.4.0//:http\",\n \"@crate_index__http-body-1.0.1//:http_body\",\n \"@crate_index__http-body-util-0.1.3//:http_body_util\",\n \"@crate_index__hyper-1.8.1//:hyper\",\n \"@crate_index__hyper-timeout-0.5.2//:hyper_timeout\",\n \"@crate_index__hyper-util-0.1.20//:hyper_util\",\n \"@crate_index__percent-encoding-2.3.2//:percent_encoding\",\n \"@crate_index__pin-project-1.1.11//:pin_project\",\n \"@crate_index__socket2-0.6.2//:socket2\",\n \"@crate_index__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__tokio-stream-0.1.18//:tokio_stream\",\n \"@crate_index__tower-0.5.3//:tower\",\n \"@crate_index__tower-layer-0.3.3//:tower_layer\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n \"@crate_index__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crate_index__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"channel\",\n \"codegen\",\n \"default\",\n \"router\",\n \"server\",\n \"transport\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tonic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.5\",\n)\n" + } + }, + "crate_index__tonic-build-0.12.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tonic-build/0.12.3/download" + ], + "strip_prefix": "tonic-build-0.12.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tonic_build\",\n deps = [\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__prost-build-0.13.5//:prost_build\",\n \"@crate_index__prost-types-0.13.5//:prost_types\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"prost\",\n \"prost-build\",\n \"transport\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tonic-build\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.3\",\n)\n" + } + }, + "crate_index__tower-0.5.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tower/0.5.3/download" + ], + "strip_prefix": "tower-0.5.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tower\",\n deps = [\n \"@crate_index__futures-core-0.3.32//:futures_core\",\n \"@crate_index__futures-util-0.3.32//:futures_util\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__slab-0.4.12//:slab\",\n \"@crate_index__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crate_index__tokio-1.50.0//:tokio\",\n \"@crate_index__tokio-util-0.7.18//:tokio_util\",\n \"@crate_index__tower-layer-0.3.3//:tower_layer\",\n \"@crate_index__tower-service-0.3.3//:tower_service\",\n \"@crate_index__tracing-0.1.44//:tracing\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"balance\",\n \"buffer\",\n \"discover\",\n \"futures-core\",\n \"futures-util\",\n \"indexmap\",\n \"limit\",\n \"load\",\n \"load-shed\",\n \"make\",\n \"pin-project-lite\",\n \"ready-cache\",\n \"slab\",\n \"sync_wrapper\",\n \"tokio\",\n \"tokio-util\",\n \"tracing\",\n \"util\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tower\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.3\",\n)\n" + } + }, + "crate_index__tower-layer-0.3.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tower-layer/0.3.3/download" + ], + "strip_prefix": "tower-layer-0.3.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tower_layer\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tower-layer\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.3\",\n)\n" + } + }, + "crate_index__tower-service-0.3.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tower-service/0.3.3/download" + ], + "strip_prefix": "tower-service-0.3.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tower_service\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tower-service\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.3\",\n)\n" + } + }, + "crate_index__tracing-0.1.44": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing/0.1.44/download" + ], + "strip_prefix": "tracing-0.1.44", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing\",\n deps = [\n \"@crate_index__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crate_index__tracing-core-0.1.36//:tracing_core\",\n ],\n proc_macro_deps = [\n \"@crate_index__tracing-attributes-0.1.31//:tracing_attributes\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"attributes\",\n \"default\",\n \"std\",\n \"tracing-attributes\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.44\",\n)\n" + } + }, + "crate_index__tracing-attributes-0.1.31": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-attributes/0.1.31/download" + ], + "strip_prefix": "tracing-attributes-0.1.31", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"tracing_attributes\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-attributes\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.31\",\n)\n" + } + }, + "crate_index__tracing-core-0.1.36": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-core/0.1.36/download" + ], + "strip_prefix": "tracing-core-0.1.36", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_core\",\n deps = [\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"once_cell\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.36\",\n)\n" + } + }, + "crate_index__tracing-log-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-log/0.2.0/download" + ], + "strip_prefix": "tracing-log-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_log\",\n deps = [\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__tracing-core-0.1.36//:tracing_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"log-tracer\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__tracing-serde-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-serde/0.2.0/download" + ], + "strip_prefix": "tracing-serde-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_serde\",\n deps = [\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__tracing-core-0.1.36//:tracing_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-serde\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__tracing-subscriber-0.3.22": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-subscriber/0.3.22/download" + ], + "strip_prefix": "tracing-subscriber-0.3.22", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_subscriber\",\n deps = [\n \"@crate_index__nu-ansi-term-0.50.3//:nu_ansi_term\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__serde_json-1.0.149//:serde_json\",\n \"@crate_index__sharded-slab-0.1.7//:sharded_slab\",\n \"@crate_index__smallvec-1.15.1//:smallvec\",\n \"@crate_index__thread_local-1.1.9//:thread_local\",\n \"@crate_index__tracing-core-0.1.36//:tracing_core\",\n \"@crate_index__tracing-log-0.2.0//:tracing_log\",\n \"@crate_index__tracing-serde-0.2.0//:tracing_serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"ansi\",\n \"fmt\",\n \"json\",\n \"nu-ansi-term\",\n \"registry\",\n \"serde\",\n \"serde_json\",\n \"sharded-slab\",\n \"smallvec\",\n \"std\",\n \"thread_local\",\n \"tracing-log\",\n \"tracing-serde\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-subscriber\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.22\",\n)\n" + } + }, + "crate_index__try-lock-0.2.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/try-lock/0.2.5/download" + ], + "strip_prefix": "try-lock-0.2.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"try_lock\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=try-lock\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n" + } + }, + "crate_index__unicode-ident-1.0.24": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-ident/1.0.24/download" + ], + "strip_prefix": "unicode-ident-1.0.24", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_ident\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-ident\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.24\",\n)\n" + } + }, + "crate_index__unicode-linebreak-0.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-linebreak/0.1.5/download" + ], + "strip_prefix": "unicode-linebreak-0.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_linebreak\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-linebreak\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.5\",\n)\n" + } + }, + "crate_index__unicode-width-0.2.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-width/0.2.2/download" + ], + "strip_prefix": "unicode-width-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_width\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"cjk\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-width\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" + } + }, + "crate_index__unicode-xid-0.2.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-xid/0.2.6/download" + ], + "strip_prefix": "unicode-xid-0.2.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unicode_xid\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unicode-xid\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.6\",\n)\n" + } + }, + "crate_index__unit-prefix-0.5.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unit-prefix/0.5.2/download" + ], + "strip_prefix": "unit-prefix-0.5.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"unit_prefix\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=unit-prefix\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" + } + }, + "crate_index__utf8parse-0.2.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/utf8parse/0.2.2/download" + ], + "strip_prefix": "utf8parse-0.2.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"utf8parse\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=utf8parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" + } + }, + "crate_index__uuid-1.21.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/uuid/1.21.0/download" + ], + "strip_prefix": "uuid-1.21.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"uuid\",\n deps = [\n \"@crate_index__getrandom-0.4.2//:getrandom\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"rng\",\n \"std\",\n \"v4\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=uuid\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.21.0\",\n)\n" + } + }, + "crate_index__valuable-0.1.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/valuable/0.1.1/download" + ], + "strip_prefix": "valuable-0.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"valuable\",\n deps = [\n \"@crate_index__valuable-0.1.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=valuable\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"valuable\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=valuable\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.1.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__version_check-0.9.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/version_check/0.9.5/download" + ], + "strip_prefix": "version_check-0.9.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"version_check\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=version_check\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.5\",\n)\n" + } + }, + "crate_index__want-0.3.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/want/0.3.1/download" + ], + "strip_prefix": "want-0.3.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"want\",\n deps = [\n \"@crate_index__try-lock-0.2.5//:try_lock\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=want\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.1\",\n)\n" + } + }, + "crate_index__wasi-0.11.1-wasi-snapshot-preview1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download" + ], + "strip_prefix": "wasi-0.11.1+wasi-snapshot-preview1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasi\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.1+wasi-snapshot-preview1\",\n)\n" + } + }, + "crate_index__wasip2-1.0.2-wasi-0.2.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasip2/1.0.2+wasi-0.2.9/download" + ], + "strip_prefix": "wasip2-1.0.2+wasi-0.2.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasip2\",\n deps = [\n \"@crate_index__wit-bindgen-0.51.0//:wit_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasip2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.2+wasi-0.2.9\",\n)\n" + } + }, + "crate_index__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download" + ], + "strip_prefix": "wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasip3\",\n deps = [\n \"@crate_index__wit-bindgen-0.51.0//:wit_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasip3\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0+wasi-0.3.0-rc-2026-01-06\",\n)\n" + } + }, + "crate_index__wasm-bindgen-0.2.114": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-bindgen/0.2.114/download" + ], + "strip_prefix": "wasm-bindgen-0.2.114", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen\",\n deps = [\n \"@crate_index__cfg-if-1.0.4//:cfg_if\",\n \"@crate_index__once_cell-1.21.3//:once_cell\",\n \"@crate_index__wasm-bindgen-0.2.114//:build_script_build\",\n \"@crate_index__wasm-bindgen-shared-0.2.114//:wasm_bindgen_shared\",\n ],\n proc_macro_deps = [\n \"@crate_index__wasm-bindgen-macro-0.2.114//:wasm_bindgen_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.114\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n aliases = {\n \"@crate_index__rustversion-1.0.22//:rustversion\": \"rustversion_compat\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crate_index__wasm-bindgen-shared-0.2.114//:wasm_bindgen_shared\",\n ],\n edition = \"2021\",\n pkg_name = \"wasm-bindgen\",\n proc_macro_deps = [\n \"@crate_index__rustversion-1.0.22//:rustversion\",\n ],\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.114\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__wasm-bindgen-macro-0.2.114": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-bindgen-macro/0.2.114/download" + ], + "strip_prefix": "wasm-bindgen-macro-0.2.114", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"wasm_bindgen_macro\",\n deps = [\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__wasm-bindgen-macro-support-0.2.114//:wasm_bindgen_macro_support\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.114\",\n)\n" + } + }, + "crate_index__wasm-bindgen-macro-support-0.2.114": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.114/download" + ], + "strip_prefix": "wasm-bindgen-macro-support-0.2.114", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_macro_support\",\n deps = [\n \"@crate_index__bumpalo-3.20.2//:bumpalo\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__wasm-bindgen-shared-0.2.114//:wasm_bindgen_shared\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro-support\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.114\",\n)\n" + } + }, + "crate_index__wasm-bindgen-shared-0.2.114": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-bindgen-shared/0.2.114/download" + ], + "strip_prefix": "wasm-bindgen-shared-0.2.114", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_shared\",\n deps = [\n \"@crate_index__unicode-ident-1.0.24//:unicode_ident\",\n \"@crate_index__wasm-bindgen-shared-0.2.114//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.114\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n links = \"wasm_bindgen\",\n pkg_name = \"wasm-bindgen-shared\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.114\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__wasm-encoder-0.244.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-encoder/0.244.0/download" + ], + "strip_prefix": "wasm-encoder-0.244.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_encoder\",\n deps = [\n \"@crate_index__leb128fmt-0.1.0//:leb128fmt\",\n \"@crate_index__wasmparser-0.244.0//:wasmparser\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"component-model\",\n \"std\",\n \"wasmparser\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-encoder\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + } + }, + "crate_index__wasm-metadata-0.244.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasm-metadata/0.244.0/download" + ], + "strip_prefix": "wasm-metadata-0.244.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_metadata\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__wasm-encoder-0.244.0//:wasm_encoder\",\n \"@crate_index__wasmparser-0.244.0//:wasmparser\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-metadata\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + } + }, + "crate_index__wasmparser-0.244.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wasmparser/0.244.0/download" + ], + "strip_prefix": "wasmparser-0.244.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasmparser\",\n deps = [\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__hashbrown-0.15.5//:hashbrown\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__semver-1.0.27//:semver\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"component-model\",\n \"features\",\n \"hash-collections\",\n \"simd\",\n \"std\",\n \"validate\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasmparser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + } + }, + "crate_index__web-time-1.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/web-time/1.1.0/download" + ], + "strip_prefix": "web-time-1.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"web_time\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=web-time\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" + } + }, + "crate_index__which-4.4.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/which/4.4.2/download" + ], + "strip_prefix": "which-4.4.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"which\",\n deps = [\n \"@crate_index__either-1.15.0//:either\",\n \"@crate_index__rustix-0.38.44//:rustix\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [\n \"@crate_index__home-0.5.12//:home\", # cfg(any(windows, unix, target_os = \"redox\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [\n \"@crate_index__home-0.5.12//:home\", # cfg(any(windows, unix, target_os = \"redox\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__home-0.5.12//:home\", # cfg(any(windows, unix, target_os = \"redox\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=which\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.4.2\",\n)\n" + } + }, + "crate_index__winapi-0.3.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi/0.3.9/download" + ], + "strip_prefix": "winapi-0.3.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winapi\",\n deps = [\n \"@crate_index__winapi-0.3.9//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.9\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2015\",\n pkg_name = \"winapi\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.3.9\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__winapi-i686-pc-windows-gnu-0.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winapi_i686_pc_windows_gnu\",\n deps = [\n \"@crate_index__winapi-i686-pc-windows-gnu-0.4.0//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi-i686-pc-windows-gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2015\",\n pkg_name = \"winapi-i686-pc-windows-gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi-i686-pc-windows-gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.4.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__winapi-x86_64-pc-windows-gnu-0.4.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winapi_x86_64_pc_windows_gnu\",\n deps = [\n \"@crate_index__winapi-x86_64-pc-windows-gnu-0.4.0//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi-x86_64-pc-windows-gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2015\",\n pkg_name = \"winapi-x86_64-pc-windows-gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winapi-x86_64-pc-windows-gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.4.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows-0.61.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows/0.61.3/download" + ], + "strip_prefix": "windows-0.61.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows\",\n deps = [\n \"@crate_index__windows-collections-0.2.0//:windows_collections\",\n \"@crate_index__windows-core-0.61.2//:windows_core\",\n \"@crate_index__windows-future-0.2.1//:windows_future\",\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n \"@crate_index__windows-numerics-0.2.0//:windows_numerics\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.3\",\n)\n" + } + }, + "crate_index__windows-collections-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-collections/0.2.0/download" + ], + "strip_prefix": "windows-collections-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_collections\",\n deps = [\n \"@crate_index__windows-core-0.61.2//:windows_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-collections\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__windows-core-0.61.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-core/0.61.2/download" + ], + "strip_prefix": "windows-core-0.61.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_core\",\n deps = [\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n \"@crate_index__windows-result-0.3.4//:windows_result\",\n \"@crate_index__windows-strings-0.4.2//:windows_strings\",\n ],\n proc_macro_deps = [\n \"@crate_index__windows-implement-0.60.2//:windows_implement\",\n \"@crate_index__windows-interface-0.59.3//:windows_interface\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.2\",\n)\n" + } + }, + "crate_index__windows-future-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-future/0.2.1/download" + ], + "strip_prefix": "windows-future-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_future\",\n deps = [\n \"@crate_index__windows-core-0.61.2//:windows_core\",\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n \"@crate_index__windows-threading-0.1.0//:windows_threading\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-future\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crate_index__windows-implement-0.60.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-implement/0.60.2/download" + ], + "strip_prefix": "windows-implement-0.60.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"windows_implement\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-implement\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.60.2\",\n)\n" + } + }, + "crate_index__windows-interface-0.59.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-interface/0.59.3/download" + ], + "strip_prefix": "windows-interface-0.59.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"windows_interface\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-interface\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.59.3\",\n)\n" + } + }, + "crate_index__windows-link-0.1.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-link/0.1.3/download" + ], + "strip_prefix": "windows-link-0.1.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_link\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-link\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.3\",\n)\n" + } + }, + "crate_index__windows-link-0.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-link/0.2.1/download" + ], + "strip_prefix": "windows-link-0.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_link\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-link\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + } + }, + "crate_index__windows-numerics-0.2.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-numerics/0.2.0/download" + ], + "strip_prefix": "windows-numerics-0.2.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_numerics\",\n deps = [\n \"@crate_index__windows-core-0.61.2//:windows_core\",\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-numerics\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + } + }, + "crate_index__windows-result-0.3.4": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-result/0.3.4/download" + ], + "strip_prefix": "windows-result-0.3.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_result\",\n deps = [\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-result\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.4\",\n)\n" + } + }, + "crate_index__windows-strings-0.4.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-strings/0.4.2/download" + ], + "strip_prefix": "windows-strings-0.4.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_strings\",\n deps = [\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-strings\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.2\",\n)\n" + } + }, + "crate_index__windows-sys-0.48.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.48.0/download" + ], + "strip_prefix": "windows-sys-0.48.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crate_index__windows-targets-0.48.5//:windows_targets\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.0\",\n)\n" + } + }, + "crate_index__windows-sys-0.59.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.59.0/download" + ], + "strip_prefix": "windows-sys-0.59.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crate_index__windows-targets-0.52.6//:windows_targets\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.59.0\",\n)\n" + } + }, + "crate_index__windows-sys-0.60.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.60.2/download" + ], + "strip_prefix": "windows-sys-0.60.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crate_index__windows-targets-0.53.5//:windows_targets\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.60.2\",\n)\n" + } + }, + "crate_index__windows-sys-0.61.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.61.2/download" + ], + "strip_prefix": "windows-sys-0.61.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crate_index__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.2\",\n)\n" + } + }, + "crate_index__windows-targets-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.48.5/download" + ], + "strip_prefix": "windows-targets-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_targets\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__windows_x86_64_gnu-0.48.5//:windows_x86_64_gnu\", # cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-targets\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n" + } + }, + "crate_index__windows-targets-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.52.6/download" + ], + "strip_prefix": "windows-targets-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_targets\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__windows_x86_64_gnu-0.52.6//:windows_x86_64_gnu\", # cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-targets\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n" + } + }, + "crate_index__windows-targets-0.53.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.53.5/download" + ], + "strip_prefix": "windows-targets-0.53.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_targets\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crate_index__windows_x86_64_gnu-0.53.1//:windows_x86_64_gnu\", # cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-targets\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.5\",\n)\n" + } + }, + "crate_index__windows-threading-0.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-threading/0.1.0/download" + ], + "strip_prefix": "windows-threading-0.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_threading\",\n deps = [\n \"@crate_index__windows-link-0.1.3//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-threading\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n" + } + }, + "crate_index__windows_aarch64_gnullvm-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_gnullvm\",\n deps = [\n \"@crate_index__windows_aarch64_gnullvm-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_aarch64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_aarch64_gnullvm-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_gnullvm\",\n deps = [\n \"@crate_index__windows_aarch64_gnullvm-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_aarch64_gnullvm-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_gnullvm\",\n deps = [\n \"@crate_index__windows_aarch64_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_aarch64_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_msvc\",\n deps = [\n \"@crate_index__windows_aarch64_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_aarch64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_aarch64_msvc-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_msvc\",\n deps = [\n \"@crate_index__windows_aarch64_msvc-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_aarch64_msvc-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_msvc\",\n deps = [\n \"@crate_index__windows_aarch64_msvc-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_gnu-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download" + ], + "strip_prefix": "windows_i686_gnu-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnu\",\n deps = [\n \"@crate_index__windows_i686_gnu-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_i686_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_gnu-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.52.6/download" + ], + "strip_prefix": "windows_i686_gnu-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnu\",\n deps = [\n \"@crate_index__windows_i686_gnu-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_gnu-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.53.1/download" + ], + "strip_prefix": "windows_i686_gnu-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnu\",\n deps = [\n \"@crate_index__windows_i686_gnu-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_gnullvm-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_i686_gnullvm-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnullvm\",\n deps = [\n \"@crate_index__windows_i686_gnullvm-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_gnullvm-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download" + ], + "strip_prefix": "windows_i686_gnullvm-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnullvm\",\n deps = [\n \"@crate_index__windows_i686_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.48.5/download" + ], + "strip_prefix": "windows_i686_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_msvc\",\n deps = [\n \"@crate_index__windows_i686_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_i686_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_msvc-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.52.6/download" + ], + "strip_prefix": "windows_i686_msvc-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_msvc\",\n deps = [\n \"@crate_index__windows_i686_msvc-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_i686_msvc-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.53.1/download" + ], + "strip_prefix": "windows_i686_msvc-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_msvc\",\n deps = [\n \"@crate_index__windows_i686_msvc-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnu-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnu\",\n deps = [\n \"@crate_index__windows_x86_64_gnu-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnu-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnu\",\n deps = [\n \"@crate_index__windows_x86_64_gnu-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnu-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnu\",\n deps = [\n \"@crate_index__windows_x86_64_gnu-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnullvm-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnullvm\",\n deps = [\n \"@crate_index__windows_x86_64_gnullvm-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnullvm-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnullvm\",\n deps = [\n \"@crate_index__windows_x86_64_gnullvm-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_gnullvm-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnullvm\",\n deps = [\n \"@crate_index__windows_x86_64_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_msvc\",\n deps = [\n \"@crate_index__windows_x86_64_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_msvc-0.52.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.52.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_msvc\",\n deps = [\n \"@crate_index__windows_x86_64_msvc-0.52.6//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.52.6\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.52.6\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__windows_x86_64_msvc-0.53.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.53.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_msvc\",\n deps = [\n \"@crate_index__windows_x86_64_msvc-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__winnow-0.7.14": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winnow/0.7.14/download" + ], + "strip_prefix": "winnow-0.7.14", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"winnow\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=winnow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.14\",\n)\n" + } + }, + "crate_index__wit-bindgen-0.51.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-bindgen/0.51.0/download" + ], + "strip_prefix": "wit-bindgen-0.51.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_bindgen\",\n deps = [\n \"@crate_index__wit-bindgen-0.51.0//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.51.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2024\",\n pkg_name = \"wit-bindgen\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.51.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__wit-bindgen-core-0.51.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-bindgen-core/0.51.0/download" + ], + "strip_prefix": "wit-bindgen-core-0.51.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_bindgen_core\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__wit-parser-0.244.0//:wit_parser\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.51.0\",\n)\n" + } + }, + "crate_index__wit-bindgen-rust-0.51.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download" + ], + "strip_prefix": "wit-bindgen-rust-0.51.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_bindgen_rust\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__heck-0.5.0//:heck\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__wasm-metadata-0.244.0//:wasm_metadata\",\n \"@crate_index__wit-bindgen-core-0.51.0//:wit_bindgen_core\",\n \"@crate_index__wit-bindgen-rust-0.51.0//:build_script_build\",\n \"@crate_index__wit-component-0.244.0//:wit_component\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen-rust\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.51.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n ],\n edition = \"2024\",\n pkg_name = \"wit-bindgen-rust\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen-rust\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.51.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__wit-bindgen-rust-macro-0.51.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download" + ], + "strip_prefix": "wit-bindgen-rust-macro-0.51.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"wit_bindgen_rust_macro\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n \"@crate_index__wit-bindgen-core-0.51.0//:wit_bindgen_core\",\n \"@crate_index__wit-bindgen-rust-0.51.0//:wit_bindgen_rust\",\n \"@crate_index__wit-bindgen-rust-macro-0.51.0//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen-rust-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.51.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crate_index__prettyplease-0.2.37//:prettyplease\",\n ],\n edition = \"2024\",\n pkg_name = \"wit-bindgen-rust-macro\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-bindgen-rust-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.51.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__wit-component-0.244.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-component/0.244.0/download" + ], + "strip_prefix": "wit-component-0.244.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_component\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__bitflags-2.11.0//:bitflags\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__serde_json-1.0.149//:serde_json\",\n \"@crate_index__wasm-encoder-0.244.0//:wasm_encoder\",\n \"@crate_index__wasm-metadata-0.244.0//:wasm_metadata\",\n \"@crate_index__wasmparser-0.244.0//:wasmparser\",\n \"@crate_index__wit-parser-0.244.0//:wit_parser\",\n ],\n proc_macro_deps = [\n \"@crate_index__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-component\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + } + }, + "crate_index__wit-parser-0.244.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/wit-parser/0.244.0/download" + ], + "strip_prefix": "wit-parser-0.244.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_parser\",\n deps = [\n \"@crate_index__anyhow-1.0.102//:anyhow\",\n \"@crate_index__id-arena-2.3.0//:id_arena\",\n \"@crate_index__indexmap-2.13.0//:indexmap\",\n \"@crate_index__log-0.4.29//:log\",\n \"@crate_index__semver-1.0.27//:semver\",\n \"@crate_index__serde-1.0.228//:serde\",\n \"@crate_index__serde_json-1.0.149//:serde_json\",\n \"@crate_index__unicode-xid-0.2.6//:unicode_xid\",\n \"@crate_index__wasmparser-0.244.0//:wasmparser\",\n ],\n proc_macro_deps = [\n \"@crate_index__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"decoding\",\n \"default\",\n \"serde\",\n \"serde_json\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + } + }, + "crate_index__yansi-1.0.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/yansi/1.0.1/download" + ], + "strip_prefix": "yansi-1.0.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"yansi\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=yansi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n" + } + }, + "crate_index__zerocopy-0.8.40": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zerocopy/0.8.40/download" + ], + "strip_prefix": "zerocopy-0.8.40", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zerocopy\",\n deps = [\n \"@crate_index__zerocopy-0.8.40//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.40\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zerocopy\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.8.40\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, + "crate_index__zerocopy-derive-0.8.40": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zerocopy-derive/0.8.40/download" + ], + "strip_prefix": "zerocopy-derive-0.8.40", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"zerocopy_derive\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.40\",\n)\n" + } + }, + "crate_index__zeroize-1.8.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zeroize/1.8.2/download" + ], + "strip_prefix": "zeroize-1.8.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zeroize\",\n proc_macro_deps = [\n \"@crate_index__zeroize_derive-1.4.3//:zeroize_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"derive\",\n \"zeroize_derive\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zeroize\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.8.2\",\n)\n" + } + }, + "crate_index__zeroize_derive-1.4.3": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zeroize_derive/1.4.3/download" + ], + "strip_prefix": "zeroize_derive-1.4.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"zeroize_derive\",\n deps = [\n \"@crate_index__proc-macro2-1.0.106//:proc_macro2\",\n \"@crate_index__quote-1.0.44//:quote\",\n \"@crate_index__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zeroize_derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.3\",\n)\n" + } + }, + "crate_index__zmij-1.0.21": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zmij/1.0.21/download" + ], + "strip_prefix": "zmij-1.0.21", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'score_crates'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zmij\",\n deps = [\n \"@crate_index__zmij-1.0.21//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-pc-nto-qnx710\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-none\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.21\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zmij\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zmij\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.21\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_cc+", + "cc_compatibility_proxy", + "rules_cc++compatibility_proxy+cc_compatibility_proxy" + ], + [ + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_cc++compatibility_proxy+cc_compatibility_proxy", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "cargo_bazel_bootstrap", + "rules_rust++cu_nr+cargo_bazel_bootstrap" + ], + [ + "rules_rust+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "rules_rust", + "rules_rust+" + ] + ] + } + }, + "@@rules_rust+//crate_universe/private:internal_extensions.bzl%cu_nr": { + "general": { + "bzlTransitiveDigest": "3IuHYW/WqVkm+gdxh+SW5M8qX+6R5q5L3qQSlODBC2A=", + "usagesDigest": "P4qQAUEHFUvz2hoKWGeiduz89B6xDuZJ/1Wo8WBYRKY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "cargo_bazel_bootstrap": { + "repoRuleId": "@@rules_rust+//cargo/private:cargo_bootstrap.bzl%cargo_bootstrap_repository", + "attributes": { + "srcs": [ + "@@rules_rust+//crate_universe:src/api.rs", + "@@rules_rust+//crate_universe:src/api/lockfile.rs", + "@@rules_rust+//crate_universe:src/cli.rs", + "@@rules_rust+//crate_universe:src/cli/generate.rs", + "@@rules_rust+//crate_universe:src/cli/query.rs", + "@@rules_rust+//crate_universe:src/cli/render.rs", + "@@rules_rust+//crate_universe:src/cli/splice.rs", + "@@rules_rust+//crate_universe:src/cli/vendor.rs", + "@@rules_rust+//crate_universe:src/config.rs", + "@@rules_rust+//crate_universe:src/context.rs", + "@@rules_rust+//crate_universe:src/context/crate_context.rs", + "@@rules_rust+//crate_universe:src/context/platforms.rs", + "@@rules_rust+//crate_universe:src/lib.rs", + "@@rules_rust+//crate_universe:src/lockfile.rs", + "@@rules_rust+//crate_universe:src/main.rs", + "@@rules_rust+//crate_universe:src/metadata.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_bin.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_resolver.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.bat", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.sh", + "@@rules_rust+//crate_universe:src/metadata/dependency.rs", + "@@rules_rust+//crate_universe:src/metadata/metadata_annotation.rs", + "@@rules_rust+//crate_universe:src/metadata/workspace_discoverer.rs", + "@@rules_rust+//crate_universe:src/rendering.rs", + "@@rules_rust+//crate_universe:src/rendering/template_engine.rs", + "@@rules_rust+//crate_universe:src/rendering/templates/module_bzl.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/header.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/aliases_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/deps_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_git.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_http.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/vendor_module.j2", + "@@rules_rust+//crate_universe:src/rendering/verbatim/alias_rules.bzl", + "@@rules_rust+//crate_universe:src/select.rs", + "@@rules_rust+//crate_universe:src/splicing.rs", + "@@rules_rust+//crate_universe:src/splicing/cargo_config.rs", + "@@rules_rust+//crate_universe:src/splicing/crate_index_lookup.rs", + "@@rules_rust+//crate_universe:src/splicing/splicer.rs", + "@@rules_rust+//crate_universe:src/test.rs", + "@@rules_rust+//crate_universe:src/utils.rs", + "@@rules_rust+//crate_universe:src/utils/starlark.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/glob.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/label.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_dict.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_list.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_scalar.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_set.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/serialize.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/target_compatible_with.rs", + "@@rules_rust+//crate_universe:src/utils/symlink.rs", + "@@rules_rust+//crate_universe:src/utils/target_triple.rs" + ], + "binary": "cargo-bazel", + "cargo_lockfile": "@@rules_rust+//crate_universe:Cargo.lock", + "cargo_toml": "@@rules_rust+//crate_universe:Cargo.toml", + "version": "1.86.0", + "timeout": 900, + "rust_toolchain_cargo_template": "@rust_host_tools//:bin/{tool}", + "rust_toolchain_rustc_template": "@rust_host_tools//:bin/{tool}", + "compressed_windows_toolchain_names": false + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "cargo_bazel_bootstrap" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_cc+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_cc+", + "cc_compatibility_proxy", + "rules_cc++compatibility_proxy+cc_compatibility_proxy" + ], + [ + "rules_cc+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_cc++compatibility_proxy+cc_compatibility_proxy", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "cargo_bazel_bootstrap", + "rules_rust++cu_nr+cargo_bazel_bootstrap" + ], + [ + "rules_rust+", + "cui", + "rules_rust++cu+cui" + ], + [ + "rules_rust+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "rules_rust", + "rules_rust+" + ], + [ + "rules_rust+", + "rules_rust_ctve", + "rules_rust++i2+rules_rust_ctve" + ] + ] + } + }, + "@@score_bazel_cpp_toolchains+//extensions:gcc.bzl%gcc": { + "general": { + "bzlTransitiveDigest": "KxrowgcOL9/TXZV9eYHlJn+qGFUKJA7pzf1zU1xPITw=", + "usagesDigest": "I8fY6qfKXqLQdIY8/nDIJ2X/Oipykthb5uS0keHta/4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "score_gcc_x86_64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/v0.0.4/x86_64-unknown-linux-gnu_gcc12.tar.gz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/linux/x86_64/gcc/12.2.0:gcc.BUILD", + "sha256": "e9b9a7a63a5f8271b76d6e2057906b95c7a244e4931a8e10edeaa241e9f7c11e", + "strip_prefix": "x86_64-unknown-linux-gnu" + } + }, + "score_qcc_aarch64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://www.qnx.com/download/download/79858/installation.tgz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/qnx/aarch64/sdp/8.0.0:sdp.BUILD", + "sha256": "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", + "strip_prefix": "installation" + } + }, + "score_qcc_x86_64_toolchain_pkg": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://www.qnx.com/download/download/79858/installation.tgz" + ], + "build_file": "@@score_bazel_cpp_toolchains+//packages/qnx/x86_64/sdp/8.0.0:sdp.BUILD", + "sha256": "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", + "strip_prefix": "installation" + } + }, + "score_gcc_x86_64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdp_version": "8.0.0", + "tc_cpu": "x86_64", + "tc_os": "linux", + "tc_pkg_repo": "score_gcc_x86_64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "posix", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates/linux:cc_toolchain_config.bzl.template", + "cc_toolchain_flags": "@@score_bazel_cpp_toolchains+//templates/linux:cc_toolchain_flags.bzl.template" + } + }, + "score_qcc_aarch64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdp_version": "8.0.0", + "tc_cpu": "aarch64", + "tc_os": "qnx", + "tc_pkg_repo": "score_qcc_aarch64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "posix", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates/qnx:cc_toolchain_config.bzl.template", + "cc_toolchain_flags": "@@score_bazel_cpp_toolchains+//templates/qnx:cc_toolchain_flags.bzl.template" + } + }, + "score_qcc_x86_64_toolchain": { + "repoRuleId": "@@score_bazel_cpp_toolchains+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "extra_compile_flags": [], + "extra_link_flags": [], + "license_info_variable": "", + "license_info_value": "", + "license_path": "/opt/score_qnx/license/licenses", + "sdp_version": "8.0.0", + "tc_cpu": "x86_64", + "tc_os": "qnx", + "tc_pkg_repo": "score_qcc_x86_64_toolchain_pkg", + "tc_system_toolchain": false, + "tc_runtime_ecosystem": "posix", + "gcc_version": "12.2.0", + "cc_toolchain_config": "@@score_bazel_cpp_toolchains+//templates/qnx:cc_toolchain_config.bzl.template", + "cc_toolchain_flags": "@@score_bazel_cpp_toolchains+//templates/qnx:cc_toolchain_flags.bzl.template" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_tools", + "rules_cc", + "rules_cc+" + ], + [ + "score_bazel_cpp_toolchains+", + "bazel_tools", + "bazel_tools" + ], + [ + "score_bazel_cpp_toolchains+", + "score_bazel_cpp_toolchains", + "score_bazel_cpp_toolchains+" + ] + ] + } + }, + "@@score_communication+//third_party/lobster:lobster.bzl%lobster_ext": { + "general": { + "bzlTransitiveDigest": "ZCflMxqZlfnFjjNyAVZ8yPFB9wd3+IfzPMRbX/OpunU=", + "usagesDigest": "Oh5BIYRTBLHTdBqk1FNUppn+ZhSrqE+sBtlO/JelDKs=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "lobster": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "5a0b86c62cadc872dcb1b79485ba72953400bcdc42f97c5b5aefe210e92ce6ff", + "strip_prefix": "lobster-lobster-0.14.1", + "urls": [ + "https://github.com/bmw-software-engineering/lobster/archive/refs/tags/lobster-0.14.1.tar.gz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "score_communication+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@score_toolchains_gcc+//extensions:gcc.bzl%gcc": { + "general": { + "bzlTransitiveDigest": "LFl4KKKaZPFgIheCaxIQY+QhIg9J1G8DPd6DasYo9Zg=", + "usagesDigest": "HDayvrCpiVkKWY351LqQknmB8GU2AZb6XynGbVPocZY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "gcc_toolchain_gcc": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/elektrobit-contrib/eclipse-score_toolchains_gcc/releases/download/0.5.0-beta/fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64.tar.gz" + ], + "build_file": "@@score_toolchains_gcc+//toolchain/third_party:gcc.BUILD", + "sha256": "05b57bbc8d99d46df6b57f774c39a5a2664964ea7eb94147cbece08508c1f121", + "strip_prefix": "fastdev-sdk-ubuntu-ebclfsa-ebcl-qemuarm64" + } + }, + "gcc_toolchain": { + "repoRuleId": "@@score_toolchains_gcc+//rules:gcc.bzl%gcc_toolchain", + "attributes": { + "gcc_repo": "gcc_toolchain_gcc", + "extra_features": [ + "minimal_warnings", + "strict_warnings", + "treat_warnings_as_errors" + ], + "warning_flags": { + "minimal_warnings": [ + "-Wall", + "-Wundef", + "-Wwrite-strings", + "-Wpointer-arith", + "-Wcast-align", + "-Wredundant-decls", + "-Wreturn-local-addr", + "-Wcast-qual", + "-Wodr", + "-Wsizeof-array-argument", + "-Wformat=2", + "-Wmissing-format-attribute", + "-Wformat-nonliteral", + "-Wformat-signedness", + "-Wreorder" + ], + "strict_warnings": [ + "-Wextra", + "-Wpedantic", + "-Wswitch-bool", + "-Wconversion", + "-Wlogical-op", + "-Wunused-but-set-parameter", + "-Wlogical-not-parentheses", + "-Wbool-compare", + "-Winvalid-pch", + "-Wvla", + "-Wuseless-cast", + "-Wdouble-promotion", + "-Wnarrowing" + ], + "treat_warnings_as_errors": [ + "-Werror", + "-Wno-error=deprecated-declarations" + ], + "additional_warnings": [] + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "score_toolchains_gcc+", + "bazel_tools", + "bazel_tools" + ], + [ + "score_toolchains_gcc+", + "score_toolchains_gcc", + "score_toolchains_gcc+" + ] + ] + } + }, + "@@score_toolchains_qnx+//:extensions.bzl%toolchains_qnx": { + "general": { + "bzlTransitiveDigest": "F6y2fAJJUfV3b6FNSGJSyi+Pa7AqT9NG+AhWCIySUwA=", + "usagesDigest": "p/FeZwP4jiJtoCpjssuAB6imOS/izStKSk8fSVcQtTc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "toolchains_qnx_sdp": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://www.qnx.com/download/download/79858/installation.tgz" + ], + "build_file": "@@score_toolchains_qnx+//toolchains:sdp.BUILD", + "sha256": "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", + "strip_prefix": "installation" + } + }, + "toolchains_qnx_qcc": { + "repoRuleId": "@@score_toolchains_qnx+//toolchains:rules.bzl%qcc_toolchain", + "attributes": { + "sdp_repo": "toolchains_qnx_sdp", + "qcc_version": "12.2.0", + "sdp_version": "8.0.0", + "qnx_version_constraint": "@@score_bazel_platforms+//:qnx8_0", + "default_license_server": "" + } + }, + "toolchains_qnx_ifs": { + "repoRuleId": "@@score_toolchains_qnx+//toolchains:rules.bzl%ifs_toolchain", + "attributes": { + "sdp_repo": "toolchains_qnx_sdp", + "qnx_version_constraint": "@@score_bazel_platforms+//:qnx8_0", + "default_license_server": "" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "score_toolchains_qnx+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_ext": { + "general": { + "bzlTransitiveDigest": "XEgifqjEEdSGw80RccoJ/aUy9smsRXQJ9jO4RDOf2vk=", + "usagesDigest": "E1IZ2a+2ph6qqEjmd7DiukKMtx00DAfhuDAbX5I6Isg=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "ferrocene_x86_64_unknown_linux_gnu": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "sha256": "4c08b41eaafd39cff66333ca4d4646a5331c780050b8b9a8447353fcd301dddc", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "x86_64-unknown-linux-gnu", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lstdc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu" + } + }, + "ferrocene_x86_64_pc_nto_qnx800": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-pc-nto-qnx800.tar.gz", + "sha256": "6daabbe20c0b06551335f83c2490326ce447759628dea04cd1c90d297c3a0bd3", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "x86_64-pc-nto-qnx800", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:qnx" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu" + } + }, + "ferrocene_aarch64_unknown_nto_qnx800": { + "repoRuleId": "@@score_toolchains_rust+//extensions:ferrocene_toolchain_ext.bzl%ferrocene_toolchain_repo", + "attributes": { + "url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-aarch64-unknown-nto-qnx800.tar.gz", + "sha256": "563a2438324ee1c6fdcfd13fbe352bedf1cf3f0756d07bb7ba7bdca334df92bf", + "strip_prefix": "", + "toolchain_name": "rust_ferrocene", + "target_triple": "aarch64-unknown-nto-qnx800", + "exec_triple": "x86_64-unknown-linux-gnu", + "staticlib_ext": ".a", + "dylib_ext": ".so", + "binary_ext": "", + "default_edition": "2021", + "stdlib_linkflags": [], + "extra_rustc_flags": [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc" + ], + "extra_exec_rustc_flags": [], + "env": {}, + "exec_compatible_with": [ + "@platforms//cpu:x86_64", + "@platforms//os:linux" + ], + "target_compatible_with": [ + "@platforms//cpu:aarch64", + "@platforms//os:qnx" + ], + "coverage_tools_url": "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + "coverage_tools_sha256": "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + "coverage_tools_strip_prefix": "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@yq.bzl+//yq:extensions.bzl%yq": { + "general": { + "bzlTransitiveDigest": "61Uz+o5PnlY0jJfPZEUNqsKxnM/UCLeWsn5VVCc8u5Y=", + "usagesDigest": "UlPnizl5jg+w9YqIQh0PbzHgchwgTxAV+T3JfYX1D4A=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "yq_darwin_amd64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_amd64", + "version": "4.45.1" + } + }, + "yq_darwin_arm64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "darwin_arm64", + "version": "4.45.1" + } + }, + "yq_linux_amd64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_amd64", + "version": "4.45.1" + } + }, + "yq_linux_arm64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_arm64", + "version": "4.45.1" + } + }, + "yq_linux_s390x": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_s390x", + "version": "4.45.1" + } + }, + "yq_linux_riscv64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_riscv64", + "version": "4.45.1" + } + }, + "yq_linux_ppc64le": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "linux_ppc64le", + "version": "4.45.1" + } + }, + "yq_windows_amd64": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:platforms.bzl%yq_platform_repo", + "attributes": { + "platform": "windows_amd64", + "version": "4.45.1" + } + }, + "yq_toolchains": { + "repoRuleId": "@@yq.bzl+//yq/toolchain:toolchain.bzl%yq_toolchains_repo", + "attributes": { + "user_repository_name": "yq" + } + } + }, + "recordedRepoMappingEntries": [] + } + } + } +} diff --git a/bazel_common/score_python.MODULE.bazel b/bazel_common/score_python.MODULE.bazel index 3293cfb2612..994e9a6af24 100644 --- a/bazel_common/score_python.MODULE.bazel +++ b/bazel_common/score_python.MODULE.bazel @@ -20,7 +20,6 @@ python.toolchain( is_default = True, python_version = PYTHON_VERSION, ) -use_repo(python) pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True) pip.parse( From 7a0db2135d233b97388328eba564aab91eb6e7f5 Mon Sep 17 00:00:00 2001 From: Leonardo Rossetti Date: Thu, 5 Mar 2026 04:52:13 -0300 Subject: [PATCH 53/55] autosd cu use latest tag again (#173) Signed-off-by: Leonardo Rossetti Co-authored-by: Pawel Rutka --- .github/workflows/build_and_test_autosd.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test_autosd.yml b/.github/workflows/build_and_test_autosd.yml index e72b43da31e..293b8eb21e4 100644 --- a/.github/workflows/build_and_test_autosd.yml +++ b/.github/workflows/build_and_test_autosd.yml @@ -28,7 +28,8 @@ jobs: name: x86_64 runs-on: ubuntu-latest env: - AIB_CONTAINER_IMAGE: quay.io/centos-sig-automotive/automotive-image-builder:1.1.11 + AIB_SCRIPT_URL: https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh?ref_type=heads + AIB_CONTAINER_IMAGE: quay.io/centos-sig-automotive/automotive-image-builder:latest steps: - name: Clean disk space uses: eclipse-score/more-disk-space@v1 @@ -55,7 +56,7 @@ jobs: cp -R ./bazel-bin/showcases/showcases/showcases ./images/autosd_x86_64/build/files/reference_integration/ - name: Install AIB Tools run: | - curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/1.1.11/auto-image-builder.sh?ref_type=tag" + curl -o auto-image-builder.sh "$AIB_SCRIPT_URL" chmod +x auto-image-builder.sh working-directory: ./images/autosd_x86_64/build - name: Build AutoSD QEMU (x86_64) @@ -65,7 +66,7 @@ jobs: mkdir -p _build/containers-storage sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE build-builder --distro=autosd10-sig - sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE build \ + sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE --verbose build \ --distro=autosd10-sig \ --target=qemu \ --define-file vars.yml \ @@ -73,7 +74,7 @@ jobs: image.aib.yml \ localhost/score:latest - sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE to-disk-image localhost/score:latest _build/disk.qcow2 + sudo -E ./auto-image-builder.sh -c $AIB_CONTAINER_IMAGE --verbose to-disk-image localhost/score:latest _build/disk.qcow2 sudo chown $(id -u):$(id -u) _build/disk.qcow2 working-directory: ./images/autosd_x86_64/build From 3ad50341352c1aa649861cca4742b3dd1c7ced6f Mon Sep 17 00:00:00 2001 From: Alexander Lanin Date: Fri, 6 Mar 2026 10:58:17 +0100 Subject: [PATCH 54/55] chore: extend codeowners list (#175) * chore: extend codeowners list * fix: no commas Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Alexander Lanin --------- Signed-off-by: Alexander Lanin Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/CODEOWNERS | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 501256bd657..4477742dae0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,8 +1,16 @@ -# GitHub CODEOWNERS file is a simple way to automate review system on github, -# by automatically assigning owners to a pull request based on which files -# were modified. All directories should have a proper codeowner -# Syntax: https://help.github.com/articles/about-codeowners/ - -# default owners -# @kgraeper to come once he is commiter -* @pawelrutkaq @PiotrKorkus +# 👋 Code owners help maintain this repository and keep it aligned with our technical vision. +# You're responsible for reviewing changes, ensuring quality, and guiding contributors. +# You're also encouraged to help triage issues and keep discussions constructive and focused. +# Ownership can be shared, delegated, or updated as the project evolves. + +# For more information about CODEOWNERS, see: +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners + + +# This repository is maintained by the following individuals, who are responsible for reviewing and approving changes to the codebase: +# * @pawelrutkaq @PiotrKorkus @kgraeper +# Note: @kgraeper is currently mid-committer-election process, but is already actively maintaining this repository (in an unofficial capacity). + +# However as this would create quite a bottleneck, we also want to cast a wider net and encourage the following individuals to also review and approve changes to the codebase. +# PLEASE LEAVE CRITICAL DECISIONS TO THE FIRST GROUP, BUT FEEL FREE TO APPROVE ANYTHING ELSE. +* @pawelrutkaq @PiotrKorkus @kgraeper @nradakovic @dcalavrezo-qorix @AlexanderLanin @MaximilianSoerenPollak @opajonk @lurtz @antonkri @FScholPer From c33438312e17d9074808ee1888d61cea89ab0b91 Mon Sep 17 00:00:00 2001 From: rmaddikery Date: Mon, 9 Mar 2026 07:01:01 +0100 Subject: [PATCH 55/55] Integrates datatrouter and adds integration test - Deploys datarouetr in linux x86_64 and qnx_x86_64 image - Multicast route added to qnx guest in network_setup_dhcp.sh required for capturing DLTs. - vlan_address updated in qemu_target_config.json for dlt_receive to capture untagged ethernet frames on tap0 interface - Adds test_remote_logging integration test that verifies remote logging of datarouter and network config. of the qnx qemu image by capturing DLT logs on the host. --- .bazelrc | 9 +- feature_integration_tests/configs/BUILD | 2 + .../configs/datarouter/BUILD | 26 ++++ .../configs/datarouter/etc/log-channels.json | 71 ++++++++++ .../configs/datarouter/etc/logging.json | 10 ++ .../configs/dlt_config_qnx_x86_64.json | 7 + .../configs/dlt_config_x86_64.json | 7 + feature_integration_tests/itf/BUILD | 9 +- .../itf/test_remote_logging.py | 127 ++++++++++++++++++ images/linux_x86_64/BUILD | 19 +++ images/qnx_x86_64/build/BUILD | 3 + images/qnx_x86_64/build/init.build | 6 +- images/qnx_x86_64/build/system.build | 10 +- .../qnx_x86_64/configs/network_setup_dhcp.sh | 8 ++ 14 files changed, 302 insertions(+), 12 deletions(-) create mode 100644 feature_integration_tests/configs/datarouter/BUILD create mode 100644 feature_integration_tests/configs/datarouter/etc/log-channels.json create mode 100644 feature_integration_tests/configs/datarouter/etc/logging.json create mode 100644 feature_integration_tests/configs/dlt_config_qnx_x86_64.json create mode 100644 feature_integration_tests/configs/dlt_config_x86_64.json create mode 100644 feature_integration_tests/itf/test_remote_logging.py diff --git a/.bazelrc b/.bazelrc index d990313d0d9..b4eeba5169e 100644 --- a/.bazelrc +++ b/.bazelrc @@ -13,7 +13,6 @@ build --tool_java_language_version=17 build --java_runtime_version=remotejdk_17 build --tool_java_runtime_version=remotejdk_17 -build:_common --@score_baselibs//score/mw/log/flags:KRemote_Logging=False build:_common --@score_baselibs//score/json:base_library=nlohmann build:_common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False build:_common --@score_communication//score/mw/com/flags:tracing_library=stub @@ -22,6 +21,14 @@ build:_common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-p build:_common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu build:_common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix +# Flags needed by datarouter +build:_common --@score_logging//score/datarouter/build_configuration_flags:persistent_logging=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:persistent_config_feature_enabled=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:enable_nonverbose_dlt=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:enable_dynamic_configuration=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:file_transfer=False +build:_common --@score_logging//score/datarouter/build_configuration_flags:use_local_vlan=True + build:qnx-x86_64 --config=_common build:qnx-x86_64 --noexperimental_merged_skyframe_analysis_execution build:qnx-x86_64 --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 diff --git a/feature_integration_tests/configs/BUILD b/feature_integration_tests/configs/BUILD index 8556521da4d..dce9a78284e 100644 --- a/feature_integration_tests/configs/BUILD +++ b/feature_integration_tests/configs/BUILD @@ -12,6 +12,8 @@ # ******************************************************************************* exports_files( [ + "dlt_config_qnx_x86_64.json", + "dlt_config_x86_64.json", "qemu_bridge_config.json", ], ) diff --git a/feature_integration_tests/configs/datarouter/BUILD b/feature_integration_tests/configs/datarouter/BUILD new file mode 100644 index 00000000000..89984b02f1c --- /dev/null +++ b/feature_integration_tests/configs/datarouter/BUILD @@ -0,0 +1,26 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +exports_files([ + "etc/logging.json", + "etc/log-channels.json", +]) + +filegroup( + name = "etc_configs", + srcs = [ + "etc/logging.json", + "etc/log-channels.json", + ], + visibility = ["//visibility:public"], +) diff --git a/feature_integration_tests/configs/datarouter/etc/log-channels.json b/feature_integration_tests/configs/datarouter/etc/log-channels.json new file mode 100644 index 00000000000..516c9742e60 --- /dev/null +++ b/feature_integration_tests/configs/datarouter/etc/log-channels.json @@ -0,0 +1,71 @@ +{ + "channels": { + "3491": { + "address": "0.0.0.0", + "channelThreshold": "kError", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3491 + }, + "3492": { + "address": "0.0.0.0", + "channelThreshold": "kInfo", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3492 + }, + "3493": { + "address": "0.0.0.0", + "channelThreshold": "kVerbose", + "dstAddress": "239.255.42.99", + "dstPort": 3490, + "ecu": "SCPP", + "port": 3493 + } + }, + "channelAssignments": { + "DR": { + "": [ + "3492" + ], + "CTX1": [ + "3492", + "3493" + ], + "STAT": [ + "3492" + ] + }, + "IPBR": { + "": [ + "3492", + "3493" + ] + }, + "-NI-": { + "": [ + "3491" + ] + } + }, + "defaultChannel": "3493", + "defaultThresold": "kVerbose", + "messageThresholds": { + "": { + "vcip": "kInfo" + }, + "DR": { + "": "kVerbose", + "CTX1": "kVerbose", + "STAT": "kDebug" + }, + "IPBR": { + "": "kVerbose" + }, + "-NI-": { + "": "kVerbose" + } + } +} diff --git a/feature_integration_tests/configs/datarouter/etc/logging.json b/feature_integration_tests/configs/datarouter/etc/logging.json new file mode 100644 index 00000000000..4ea4800a5a8 --- /dev/null +++ b/feature_integration_tests/configs/datarouter/etc/logging.json @@ -0,0 +1,10 @@ +{ + "appId": "DR", + "appDesc": "Data Router", + "logLevel": "kInfo", + "logMode": "kRemote", + "ringBufferSize": 786432, + "numberOfSlots": 4, + "slotSizeBytes": 4096, + "datarouterUid": 1051 +} diff --git a/feature_integration_tests/configs/dlt_config_qnx_x86_64.json b/feature_integration_tests/configs/dlt_config_qnx_x86_64.json new file mode 100644 index 00000000000..45ea1f61a0f --- /dev/null +++ b/feature_integration_tests/configs/dlt_config_qnx_x86_64.json @@ -0,0 +1,7 @@ +{ + "host_ip": "169.254.21.88", + "target_ip": "169.254.21.88", + "multicast_ips": [ + "239.255.42.99" + ] +} diff --git a/feature_integration_tests/configs/dlt_config_x86_64.json b/feature_integration_tests/configs/dlt_config_x86_64.json new file mode 100644 index 00000000000..72fb4d9a481 --- /dev/null +++ b/feature_integration_tests/configs/dlt_config_x86_64.json @@ -0,0 +1,7 @@ +{ + "host_ip": "172.17.0.1", + "target_ip": "172.17.0.1", + "multicast_ips": [ + "239.255.42.99" + ] +} diff --git a/feature_integration_tests/itf/BUILD b/feature_integration_tests/itf/BUILD index cf3c3cf78bf..2cb6c0c8d47 100644 --- a/feature_integration_tests/itf/BUILD +++ b/feature_integration_tests/itf/BUILD @@ -11,11 +11,12 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* load("@score_itf//:defs.bzl", "py_itf_test") -load("@score_itf//score/itf/plugins:plugins.bzl", "docker", "qemu") +load("@score_itf//score/itf/plugins:plugins.bzl", "dlt", "docker", "qemu") filegroup( name = "all_tests", srcs = [ + "test_remote_logging.py", "test_showcases.py", "test_ssh.py", ], @@ -27,13 +28,16 @@ py_itf_test( ":all_tests", ], args = [ + "--dlt-config=$(location //feature_integration_tests/configs:dlt_config_x86_64.json)", "--docker-image-bootstrap=$(location //images/linux_x86_64:image_tarball)", "--docker-image=score_showcases:latest", ], data = [ + "//feature_integration_tests/configs:dlt_config_x86_64.json", "//images/linux_x86_64:image_tarball", ], plugins = [ + dlt, docker, ], tags = [ @@ -47,14 +51,17 @@ py_itf_test( ":all_tests", ], args = [ + "--dlt-config=$(location //feature_integration_tests/configs:dlt_config_qnx_x86_64.json)", "--qemu-config=$(location //feature_integration_tests/configs:qemu_bridge_config.json)", "--qemu-image=$(location //images/qnx_x86_64:image)", ], data = [ + "//feature_integration_tests/configs:dlt_config_qnx_x86_64.json", "//feature_integration_tests/configs:qemu_bridge_config.json", "//images/qnx_x86_64:image", ], plugins = [ + dlt, qemu, ], tags = [ diff --git a/feature_integration_tests/itf/test_remote_logging.py b/feature_integration_tests/itf/test_remote_logging.py new file mode 100644 index 00000000000..d4b42f91f8a --- /dev/null +++ b/feature_integration_tests/itf/test_remote_logging.py @@ -0,0 +1,127 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +import logging +import os +import time + +import pytest + +from score.itf.plugins.dlt.dlt_receive import DltReceive, Protocol + +logger = logging.getLogger(__name__) + + +# Datarouter messages with Context ID "STAT" sent every ~5s hence 10s to reliably capture and verify +CAPTURE_DURATION_SECONDS = 10 + +# DLT message identifiers for datarouter statistics +APP_ID = "DR" +CTX_ID = "STAT" + +_QNX_DATAROUTER_CHECK_CMD = "/proc/boot/pidin | /proc/boot/grep datarouter" +_LINUX_DATAROUTER_CHECK_CMD = "ps -ef | grep datarouter | grep -v grep" + +# pathspace ability provides the datarouter access to the `procnto` pathname prefix space +# required for mw/com message passing with mw::log frontend +_QNX_DATAROUTER_START_CMD = ( + "cd /usr/bin && nohup on -A nonroot,allow,pathspace -u 1051:1091 " + "./datarouter --no_adaptive_runtime > /dev/null 2>&1 &" +) +_LINUX_DATAROUTER_START_CMD = ( + "cd /usr/bin && nohup ./datarouter --no_adaptive_runtime > /dev/null 2>&1 &" +) +# Multicast route directs all multicast traffic (224.0.0.0/4) out the container's +# network interface so DLT messages reach the host via the Docker bridge. +_LINUX_MULTICAST_ROUTE_CMD = ( + "ip route add 224.0.0.0/4 dev eth0 2>/dev/null || true" +) +_DATAROUTER_STARTUP_TIMEOUT_SEC = 2 + + +def _is_qnx(target): + """Detect if the target is running QNX.""" + _, out = target.execute("uname -s") + return b"QNX" in out + + +@pytest.fixture +def datarouter_running(target): + is_qnx = _is_qnx(target) + + if is_qnx: + check_cmd = _QNX_DATAROUTER_CHECK_CMD + start_cmd = _QNX_DATAROUTER_START_CMD + else: + check_cmd = _LINUX_DATAROUTER_CHECK_CMD + start_cmd = _LINUX_DATAROUTER_START_CMD + # Ensure multicast route exists for DLT message delivery + target.execute(_LINUX_MULTICAST_ROUTE_CMD) + + exit_code, out = target.execute(check_cmd) + output = out.decode(errors="replace") + + if "datarouter" not in output: + # Verify the binary exists before attempting to start + exit_code, _ = target.execute("test -x /usr/bin/datarouter") + if exit_code != 0: + pytest.fail("Datarouter binary not found at /usr/bin/datarouter on target") + + logger.info("Datarouter not running. Starting Datarouter..") + exit_code, out = target.execute(start_cmd) + logger.info("Start command exit_code=%s", exit_code) + time.sleep(_DATAROUTER_STARTUP_TIMEOUT_SEC) + + _, out = target.execute(check_cmd) + if "datarouter" not in out.decode(errors="replace"): + pytest.fail("Failed to start datarouter on target") + logger.info("Datarouter started successfully..") + else: + logger.info("Datarouter already running!") + yield + + +def test_datarouter_remote_logging(datarouter_running, dlt_config): + """Verifies remote logging of Dataraouter + + Starts Datarouter on the target if not already running, then + the dlt_receive captures DLT messages on the test host + on the multicast group for a fixed duration and checks for + expected 'STAT' log messages in the captured DTL logs. + """ + dlt_file = "/tmp/test_dlt_capture.dlt" + + # TODO: Replace with with DltWindow when fixed in ITF. + with DltReceive( + host_ip=dlt_config.host_ip, + protocol=Protocol.UDP, + file_name=dlt_file, + binary_path=dlt_config.dlt_receive_path, + multicast_ips=dlt_config.multicast_ips, + ): + time.sleep(CAPTURE_DURATION_SECONDS) + + assert os.path.exists(dlt_file), f"DLT file not created: {dlt_file}" + + with open(dlt_file, "rb") as f: + dlt_data = f.read() + + logger.debug("DLT file size: %d bytes", len(dlt_data)) + + # DLT extended header: APP-ID (4 bytes) followed by CTX-ID (4 bytes) + pattern = f"{APP_ID}\x00\x00{CTX_ID}".encode() + message_count = dlt_data.count(pattern) + + logger.info("Found %d messages with app_id=%s, context_id=%s", message_count, APP_ID, CTX_ID) + + assert message_count > 1, f"Expected atleast one DLT message, but got {message_count}" diff --git a/images/linux_x86_64/BUILD b/images/linux_x86_64/BUILD index 61ac4d1bce1..c9c5b22179d 100644 --- a/images/linux_x86_64/BUILD +++ b/images/linux_x86_64/BUILD @@ -28,11 +28,30 @@ sh_binary( }, ) +pkg_tar( + name = "datarouter_bin_tar", + srcs = ["@score_logging//score/datarouter:datarouter"], + mode = "0755", + package_dir = "/usr/bin", +) + +pkg_tar( + name = "datarouter_etc_tar", + srcs = [ + "//feature_integration_tests/configs/datarouter:etc/logging.json", + "//feature_integration_tests/configs/datarouter:etc/log-channels.json", + ], + mode = "0644", + package_dir = "/usr/bin/etc", +) + oci_image( name = "image", base = "@ubuntu_22_04", tars = [ "//showcases:showcases_pkg_tar", + ":datarouter_bin_tar", + ":datarouter_etc_tar", ], ) diff --git a/images/qnx_x86_64/build/BUILD b/images/qnx_x86_64/build/BUILD index 897ebfd791c..1bf7bb4b5c4 100644 --- a/images/qnx_x86_64/build/BUILD +++ b/images/qnx_x86_64/build/BUILD @@ -52,10 +52,13 @@ qnx_ifs( "//feature_integration_tests/configs:etc_configs", "//showcases", "@score_persistency//tests/test_scenarios/cpp:test_scenarios", + "//feature_integration_tests/configs/datarouter:etc_configs", + "@score_logging//score/datarouter:datarouter", ], build_file = "init.build", ext_repo_maping = { "BUNDLE_PATH": "$(location //showcases:showcases)", + "DATAROUTER_PATH": "$(location @score_logging//score/datarouter:datarouter)", }, visibility = [ "//visibility:public", diff --git a/images/qnx_x86_64/build/init.build b/images/qnx_x86_64/build/init.build index fdc1d273390..ce00d9df80a 100644 --- a/images/qnx_x86_64/build/init.build +++ b/images/qnx_x86_64/build/init.build @@ -14,7 +14,7 @@ ############################################################################### # -# Example image built based on minimal configuration from QNX +# Example image built based on minimal configuration from QNX # ############################################################################### @@ -25,7 +25,7 @@ # Use startup-x86 by default startup-x86 -v -D8250..115200 -zz # Start x86 kernel with verbose output, serial console at 115200 baud PATH=/proc/boot # Set executable search path to boot directory - LD_LIBRARY_PATH=/proc/boot # Set library search path to boot directory + LD_LIBRARY_PATH=/proc/boot # Set library search path to boot directory [+keeplinked] procnto-smp-instr # Keep process manager linked and instrumented for SMP } @@ -96,6 +96,6 @@ devb-eide # Block device driver for IDE/SATA hard drive # Required for mounting QNX6 file systems from disk partitions # Orchestrator example needed -[type=link] /data=/tmp_ram +[type=link] /data=/tmp_ram [+include] ${MAIN_BUILD_FILE_DIR}/system.build # Include additional system build configurations diff --git a/images/qnx_x86_64/build/system.build b/images/qnx_x86_64/build/system.build index 29e25d01cea..105d6fb2959 100644 --- a/images/qnx_x86_64/build/system.build +++ b/images/qnx_x86_64/build/system.build @@ -197,7 +197,7 @@ hostname route dhcpcd # DHCP client daemon for automatic network configuration tcpdump # Network packet capture tool for Wireshark analysis -slay +slay /usr/lib/ssh/sftp-server=${QNX_TARGET}/${PROCESSOR}/usr/libexec/sftp-server # File transfer server to enable scp ############################################# @@ -284,14 +284,10 @@ pci/pci_debug2.so # Enhanced PCI debugging support [perms=777] /scrample = ${SCRAMPLE_PATH} [perms=777] /cpp_tests_persistency = ${CPP_TEST_SCENARIOS_PATH} -############################################# -### Datarouter ### -############################################# [perms=777] /usr/bin/datarouter = ${DATAROUTER_PATH} - # Datarouter configuration files (relative to binary: ./etc/) -[perms=644] /usr/bin/etc/logging.json = datarouter_integration/etc/logging.json -[perms=644] /usr/bin/etc/log-channels.json = datarouter_integration/etc/log-channels.json +[perms=644] /usr/bin/etc/logging.json = ${MAIN_BUILD_FILE_DIR}/../../../feature_integration_tests/configs/datarouter/etc/logging.json +[perms=644] /usr/bin/etc/log-channels.json = ${MAIN_BUILD_FILE_DIR}/../../../feature_integration_tests/configs/datarouter/etc/log-channels.json # Common showcases bundle [perms=777] / = ${BUNDLE_PATH} diff --git a/images/qnx_x86_64/configs/network_setup_dhcp.sh b/images/qnx_x86_64/configs/network_setup_dhcp.sh index 785fced4199..da2b1db8b15 100644 --- a/images/qnx_x86_64/configs/network_setup_dhcp.sh +++ b/images/qnx_x86_64/configs/network_setup_dhcp.sh @@ -89,4 +89,12 @@ fi # Configure system network settings sysctl -w net.inet.icmp.bmcastecho=1 > /dev/null # Enable ICMP broadcast echo (responds to broadcast pings) +# The datarouter sends DLT messages via UDP multicast to +# '239.255.42.99:3490' (configured in log-channels.json). +# Adding multicast route via vtnet0 interface directs all +# multicast traffic ('224.0.0.0/4') out the guest network +# interface so it reaches the host via the QEMU TAP device. +echo "Adding multicast route" +route add -net 224.0.0.0 -netmask 240.0.0.0 -interface vtnet0 + echo "---> Network configuration completed"