diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 1e5c5e379..25be04e3e 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -9,32 +9,14 @@ x_defaults:
- "//..."
test_targets:
- "//..."
- linux_environment: &linux_environment
- platform: ubuntu2204
- environment:
- SWIFT_VERSION: "6.3.3"
- SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
- PATH: "$SWIFT_HOME/usr/bin:$PATH"
linux_common: &linux_common
- <<: *linux_environment
- build_flags: &linux_flags
- # On Linux, we look for Swift toolchain binaries on the path. We may be
- # able to change this when we start auto-downloading toolchains (see
- # https://github.com/bazelbuild/rules_swift/issues/4).
- - "--action_env=PATH"
+ platform: ubuntu2204
build_targets:
- "//..."
- "-//examples/apple/..."
- test_flags: *linux_flags
test_targets:
- "//..."
- "-//examples/apple/..."
- # The following tests require Swift >5.8.
- - "-//test:const_values_empty_const_values_multiple_files"
- - "-//test:const_values_empty_const_values_single_file"
- - "-//test:const_values_expected_argv"
- - "-//test:const_values_wmo_single_values_file"
- - "-//test:output_file_map_default"
windows_common: &windows_common
platform: windows
build_targets:
@@ -75,29 +57,37 @@ tasks:
ubuntu2204_latest:
name: "Current LTS"
bazel: latest
- shell_commands:
- - "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
- - "mkdir $SWIFT_HOME"
- - "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2204/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu22.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
<<: *linux_common
ubuntu2204_rolling:
name: "Latest rolling"
bazel: rolling
- shell_commands:
- - "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
- - "mkdir $SWIFT_HOME"
- - "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2204/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu22.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
<<: *linux_common
ubuntu2204_last_green:
name: "Last Green Bazel"
bazel: last_green
+ <<: *linux_common
+
+ ubuntu2204_latest_non_hermetic:
+ name: "Current LTS non-hermetic toolchain"
+ bazel: latest
+ platform: ubuntu2204
+ environment:
+ SWIFT_VERSION: "6.3.3"
+ SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
+ PATH: "$SWIFT_HOME/usr/bin:$PATH"
shell_commands:
- "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
- "mkdir $SWIFT_HOME"
- "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2204/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu22.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
- <<: *linux_common
+ build_targets:
+ - "//examples/xplatform/hello_world"
+ - "//examples/xplatform/shared_library"
+ test_targets:
+ - "//examples/xplatform/xctest:xctest"
+ - "//test/linux_static_stdlib:linux_non_hermetic_dynamic_stdlib_test"
+ - "//test/linux_static_stdlib:linux_non_hermetic_linkshared_dynamic_stdlib_test"
windows:
name: "Current LTS"
@@ -128,11 +118,7 @@ tasks:
doc_tests:
name: "Doc tests"
bazel: latest
- <<: *linux_environment
- shell_commands:
- - "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
- - "mkdir $SWIFT_HOME"
- - "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2204/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu22.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
+ platform: ubuntu2204
test_targets:
- "doc/..."
diff --git a/.bazelrc b/.bazelrc
index 07584f042..e142d002d 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -22,6 +22,9 @@ build --worker_sandboxing
build --enable_platform_specific_config
+common:macos --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
+common:linux --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
+
common --repo_env=ACCEPTED_ANDROID_NDK_LICENSE_VERSION=r27c
common --repo_env=ACCEPTED_ANDROID_SDK_LICENSE_VERSION=35
diff --git a/MODULE.bazel b/MODULE.bazel
index 6b6a74319..7995ee4f4 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -8,7 +8,8 @@ module(
)
bazel_dep(name = "abseil-cpp", version = "20250814.1")
-bazel_dep(name = "apple_support", version = "2.6.1")
+bazel_dep(name = "apple_support", version = "2.8.0")
+bazel_dep(name = "bazel_linux_packages", version = "0.4.1")
bazel_dep(name = "bazel_features", version = "1.51.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "nlohmann_json", version = "3.12.0.bcr.1")
@@ -18,6 +19,44 @@ bazel_dep(name = "rules_cc", version = "0.2.14")
bazel_dep(name = "rules_shell", version = "0.3.0")
bazel_dep(name = "swift_argument_parser", version = "1.7.0")
+# Regenerate lockfiles with:
+# bazel run @swift_ubuntu22.04_sysroot//:lock
+# bazel run @swift_ubuntu22.04_aarch64_sysroot//:lock
+apt = use_extension("@bazel_linux_packages//apt:extensions.bzl", "apt")
+apt.ubuntu(
+ name = "swift_ubuntu22.04_sysroot",
+ architectures = ["amd64"],
+ lockfile = "//swift/internal/extensions:ubuntu22.04_sysroot.lock.json",
+ packages = [
+ "libc6-dev",
+ "libcurl4-openssl-dev",
+ "libstdc++-11-dev",
+ "libxml2-dev",
+ "linux-libc-dev",
+ "zlib1g-dev",
+ ],
+ suites = ["jammy"],
+)
+apt.ubuntu(
+ name = "swift_ubuntu22.04_aarch64_sysroot",
+ architectures = ["arm64"],
+ lockfile = "//swift/internal/extensions:ubuntu22.04_aarch64_sysroot.lock.json",
+ packages = [
+ "libc6-dev",
+ "libcurl4-openssl-dev",
+ "libstdc++-11-dev",
+ "libxml2-dev",
+ "linux-libc-dev",
+ "zlib1g-dev",
+ ],
+ suites = ["jammy"],
+)
+use_repo(
+ apt,
+ "swift_ubuntu22.04_aarch64_sysroot",
+ "swift_ubuntu22.04_sysroot",
+)
+
swift_autoconfiguration = use_repo_rule("//swift/internal:swift_autoconfiguration.bzl", "swift_autoconfiguration")
swift_autoconfiguration(name = "rules_swift_local_config")
@@ -145,8 +184,6 @@ http_archive(
urls = ["https://github.com/MobileNativeFoundation/index-import/releases/download/6.1.0.1/index-import.tar.gz"],
)
-register_toolchains("//swift/toolchains:all")
-
system_sdk = use_extension("//swift:extensions.bzl", "system_sdk")
system_sdk.configure_sdks(
# NOTE: This doesn't apply to downstream repos
@@ -209,14 +246,18 @@ register_toolchains(
# Anyway, for now we will need to update this every time we update the CI environment. Contributors might also
# have to update this list if they're testing on a different Linux distribution.
"@swift_toolchain//:cc_toolchain_embedded_ubuntu22.04",
+ "@swift_toolchain//:cc_toolchain_exec_ubuntu22.04",
"@swift_toolchain//:cc_toolchain_embedded_ubuntu22.04-aarch64",
"@swift_toolchain//:cc_toolchain_embedded_xcode",
"@swift_toolchain//:swift_toolchain_embedded_ubuntu22.04",
+ "@swift_toolchain//:swift_toolchain_exec_ubuntu22.04",
"@swift_toolchain//:swift_toolchain_embedded_ubuntu22.04-aarch64",
"@swift_toolchain//:swift_toolchain_embedded_xcode",
dev_dependency = True,
)
+register_toolchains("//swift/toolchains:all")
+
include("//examples/cross_compilation/android_app:android.MODULE.bazel")
include("//examples/cross_compilation/wasm:wasm.MODULE.bazel")
diff --git a/doc/providers.md b/doc/providers.md
index 238aacb6d..abe97c9bb 100644
--- a/doc/providers.md
+++ b/doc/providers.md
@@ -268,9 +268,10 @@ SwiftToolchainInfo(action_configs
const_protocols_to_gather, cross_import_overlays, debug_outputs_provider,
developer_dirs, entry_point_linkopts_provider, feature_allowlists,
generated_header_module_implicit_deps_providers, implicit_deps_providers,
- module_aliases, package_configurations, requested_features, root_dir, runtime,
- swift_worker, system_modules, implicit_system_modules, test_configuration,
- tool_configs, unsupported_features)
+ module_aliases, package_configurations, requested_features,
+ dynamic_runtime_cc_info, root_dir, static_runtime_cc_info, swift_worker,
+ system_modules, implicit_system_modules, test_configuration, tool_configs,
+ unsupported_features)
Propagates information about a Swift toolchain to compilation and linking rules
@@ -295,8 +296,9 @@ that use the toolchain.
| module_aliases | A `SwiftModuleAliasesInfo` provider that defines the module aliases to use during compilation. |
| package_configurations | A list of `SwiftPackageConfigurationInfo` providers that specify additional compilation configuration options that are applied to targets on a per-package basis. |
| requested_features | `List` of `string`s. Features that should be implicitly enabled by default for targets built using this toolchain, unless overridden by the user by listing their negation in the `features` attribute of a target/package or in the `--features` command line flag.
These features determine various compilation and debugging behaviors of the Swift build rules, and they are also passed to the C++ APIs used when linking (so features defined in CROSSTOOL may be used here). |
+| dynamic_runtime_cc_info | The `CcInfo` that selects the toolchain's ordinary dynamic Swift runtime, or `None` if the toolchain supplies its runtime through implicit dependencies. Final links select this provider unless `swift.static_stdlib` is enabled; it is not propagated by libraries. |
| root_dir | `String`. The workspace-relative root directory of the toolchain. |
-| runtime | `List` of `File`s. Files required at runtime by compiled executables. They will be added to the input root at execution time. |
+| static_runtime_cc_info | A `CcInfo` that selects the static Swift runtime, or `None` if the toolchain does not support static Swift runtime linking. Final links select this provider when `swift.static_stdlib` is enabled; it is not propagated by libraries. |
| swift_worker | `File`. The executable representing the worker executable used to invoke the compiler and other Swift tools (for both incremental and non-incremental compiles). |
| system_modules | A `struct` with the following fields, which represent providers from targets that should be added as implicit dependencies of any compilation or linking target:
* `cc_infos`: A list of `CcInfo` providers from targets specified as the toolchain's implicit dependencies.
* `swift_infos`: A list of `SwiftInfo` providers from targets specified as the toolchain's implicit dependencies.
For ease of use, this field is never `None`; it will always be a valid `struct` containing the fields described above, even if those lists are empty. |
| implicit_system_modules | A `struct` with in the same shape as `system_modules` for the system modules that every Swift compilation implicitly requires. |
diff --git a/swift/internal/extensions/toolchain.BUILD b/swift/internal/extensions/toolchain.BUILD
index eb0ce8973..618f4e203 100644
--- a/swift/internal/extensions/toolchain.BUILD
+++ b/swift/internal/extensions/toolchain.BUILD
@@ -1,8 +1,11 @@
+load("@apple_support//toolchain:cc_toolchain.bzl", apple_support_cc_toolchain = "cc_toolchain")
load("@rules_cc//cc/toolchains:args.bzl", "cc_args")
+load("@rules_cc//cc/toolchains:feature.bzl", "cc_feature")
load("@rules_cc//cc/toolchains:make_variable.bzl", "cc_make_variable")
load("@rules_cc//cc/toolchains:tool.bzl", "cc_tool")
load("@rules_cc//cc/toolchains:tool_map.bzl", "cc_tool_map")
load("@rules_cc//cc/toolchains:toolchain.bzl", "cc_toolchain")
+load("@rules_cc//cc/toolchains/args:sysroot.bzl", "cc_sysroot")
load("@rules_swift//swift/toolchains:swift_toolchain.bzl", "swift_toolchain")
load("@rules_swift//swift/toolchains:swift_tools.bzl", "swift_tools")
@@ -11,6 +14,7 @@ package(default_visibility = ["//visibility:public"])
### Convenience target. Only useful for test / debug. ###
exports_files([
"usr/bin/llvm-objcopy",
+ "usr/bin/llvm-objdump",
])
### Tools referenced by Swift SDK cross-compilation repositories. ###
@@ -76,12 +80,32 @@ cc_tool(
cc_tool(
name = "clang",
src = "usr/bin/clang",
+ data = [":swift_sdk_linker_inputs"],
tags = ["manual"],
)
cc_tool(
name = "clang++",
src = "usr/bin/clang++",
+ data = [":swift_sdk_linker_inputs"],
+ tags = ["manual"],
+)
+
+cc_tool(
+ name = "llvm_cov",
+ src = "usr/bin/llvm-cov",
+ tags = ["manual"],
+)
+
+cc_tool(
+ name = "llvm_objcopy",
+ src = "usr/bin/llvm-objcopy",
+ tags = ["manual"],
+)
+
+cc_tool(
+ name = "llvm_profdata",
+ src = "usr/bin/llvm-profdata",
tags = ["manual"],
)
@@ -93,10 +117,86 @@ cc_tool_map(
"@rules_cc//cc/toolchains/actions:assembly_actions": ":clang",
"@rules_cc//cc/toolchains/actions:c_compile": ":clang",
"@rules_cc//cc/toolchains/actions:cpp_compile_actions": ":clang++",
- "@rules_cc//cc/toolchains/actions:link_actions": ":clang",
+ "@rules_cc//cc/toolchains/actions:link_actions": ":clang++",
+ "@rules_cc//cc/toolchains/actions:llvm_cov": ":llvm_cov",
+ "@rules_cc//cc/toolchains/actions:llvm_profdata": ":llvm_profdata",
+ "@rules_cc//cc/toolchains/actions:objcopy_embed_data": ":llvm_objcopy",
+ "@rules_cc//cc/toolchains/actions:strip": ":llvm_objcopy",
},
)
+cc_sysroot(
+ name = "linux_aarch64_sysroot_args",
+ actions = [
+ "@rules_cc//cc/toolchains/actions:link_actions",
+ "@rules_cc//cc/toolchains/actions:compile_actions",
+ ],
+ data = ["@swift_ubuntu22.04_aarch64_sysroot//:root"],
+ sysroot = "@swift_ubuntu22.04_aarch64_sysroot//:root",
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+cc_feature(
+ name = "linux_aarch64_sysroot",
+ args = [":linux_aarch64_sysroot_args"],
+ feature_name = "sysroot",
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+cc_sysroot(
+ name = "linux_x86_64_sysroot_args",
+ actions = [
+ "@rules_cc//cc/toolchains/actions:link_actions",
+ "@rules_cc//cc/toolchains/actions:compile_actions",
+ ],
+ data = ["@swift_ubuntu22.04_sysroot//:root"],
+ sysroot = "@swift_ubuntu22.04_sysroot//:root",
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+cc_feature(
+ name = "linux_x86_64_sysroot",
+ args = [":linux_x86_64_sysroot_args"],
+ feature_name = "sysroot",
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+alias(
+ name = "linux_sysroot",
+ actual = select({
+ "@platforms//cpu:aarch64": ":linux_aarch64_sysroot",
+ "@platforms//cpu:x86_64": ":linux_x86_64_sysroot",
+ }),
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+alias(
+ name = "selected_linux_sysroot_feature",
+ actual = select({
+ "@rules_swift//swift/toolchains:linux_sysroot_feature_is_default": ":linux_sysroot",
+ "//conditions:default": "@rules_swift//swift/toolchains:linux_sysroot_feature",
+ }),
+ tags = ["manual"],
+ visibility = ["//visibility:private"],
+)
+
+apple_support_cc_toolchain(
+ name = "cc_toolchain_exec",
+ module_map = None,
+ supports_header_parsing = False,
+ sysroot_feature = ":selected_linux_sysroot_feature",
+ target = select({
+ "@platforms//cpu:aarch64": "aarch64-unknown-linux-gnu",
+ "@platforms//cpu:x86_64": "x86_64-unknown-linux-gnu",
+ }),
+ tool_map = ":all_tools",
+)
+
### Make variables ###
# Used in _swift_toolchain_impl() in swift/toolchain/swift_toolchain.bzl
cc_make_variable(
@@ -223,23 +323,42 @@ swift_toolchain(
"@platforms//cpu:aarch64": "aarch64",
"@platforms//cpu:x86_64": "x86_64",
}),
+ dynamic_runtime = glob(
+ [
+ "usr/lib/swift/linux/*.so*",
+ "usr/lib/swift/macosx/*.dylib",
+ ],
+ allow_empty = True,
+ ),
features = [
"swift._supports_upcoming_features",
"swift.no_embed_debug_module",
"swift.use_autolink_extract",
+ "swift.lld_gc_workaround",
+ "swift.use_module_wrap",
+ # TODO: This should be removed so that private headers can be used with
+ # explicit modules, but the build targets for CgRPC need to be cleaned up
+ # first because they contain C++ code.
+ "swift.module_map_no_private_headers",
],
os = select({
"@platforms//os:linux": "linux",
"@platforms//os:macos": "macos",
}),
parsed_version = "{swift_version}",
- runtime = glob(
- [
- "usr/lib/swift/**/*.dylib", # On MacOS
- "usr/lib/swift/**/*.so", # On Linux
- ],
- allow_empty = True,
- ),
+ static_runtime = select({
+ "@platforms//os:linux": glob(
+ [
+ "usr/lib/swift/linux/*.a",
+ "usr/lib/swift_static/linux/*.a",
+ "usr/lib/swift_static/linux/*.lnk",
+ "usr/lib/swift_static/linux/*/*.o",
+ ],
+ # NOTE: This shouldn't ever be empty but fails when this select() isn't even hit
+ allow_empty = True,
+ ),
+ "//conditions:default": [],
+ }),
swift_tools = "tools",
version_file = ".swift-version",
)
diff --git a/swift/internal/extensions/toolchains.bzl b/swift/internal/extensions/toolchains.bzl
index cb6916ba7..b43ca81ba 100644
--- a/swift/internal/extensions/toolchains.bzl
+++ b/swift/internal/extensions/toolchains.bzl
@@ -43,6 +43,18 @@ toolchain(
"""
+_CC_EXEC_TOOLCHAIN_PLATFORM = """
+# C++ exec toolchain from repository: `{toolchain_repository}`
+toolchain(
+ name = "cc_toolchain_exec_{platform}",
+ exec_compatible_with = {exec_compatible_with},
+ target_compatible_with = {exec_compatible_with},
+ toolchain = "@{toolchain_repository}//:cc_toolchain_exec",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+ visibility = ["//visibility:public"],
+)
+"""
+
_SDK_TOOLCHAIN_PLATFORM = """
# Swift SDK toolchain from repository: `{sdk_repository}`
toolchain(
@@ -94,12 +106,25 @@ def _exec_compatible_with_for_platform(platform):
]
def toolchains_for_platform(platform, toolchain_repository):
- return _TOOLCHAIN_PLATFORM.format(
+ content = _TOOLCHAIN_PLATFORM.format(
exec_compatible_with = _exec_compatible_with_for_platform(platform),
platform = platform,
toolchain_repository = toolchain_repository,
)
+ if platform in (
+ "ubuntu22.04",
+ "ubuntu22.04-aarch64",
+ "ubuntu24.04",
+ "ubuntu24.04-aarch64",
+ ):
+ content += _CC_EXEC_TOOLCHAIN_PLATFORM.format(
+ exec_compatible_with = _exec_compatible_with_for_platform(platform),
+ platform = platform,
+ toolchain_repository = toolchain_repository,
+ )
+ return content
+
def android_sdk_toolchains_for_platform(platform, sdk_repository, archs):
"""Returns Swift `toolchain` declarations for an Android Swift SDK.
diff --git a/swift/internal/extensions/ubuntu22.04_aarch64_sysroot.lock.json b/swift/internal/extensions/ubuntu22.04_aarch64_sysroot.lock.json
new file mode 100644
index 000000000..8b85c636e
--- /dev/null
+++ b/swift/internal/extensions/ubuntu22.04_aarch64_sysroot.lock.json
@@ -0,0 +1,1587 @@
+{
+ "input_data": {
+ "architectures": [
+ "arm64"
+ ],
+ "packages": [
+ "libc6-dev",
+ "libcurl4-openssl-dev",
+ "libstdc++-11-dev",
+ "libxml2-dev",
+ "linux-libc-dev",
+ "zlib1g-dev"
+ ],
+ "sources": [
+ {
+ "architectures": [
+ "arm64"
+ ],
+ "components": [
+ "main"
+ ],
+ "suites": [
+ "jammy"
+ ],
+ "uri": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z"
+ }
+ ]
+ },
+ "packages": [
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "sha256": "395a65b3a9539304391456d4d0e5531f4249f297b6e67eb0fcaf2ff77ddc3dc3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/debconf/debconf_1.5.79ubuntu1_all.deb",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "sha256": "d89a8b9a77ab893ff02bc794e84dbcc4729b84011f7170f6998bb1acee421274",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/dpkg/dpkg_1.21.1ubuntu2_arm64.deb",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "gcc-11-base_11.2.0-19ubuntu1_arm64",
+ "name": "gcc-11-base",
+ "sha256": "aa7cf600950715d8ab9c5eaee72700055ce5ccf741c48617ef0e7a9762992b5d",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/gcc-11-base_11.2.0-19ubuntu1_arm64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "sha256": "5c6e7eb37d4e088e930b2119b0fbd4baf0bef59a2cf9aff4503573d60ddeef29",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/gcc-12-base_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "icu-devtools_70.1-2_arm64",
+ "name": "icu-devtools",
+ "sha256": "541fcb9e8c1aeb6dd2590489507adf88a80d9d23a5ffb8c0649bdce2a5e906e4",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/icu-devtools_70.1-2_arm64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "sha256": "328e91b2d6e8ee44ad669fc7276b74f208bc781baf1ecdd7dbf5f092f8b41712",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/a/acl/libacl1_2.3.1-1_arm64.deb",
+ "version": "2.3.1-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libasan6_11.2.0-19ubuntu1_arm64",
+ "name": "libasan6",
+ "sha256": "d16c5f39926e471c4af08a16a1c1990c05b18f5f61dfad8bd430388175bc1359",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libasan6_11.2.0-19ubuntu1_arm64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libatomic1_12-20220319-1ubuntu1_arm64",
+ "name": "libatomic1",
+ "sha256": "cad7d920e727ca5db7bb1d396c205a4f27435971c8121590726c8b80cfdc55d9",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libatomic1_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libbrotli1_1.0.9-2build6_arm64",
+ "name": "libbrotli1",
+ "sha256": "6ce71a1452d7ec3ed2404db11a4d0aea1326b8fa9bb904493b49ff873b70d6a5",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/b/brotli/libbrotli1_1.0.9-2build6_arm64.deb",
+ "version": "1.0.9-2build6"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "sha256": "30fe3f2d662bb1c87a4b77e5b8f17a67dfcadfec319d0da2ece6cba98f9f8cb5",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/b/bzip2/libbz2-1.0_1.0.8-5build1_arm64.deb",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libc-dev-bin_2.35-0ubuntu3_arm64",
+ "name": "libc-dev-bin",
+ "sha256": "b86ef82ee4eddb805c5933babf30831d1cce42b4a2fe9cef7d25bda3b8dc0a0b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc-dev-bin_2.35-0ubuntu3_arm64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_arm64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_arm64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_arm64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_arm64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_arm64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_arm64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_arm64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_arm64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_arm64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libc6-dev_2.35-0ubuntu3_arm64",
+ "name": "libc6-dev",
+ "sha256": "2f254d6e843e413d549f407362885171c285f08383bb7e9392da855810ff78fd",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc6-dev_2.35-0ubuntu3_arm64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "sha256": "b1206b51690a810efc701e1d311e0ac5fd9a9f0f8e216585362512d805d261af",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc6_2.35-0ubuntu3_arm64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "sha256": "07f5b417e636610c83d95e408f55ca6e2e8cf44649b8cd7c6dcab2c8078b6214",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2ubuntu1_arm64.deb",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libcrypt-dev_1-4.4.27-1_arm64",
+ "name": "libcrypt-dev",
+ "sha256": "17805b64d386655edca4aafbf01e6b89bd3b9a35cde7a31da964dd766ad9c5b6",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.27-1_arm64.deb",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "sha256": "fb5f8d59de95bbb118a635e83e2a92077e13c6d297980dae3119df057bf88111",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxcrypt/libcrypt1_4.4.27-1_arm64.deb",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbrotli1_1.0.9-2build6_arm64",
+ "name": "libbrotli1",
+ "version": "1.0.9-2build6"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcurl4_7.81.0-1_arm64",
+ "name": "libcurl4",
+ "version": "7.81.0-1"
+ },
+ {
+ "key": "libdb5.3_5.3.28-p-dfsg1-0.8ubuntu3_arm64",
+ "name": "libdb5.3",
+ "version": "5.3.28+dfsg1-0.8ubuntu3"
+ },
+ {
+ "key": "libffi8_3.4.2-4_arm64",
+ "name": "libffi8",
+ "version": "3.4.2-4"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgmp10_2-6.2.1-p-dfsg-3ubuntu1_arm64",
+ "name": "libgmp10",
+ "version": "2:6.2.1+dfsg-3ubuntu1"
+ },
+ {
+ "key": "libgnutls30_3.7.3-4ubuntu1_arm64",
+ "name": "libgnutls30",
+ "version": "3.7.3-4ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libhogweed6_3.7.3-1build2_arm64",
+ "name": "libhogweed6",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "key": "libidn2-0_2.3.2-2build1_arm64",
+ "name": "libidn2-0",
+ "version": "2.3.2-2build1"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libldap-2.5-0_2.5.11-p-dfsg-1_exp1ubuntu3_arm64",
+ "name": "libldap-2.5-0",
+ "version": "2.5.11+dfsg-1~exp1ubuntu3"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnettle8_3.7.3-1build2_arm64",
+ "name": "libnettle8",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "key": "libnghttp2-14_1.43.0-1build3_arm64",
+ "name": "libnghttp2-14",
+ "version": "1.43.0-1build3"
+ },
+ {
+ "key": "libp11-kit0_0.24.0-6build1_arm64",
+ "name": "libp11-kit0",
+ "version": "0.24.0-6build1"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libpsl5_0.21.0-1.2build2_arm64",
+ "name": "libpsl5",
+ "version": "0.21.0-1.2build2"
+ },
+ {
+ "key": "librtmp1_2.4-p-20151223.gitfa8646d.1-2build4_arm64",
+ "name": "librtmp1",
+ "version": "2.4+20151223.gitfa8646d.1-2build4"
+ },
+ {
+ "key": "libsasl2-2_2.1.27-p-dfsg2-3ubuntu1_arm64",
+ "name": "libsasl2-2",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "key": "libsasl2-modules-db_2.1.27-p-dfsg2-3ubuntu1_arm64",
+ "name": "libsasl2-modules-db",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssh-4_0.9.6-2build1_arm64",
+ "name": "libssh-4",
+ "version": "0.9.6-2build1"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtasn1-6_4.18.0-4build1_arm64",
+ "name": "libtasn1-6",
+ "version": "4.18.0-4build1"
+ },
+ {
+ "key": "libunistring2_1.0-1_arm64",
+ "name": "libunistring2",
+ "version": "1.0-1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libcurl4-openssl-dev_7.81.0-1_arm64",
+ "name": "libcurl4-openssl-dev",
+ "sha256": "29334327ab7a957490128fb3ca413f4914c6cdf26ef03e39b9fc28fa2b82c056",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/curl/libcurl4-openssl-dev_7.81.0-1_arm64.deb",
+ "version": "7.81.0-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libcurl4_7.81.0-1_arm64",
+ "name": "libcurl4",
+ "sha256": "5dc16620cc8a408502273092fecfeed4d66724c472d07775a631d72d0d46851d",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/curl/libcurl4_7.81.0-1_arm64.deb",
+ "version": "7.81.0-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libdb5.3_5.3.28-p-dfsg1-0.8ubuntu3_arm64",
+ "name": "libdb5.3",
+ "sha256": "e5b672aeaca690b3b7ee97b03dbc07ddb49be7b6ea0a770fa6707666ca1cef59",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8ubuntu3_arm64.deb",
+ "version": "5.3.28+dfsg1-0.8ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libffi8_3.4.2-4_arm64",
+ "name": "libffi8",
+ "sha256": "a0cdf938e8da19bd2252c681f80268609a32d06496a1f8d0ebe1fa41debec697",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libf/libffi/libffi8_3.4.2-4_arm64.deb",
+ "version": "3.4.2-4"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgcc-11-dev_11.2.0-19ubuntu1_arm64",
+ "name": "libgcc-11-dev",
+ "sha256": "ce742ecc7426fb2dd0bfc86365a7419a5c7e2aaed9c3faad9e400a1f1f7e89b1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libgcc-11-dev_11.2.0-19ubuntu1_arm64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "sha256": "b6e9a39b0ef3302053734e3a5e52ef12151566bb42d625feab7a502b3071c13b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libgcc-s1_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgmp10_2-6.2.1-p-dfsg-3ubuntu1_arm64",
+ "name": "libgmp10",
+ "sha256": "32233a3bf7c8b19e86ef3629334f0bece716bb163605d12e0d3a443d57a401d7",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-3ubuntu1_arm64.deb",
+ "version": "2:6.2.1+dfsg-3ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgnutls30_3.7.3-4ubuntu1_arm64",
+ "name": "libgnutls30",
+ "sha256": "72efd84cbba66adf128b8c6456add70c21ca7d558adf540b404e2ad895716f30",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gnutls28/libgnutls30_3.7.3-4ubuntu1_arm64.deb",
+ "version": "3.7.3-4ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgomp1_12-20220319-1ubuntu1_arm64",
+ "name": "libgomp1",
+ "sha256": "c1719335234ccdef7558e97b37b1f6baf069911ce2f26d2789336051a7c929cd",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libgomp1_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "sha256": "2d254fe8e03ce9cb375649cb3eb7a1dc2ffb9fd906eb01c2077679c3283d9343",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libgssapi-krb5-2_1.19.2-2_arm64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libhogweed6_3.7.3-1build2_arm64",
+ "name": "libhogweed6",
+ "sha256": "844e5d093dd3982a85c134d47a9e22b129123fb817eb3eea96e936805b0f5170",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nettle/libhogweed6_3.7.3-1build2_arm64.deb",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libhwasan0_12-20220319-1ubuntu1_arm64",
+ "name": "libhwasan0",
+ "sha256": "417397b8ff93f0d9c20f6326a50ba707385475967e4a5e88f9ba5b5c10bdabe0",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libhwasan0_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libicu-dev_70.1-2_arm64",
+ "name": "libicu-dev",
+ "sha256": "5e0609095ce643b4a18e14a2c9852b13fba37e30e7b7e70a2ee2aebaa60008d8",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/libicu-dev_70.1-2_arm64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libicu70_70.1-2_arm64",
+ "name": "libicu70",
+ "sha256": "ac68372cf4a976e6a206858fd9b28c68e49d37d650b9b8653270038a6e7bc174",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/libicu70_70.1-2_arm64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libidn2-0_2.3.2-2build1_arm64",
+ "name": "libidn2-0",
+ "sha256": "aeb29cc8deedc0710a97e44088ef0271dfe1197e77c0a0fc0c5602e14aeb938f",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2build1_arm64.deb",
+ "version": "2.3.2-2build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libitm1_12-20220319-1ubuntu1_arm64",
+ "name": "libitm1",
+ "sha256": "ca09b62b719c47f7acf3374b51ba02989a2004ab30e7acc0712fec78af2f149a",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libitm1_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "sha256": "638a6cf1624d045d0df1e0d693c349ea7c60cfa571f8ee05573b621d36a047ae",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libk5crypto3_1.19.2-2_arm64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "sha256": "fc26b34c487ea5187585ee0f2c67c738b97e8bae434cca4b546d86743b9e6c80",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2ubuntu3_arm64.deb",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "sha256": "1c638ecff15987115408c4b16715ee1bdb5fe2acf9b15146566f3cbafbe13c6c",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libkrb5-3_1.19.2-2_arm64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "sha256": "379e96322c8288bdc6355c487e07a8bad82bc990ac75011e4f6e475603bede59",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libkrb5support0_1.19.2-2_arm64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libldap-2.5-0_2.5.11-p-dfsg-1_exp1ubuntu3_arm64",
+ "name": "libldap-2.5-0",
+ "sha256": "72c54266fe0f2d4653165af6bb96da555edc2394e32212a207539378e80479d3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/o/openldap/libldap-2.5-0_2.5.11+dfsg-1~exp1ubuntu3_arm64.deb",
+ "version": "2.5.11+dfsg-1~exp1ubuntu3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "liblsan0_12-20220319-1ubuntu1_arm64",
+ "name": "liblsan0",
+ "sha256": "640f037dd93f2b49b5920a8b43feadc2290948daa9cdee3f653bc7f894e8a8fa",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/liblsan0_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "sha256": "21f64a20db61954e19ecdd2641d9aace2617b2bf3d55267184e2405d4bd65fdb",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/x/xz-utils/liblzma5_5.2.5-2ubuntu1_arm64.deb",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libnettle8_3.7.3-1build2_arm64",
+ "name": "libnettle8",
+ "sha256": "bcd667d9a51c2474f7ffc52807ab4a24f8b877b6da1a6f5b75e50e48ec4d634a",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nettle/libnettle8_3.7.3-1build2_arm64.deb",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libnghttp2-14_1.43.0-1build3_arm64",
+ "name": "libnghttp2-14",
+ "sha256": "b1786c51d6b2fbd9386175fa61c633f22746ebf6143ff6bc08659c44a4e688a4",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1build3_arm64.deb",
+ "version": "1.43.0-1build3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libnsl-dev_1.3.0-2build2_arm64",
+ "name": "libnsl-dev",
+ "sha256": "4a111ee814455ebf4db3be9caec555752315048cb5ec9c4c076fe3f00da22ec9",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libn/libnsl/libnsl-dev_1.3.0-2build2_arm64.deb",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libnsl2_1.3.0-2build2_arm64",
+ "name": "libnsl2",
+ "sha256": "ab2e58eed36da75635f248fad08a2dd3fbe92c9d1f5e44eb68a99db083e9a9c3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libn/libnsl/libnsl2_1.3.0-2build2_arm64.deb",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libp11-kit0_0.24.0-6build1_arm64",
+ "name": "libp11-kit0",
+ "sha256": "541bdd2f81d5caaa83465c1b524ed94e8e5851eba5469a8dce23b92e8e90a0cc",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/p11-kit/libp11-kit0_0.24.0-6build1_arm64.deb",
+ "version": "0.24.0-6build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "sha256": "ea4b84517ececbbafb3745a38e5af8af14ad9c993664fd07617c7d3a0e135cae",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/pcre2/libpcre2-8-0_10.39-3build1_arm64.deb",
+ "version": "10.39-3build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libpsl5_0.21.0-1.2build2_arm64",
+ "name": "libpsl5",
+ "sha256": "8439cc8b11a848f91746c27b76bf55d0426d07fa4146e4bc3bc2d3e74ed7ab9e",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2build2_arm64.deb",
+ "version": "0.21.0-1.2build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "librtmp1_2.4-p-20151223.gitfa8646d.1-2build4_arm64",
+ "name": "librtmp1",
+ "sha256": "f3b867a5a81382f8edcabfd3415465158eb952f018f960090141b5e188b8b28c",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2build4_arm64.deb",
+ "version": "2.4+20151223.gitfa8646d.1-2build4"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libsasl2-2_2.1.27-p-dfsg2-3ubuntu1_arm64",
+ "name": "libsasl2-2",
+ "sha256": "2e5c81e184d7db5d3405ae0b77ec46dd6d6bd05875026cf36f9470724daa1224",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg2-3ubuntu1_arm64.deb",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libsasl2-modules-db_2.1.27-p-dfsg2-3ubuntu1_arm64",
+ "name": "libsasl2-modules-db",
+ "sha256": "42d1810d60f9a3ec9982180ecfa03a0317fccc42b0b512b7470161b3f75f8365",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.27+dfsg2-3ubuntu1_arm64.deb",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "sha256": "3a0726b2174a40fa28e74712867aa6e40d3d725543e8f668af9e9e59a28c817c",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libs/libselinux/libselinux1_3.3-1build2_arm64.deb",
+ "version": "3.3-1build2"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libssh-4_0.9.6-2build1_arm64",
+ "name": "libssh-4",
+ "sha256": "81795ea7e841fc6389499bcabafb42fa2dffd293a243e0ab8f825be868be347b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libs/libssh/libssh-4_0.9.6-2build1_arm64.deb",
+ "version": "0.9.6-2build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "sha256": "9af0616c9fbb2c843892b203bc3306587ced1555be24dff154c768cdf27dfe2a",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/o/openssl/libssl3_3.0.2-0ubuntu1_arm64.deb",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-11-base_11.2.0-19ubuntu1_arm64",
+ "name": "gcc-11-base",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libasan6_11.2.0-19ubuntu1_arm64",
+ "name": "libasan6",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libatomic1_12-20220319-1ubuntu1_arm64",
+ "name": "libatomic1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_arm64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_arm64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_arm64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-11-dev_11.2.0-19ubuntu1_arm64",
+ "name": "libgcc-11-dev",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgomp1_12-20220319-1ubuntu1_arm64",
+ "name": "libgomp1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libhwasan0_12-20220319-1ubuntu1_arm64",
+ "name": "libhwasan0",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libitm1_12-20220319-1ubuntu1_arm64",
+ "name": "libitm1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblsan0_12-20220319-1ubuntu1_arm64",
+ "name": "liblsan0",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_arm64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_arm64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_arm64",
+ "name": "libstdc++6",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_arm64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_arm64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_arm64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtsan0_11.2.0-19ubuntu1_arm64",
+ "name": "libtsan0",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libubsan1_12-20220319-1ubuntu1_arm64",
+ "name": "libubsan1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_arm64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_arm64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libstdc-p--p--11-dev_11.2.0-19ubuntu1_arm64",
+ "name": "libstdc++-11-dev",
+ "sha256": "4ee878910f92c6ecf70ad61cb4377502713dbb2315bba855d18c5ea751f9ec77",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libstdc++-11-dev_11.2.0-19ubuntu1_arm64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_arm64",
+ "name": "libstdc++6",
+ "sha256": "d9903f1cf4e3c0a74e0bd2f7c65e673c104833cfaaab370d3f2114ffd06728f3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libstdc++6_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libtasn1-6_4.18.0-4build1_arm64",
+ "name": "libtasn1-6",
+ "sha256": "702c494ab69df04a313d0942620209662c3a4b221b81e24d4137cd0b27a394aa",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtasn1-6/libtasn1-6_4.18.0-4build1_arm64.deb",
+ "version": "4.18.0-4build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libtirpc-common_1.3.2-2build1_arm64",
+ "name": "libtirpc-common",
+ "sha256": "a2746e8c1ae8b1ced2312304e8bd5e3aaabd504377480e743b0edff7b96da6fa",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc-common_1.3.2-2build1_all.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libtirpc-dev_1.3.2-2build1_arm64",
+ "name": "libtirpc-dev",
+ "sha256": "1d4f7f96fe5a79abd0c503bff0295f5d9292e425d8ca7ef75babe6bdff04b1f7",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc-dev_1.3.2-2build1_arm64.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libtirpc3_1.3.2-2build1_arm64",
+ "name": "libtirpc3",
+ "sha256": "4dbb563610856ff20f2261dd0d69a7c200b6f0995c741639cb0b8bc43282a94b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2build1_arm64.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libtsan0_11.2.0-19ubuntu1_arm64",
+ "name": "libtsan0",
+ "sha256": "10998c3eee8ab807977a75280a64672426a8d3784df268ea22845a3033c16ce3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libtsan0_11.2.0-19ubuntu1_arm64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libubsan1_12-20220319-1ubuntu1_arm64",
+ "name": "libubsan1",
+ "sha256": "1d27157b7ebd23a32e66aebbd44de13bd88eba1347f649038c7bec528ebb116f",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libubsan1_12-20220319-1ubuntu1_arm64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libunistring2_1.0-1_arm64",
+ "name": "libunistring2",
+ "sha256": "59e4af5c1fac70d1fbc19f3c732331ace8449f1f7112887e7b56b8370bd8942b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libu/libunistring/libunistring2_1.0-1_arm64.deb",
+ "version": "1.0-1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "icu-devtools_70.1-2_arm64",
+ "name": "icu-devtools",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_arm64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_arm64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_arm64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libicu-dev_70.1-2_arm64",
+ "name": "libicu-dev",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libicu70_70.1-2_arm64",
+ "name": "libicu70",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_arm64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_arm64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_arm64",
+ "name": "libstdc++6",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_arm64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_arm64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_arm64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libxml2_2.9.13-p-dfsg-1build1_arm64",
+ "name": "libxml2",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_arm64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_arm64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libxml2-dev_2.9.13-p-dfsg-1build1_arm64",
+ "name": "libxml2-dev",
+ "sha256": "d53c78fb0617e75364a8c6647c80e24fcd793a05e273879a27d83a7dfed86b97",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxml2/libxml2-dev_2.9.13+dfsg-1build1_arm64.deb",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libxml2_2.9.13-p-dfsg-1build1_arm64",
+ "name": "libxml2",
+ "sha256": "85ec6ee7d1169c825beba2a30bbb3b37974b286d0284c69882de12b4eeb6c99b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxml2/libxml2_2.9.13+dfsg-1build1_arm64.deb",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "sha256": "0102eb80384c2432c4be819663341a1c4e511d05f13ec1467643696531ec6491",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-3build1_arm64.deb",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "linux-libc-dev_5.15.0-25.25_arm64",
+ "name": "linux-libc-dev",
+ "sha256": "ffbdfcd181d87b92c108cb49ca20e152c0688825b5a1aac9ecbc63391b348aeb",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/l/linux/linux-libc-dev_5.15.0-25.25_arm64.deb",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "sha256": "933e7ad3b97fd09d2b0ec763ee3b04500a3c6699c644405ad1cb2f9818d713cd",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/perl/perl-base_5.34.0-3ubuntu1_arm64.deb",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_arm64",
+ "name": "rpcsvc-proto",
+ "sha256": "07e79aa5de920bbb123d9590cdb2add2a8ec366864d7403794741db604698376",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/r/rpcsvc-proto/rpcsvc-proto_1.4.2-0ubuntu6_arm64.deb",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "sha256": "328da7dfc33aafcd410c472410070abd31c9e7acd291cac0f6e03a8396746f33",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/t/tar/tar_1.34+dfsg-1build3_arm64.deb",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_arm64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_arm64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_arm64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_arm64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_arm64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_arm64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_arm64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_arm64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_arm64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_arm64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_arm64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_arm64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_arm64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_arm64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_arm64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_arm64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_arm64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_arm64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_arm64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_arm64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_arm64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_arm64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_arm64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_arm64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_arm64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_arm64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_arm64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_arm64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_arm64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_arm64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_arm64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "zlib1g-dev_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g-dev",
+ "sha256": "2293f3feacd87c471468b36b09f58deec22f74a861bf39265884c3b7b353bea3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2ubuntu9_arm64.deb",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ },
+ {
+ "arch": "arm64",
+ "dependencies": [],
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_arm64",
+ "name": "zlib1g",
+ "sha256": "597820b01a8b019d04c9f9db2cad80d9d0ed93d39770066bd833e362c526b345",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2ubuntu9_arm64.deb",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "version": 2
+}
\ No newline at end of file
diff --git a/swift/internal/extensions/ubuntu22.04_sysroot.lock.json b/swift/internal/extensions/ubuntu22.04_sysroot.lock.json
new file mode 100644
index 000000000..b32127100
--- /dev/null
+++ b/swift/internal/extensions/ubuntu22.04_sysroot.lock.json
@@ -0,0 +1,1587 @@
+{
+ "input_data": {
+ "architectures": [
+ "amd64"
+ ],
+ "packages": [
+ "libc6-dev",
+ "libcurl4-openssl-dev",
+ "libstdc++-11-dev",
+ "libxml2-dev",
+ "linux-libc-dev",
+ "zlib1g-dev"
+ ],
+ "sources": [
+ {
+ "architectures": [
+ "amd64"
+ ],
+ "components": [
+ "main"
+ ],
+ "suites": [
+ "jammy"
+ ],
+ "uri": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z"
+ }
+ ]
+ },
+ "packages": [
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "sha256": "395a65b3a9539304391456d4d0e5531f4249f297b6e67eb0fcaf2ff77ddc3dc3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/debconf/debconf_1.5.79ubuntu1_all.deb",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "sha256": "457a683c3209ac30338461b0f3f7641879a4ce15adff15fbcbc20f3430d0c84b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/dpkg/dpkg_1.21.1ubuntu2_amd64.deb",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "gcc-11-base_11.2.0-19ubuntu1_amd64",
+ "name": "gcc-11-base",
+ "sha256": "db854b9af0f94eded5039830177f57a5b2d529f76e2b5b0de8ec0b26f7aedc83",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/gcc-11-base_11.2.0-19ubuntu1_amd64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "sha256": "37990a768ecb1b40ce87c12fb7c7994877bb1256bde286c8e9bf5d4b51a17ca9",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/gcc-12-base_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "icu-devtools_70.1-2_amd64",
+ "name": "icu-devtools",
+ "sha256": "a8e7cd16ec3c16f60e09da169b2d4d664e5ddda49021a95e6e7a39402b9724ff",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/icu-devtools_70.1-2_amd64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "sha256": "4db2c64ec74f673ed022e92cce7b83d0cbe0b779e02ca60a56ba59ae07754e05",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/a/acl/libacl1_2.3.1-1_amd64.deb",
+ "version": "2.3.1-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libasan6_11.2.0-19ubuntu1_amd64",
+ "name": "libasan6",
+ "sha256": "94d9f1889bdec4aef6a37f8afd84346e1bcdaa65c158f5647b09781c1f4401e4",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libasan6_11.2.0-19ubuntu1_amd64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libatomic1_12-20220319-1ubuntu1_amd64",
+ "name": "libatomic1",
+ "sha256": "38ca3edf9a5f7e0a8ee143b65b2671903427de607afd8de9d9fc8aff63844dc6",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libatomic1_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libbrotli1_1.0.9-2build6_amd64",
+ "name": "libbrotli1",
+ "sha256": "8e6aa2dfd44df287b9fb227862f3b6062ec074dd39a247874edfe12e1dcc3841",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/b/brotli/libbrotli1_1.0.9-2build6_amd64.deb",
+ "version": "1.0.9-2build6"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "sha256": "3bfeaf4259eadbb7faa09feee86cd6cad172cd95907d7465afd0eb5aebb5433f",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/b/bzip2/libbz2-1.0_1.0.8-5build1_amd64.deb",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libc-dev-bin_2.35-0ubuntu3_amd64",
+ "name": "libc-dev-bin",
+ "sha256": "cddecdf2fd0c1632295cb44b5031ae5f0d992541c7dc0ff7b62a5eea61dc2a05",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc-dev-bin_2.35-0ubuntu3_amd64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_amd64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_amd64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_amd64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_amd64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_amd64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_amd64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_amd64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_amd64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_amd64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libc6-dev_2.35-0ubuntu3_amd64",
+ "name": "libc6-dev",
+ "sha256": "cc37cab5c60bcfe4bbf289a8002f369949a41ed46e8b51a0503a001099370c56",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc6-dev_2.35-0ubuntu3_amd64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "sha256": "ea9a27e0ebdd0cfc9c750d94f8074f3a35d1f97dcc77ae04c370fb498a6b6db2",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/glibc/libc6_2.35-0ubuntu3_amd64.deb",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "sha256": "fee39a879c6f2f08a7f522c75ad71e18ee6ffafe056fb781336a7dd001ecd7a4",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2ubuntu1_amd64.deb",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libcrypt-dev_1-4.4.27-1_amd64",
+ "name": "libcrypt-dev",
+ "sha256": "a79be2f6e45823dcc09e04d5e98c88ec88d07d5b8895d05b875a8ade8b345efa",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.27-1_amd64.deb",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "sha256": "3fa566e9f861a08736cbc5a97562d9d6e4f0c00450fbeafcb6d7583423b04a98",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxcrypt/libcrypt1_4.4.27-1_amd64.deb",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbrotli1_1.0.9-2build6_amd64",
+ "name": "libbrotli1",
+ "version": "1.0.9-2build6"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcurl4_7.81.0-1_amd64",
+ "name": "libcurl4",
+ "version": "7.81.0-1"
+ },
+ {
+ "key": "libdb5.3_5.3.28-p-dfsg1-0.8ubuntu3_amd64",
+ "name": "libdb5.3",
+ "version": "5.3.28+dfsg1-0.8ubuntu3"
+ },
+ {
+ "key": "libffi8_3.4.2-4_amd64",
+ "name": "libffi8",
+ "version": "3.4.2-4"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgmp10_2-6.2.1-p-dfsg-3ubuntu1_amd64",
+ "name": "libgmp10",
+ "version": "2:6.2.1+dfsg-3ubuntu1"
+ },
+ {
+ "key": "libgnutls30_3.7.3-4ubuntu1_amd64",
+ "name": "libgnutls30",
+ "version": "3.7.3-4ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libhogweed6_3.7.3-1build2_amd64",
+ "name": "libhogweed6",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "key": "libidn2-0_2.3.2-2build1_amd64",
+ "name": "libidn2-0",
+ "version": "2.3.2-2build1"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libldap-2.5-0_2.5.11-p-dfsg-1_exp1ubuntu3_amd64",
+ "name": "libldap-2.5-0",
+ "version": "2.5.11+dfsg-1~exp1ubuntu3"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnettle8_3.7.3-1build2_amd64",
+ "name": "libnettle8",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "key": "libnghttp2-14_1.43.0-1build3_amd64",
+ "name": "libnghttp2-14",
+ "version": "1.43.0-1build3"
+ },
+ {
+ "key": "libp11-kit0_0.24.0-6build1_amd64",
+ "name": "libp11-kit0",
+ "version": "0.24.0-6build1"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libpsl5_0.21.0-1.2build2_amd64",
+ "name": "libpsl5",
+ "version": "0.21.0-1.2build2"
+ },
+ {
+ "key": "librtmp1_2.4-p-20151223.gitfa8646d.1-2build4_amd64",
+ "name": "librtmp1",
+ "version": "2.4+20151223.gitfa8646d.1-2build4"
+ },
+ {
+ "key": "libsasl2-2_2.1.27-p-dfsg2-3ubuntu1_amd64",
+ "name": "libsasl2-2",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "key": "libsasl2-modules-db_2.1.27-p-dfsg2-3ubuntu1_amd64",
+ "name": "libsasl2-modules-db",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssh-4_0.9.6-2build1_amd64",
+ "name": "libssh-4",
+ "version": "0.9.6-2build1"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtasn1-6_4.18.0-4build1_amd64",
+ "name": "libtasn1-6",
+ "version": "4.18.0-4build1"
+ },
+ {
+ "key": "libunistring2_1.0-1_amd64",
+ "name": "libunistring2",
+ "version": "1.0-1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libcurl4-openssl-dev_7.81.0-1_amd64",
+ "name": "libcurl4-openssl-dev",
+ "sha256": "2693ec35c6164babe34cd1b80421a770d1808d35d17ce1da48c65a55e2bbaf08",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/curl/libcurl4-openssl-dev_7.81.0-1_amd64.deb",
+ "version": "7.81.0-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libcurl4_7.81.0-1_amd64",
+ "name": "libcurl4",
+ "sha256": "4d533aaa16ea8c977f61f483ef0634f21dd38e954e39324a975c88e28969144d",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/curl/libcurl4_7.81.0-1_amd64.deb",
+ "version": "7.81.0-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libdb5.3_5.3.28-p-dfsg1-0.8ubuntu3_amd64",
+ "name": "libdb5.3",
+ "sha256": "ce60e446c9cb0e94bb4b4d0fe4f969e772edec250deb186bacf955e4d196548b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8ubuntu3_amd64.deb",
+ "version": "5.3.28+dfsg1-0.8ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libffi8_3.4.2-4_amd64",
+ "name": "libffi8",
+ "sha256": "b4f88c91fa6f4c942097be6abfc365fb133c5e147640168cbb7704fd855eac10",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libf/libffi/libffi8_3.4.2-4_amd64.deb",
+ "version": "3.4.2-4"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgcc-11-dev_11.2.0-19ubuntu1_amd64",
+ "name": "libgcc-11-dev",
+ "sha256": "adae5a301c7899c1bce8ae26b5423716a47e516df25c09d6d536607bc34853bc",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libgcc-11-dev_11.2.0-19ubuntu1_amd64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "sha256": "c9a93721431be07557c810d7e1b24c3b3c51f398334ded104362a68a415b9e61",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libgcc-s1_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgmp10_2-6.2.1-p-dfsg-3ubuntu1_amd64",
+ "name": "libgmp10",
+ "sha256": "d199a77e11701d4d620dd4f62e05740e3072dce893856ea3bbaa6ae9fa19fef1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-3ubuntu1_amd64.deb",
+ "version": "2:6.2.1+dfsg-3ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgnutls30_3.7.3-4ubuntu1_amd64",
+ "name": "libgnutls30",
+ "sha256": "8d79d5790deb88b0746d6ba59be782227c1250396879e0095e7bdbb269af7bbb",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gnutls28/libgnutls30_3.7.3-4ubuntu1_amd64.deb",
+ "version": "3.7.3-4ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgomp1_12-20220319-1ubuntu1_amd64",
+ "name": "libgomp1",
+ "sha256": "8627999dd5f3d38473774ce7924a62af9a2840b2238bc52611e38257bc140b5d",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libgomp1_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "sha256": "53b3c8d2599974e378416f3e837b6bf89db7e155a52aaa6761789242fa9098f6",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libgssapi-krb5-2_1.19.2-2_amd64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libhogweed6_3.7.3-1build2_amd64",
+ "name": "libhogweed6",
+ "sha256": "2402ac51ebc760799b01f3fd4933126c5eb446e5b043832601fb589f5e50c363",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nettle/libhogweed6_3.7.3-1build2_amd64.deb",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libicu-dev_70.1-2_amd64",
+ "name": "libicu-dev",
+ "sha256": "1923e57f02a96595e2111c203dbb660f4c5abae46d7bee83a0ccb8b002eb6fc3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/libicu-dev_70.1-2_amd64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libicu70_70.1-2_amd64",
+ "name": "libicu70",
+ "sha256": "58a154f6307289813da2276f900498ef536ae7c0522d2cf31a3c3c5cf62dfd9a",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/i/icu/libicu70_70.1-2_amd64.deb",
+ "version": "70.1-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libidn2-0_2.3.2-2build1_amd64",
+ "name": "libidn2-0",
+ "sha256": "bc935e1871aa4a75d3f4ff549af32b7316aecfbea2200d85055878767b8398c8",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2build1_amd64.deb",
+ "version": "2.3.2-2build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libitm1_12-20220319-1ubuntu1_amd64",
+ "name": "libitm1",
+ "sha256": "c65a94c151396c542c10b8a4c2df943fb2bf07a90329e152596d521d9ece390c",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libitm1_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "sha256": "8419e78a643e9414c8c90605829fb492157eac87b87c0edc1cd900f285487385",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libk5crypto3_1.19.2-2_amd64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "sha256": "940daf78ee0229549b4eabc92ffd79dd038ed96a44e2e912305a23540cf22a0a",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2ubuntu3_amd64.deb",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "sha256": "e0f9cbd7d6e9fccd8559a82a48b1dadbd98889840710546c35067b0269f612ee",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libkrb5-3_1.19.2-2_amd64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "sha256": "4736410375e20692050b7b587113e72d23bb04a6d9beea89282bc9a002629056",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/k/krb5/libkrb5support0_1.19.2-2_amd64.deb",
+ "version": "1.19.2-2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libldap-2.5-0_2.5.11-p-dfsg-1_exp1ubuntu3_amd64",
+ "name": "libldap-2.5-0",
+ "sha256": "f28638149498d6fbac35ee3f9f11ad399953b2a9ba1a47ca457dce39f091ba0b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/o/openldap/libldap-2.5-0_2.5.11+dfsg-1~exp1ubuntu3_amd64.deb",
+ "version": "2.5.11+dfsg-1~exp1ubuntu3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "liblsan0_12-20220319-1ubuntu1_amd64",
+ "name": "liblsan0",
+ "sha256": "ee4dc708420b554d8cc1385f3c2a2d2917187b22c0d796eda46c8d52c09a81c1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/liblsan0_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "sha256": "8f1c46e7d3f5102a5e4fdca7c949728a343ba71c2a7c124118df2c13d4c444f7",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/x/xz-utils/liblzma5_5.2.5-2ubuntu1_amd64.deb",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libnettle8_3.7.3-1build2_amd64",
+ "name": "libnettle8",
+ "sha256": "6da09e685e5587f8873f662b007de45f75424fb33d2c4a51837380e683d33c7e",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nettle/libnettle8_3.7.3-1build2_amd64.deb",
+ "version": "3.7.3-1build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libnghttp2-14_1.43.0-1build3_amd64",
+ "name": "libnghttp2-14",
+ "sha256": "9c5bf39da4ab9981eb280405ad28bd6d4afbb2f5128a08f9de3915b4502739f1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1build3_amd64.deb",
+ "version": "1.43.0-1build3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libnsl-dev_1.3.0-2build2_amd64",
+ "name": "libnsl-dev",
+ "sha256": "e93aa448fe708a4bbfcc40b2a8cab6f5f88896174a301caab2719f734e08a621",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libn/libnsl/libnsl-dev_1.3.0-2build2_amd64.deb",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libnsl2_1.3.0-2build2_amd64",
+ "name": "libnsl2",
+ "sha256": "cfeef478f96ace59617f4f93c2497776b98a33c99bf3602af46844ccf9cba9d3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libn/libnsl/libnsl2_1.3.0-2build2_amd64.deb",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libp11-kit0_0.24.0-6build1_amd64",
+ "name": "libp11-kit0",
+ "sha256": "70d9009af3c5cbf70c374b493f3a51f4d722757a8efe0d89af9796da78a51262",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/p11-kit/libp11-kit0_0.24.0-6build1_amd64.deb",
+ "version": "0.24.0-6build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "sha256": "166e1162c3e86facf11bd31a3e10ffa67641f9ac295bc8e72e6cdfc494fc64c3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/pcre2/libpcre2-8-0_10.39-3build1_amd64.deb",
+ "version": "10.39-3build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libpsl5_0.21.0-1.2build2_amd64",
+ "name": "libpsl5",
+ "sha256": "cd29dee0eac2bdf3f944f47b3926993827dc6b3710251df76006fab2fd09f7e1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2build2_amd64.deb",
+ "version": "0.21.0-1.2build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libquadmath0_12-20220319-1ubuntu1_amd64",
+ "name": "libquadmath0",
+ "sha256": "6051a22852840dad9a846b8ac18b051089868646677a00cd422175e1e6dfce3b",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libquadmath0_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "librtmp1_2.4-p-20151223.gitfa8646d.1-2build4_amd64",
+ "name": "librtmp1",
+ "sha256": "c8bdaa1e777d08888914e922f8f76441c26ee36438d3aa59161ecccc2421f77e",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2build4_amd64.deb",
+ "version": "2.4+20151223.gitfa8646d.1-2build4"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libsasl2-2_2.1.27-p-dfsg2-3ubuntu1_amd64",
+ "name": "libsasl2-2",
+ "sha256": "e68ac6059677e0356e492e0e6a6c31344a4815f03e7cf367fe35fe1e7ebc128c",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg2-3ubuntu1_amd64.deb",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libsasl2-modules-db_2.1.27-p-dfsg2-3ubuntu1_amd64",
+ "name": "libsasl2-modules-db",
+ "sha256": "f6fbbba615f27b10bb12e65188e5b5160e03893ef580366e53a53dbdeedf4d17",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.27+dfsg2-3ubuntu1_amd64.deb",
+ "version": "2.1.27+dfsg2-3ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "sha256": "b96c6b40ee2388bd51341cb11c0f1d5bcca29b9180b6e3a77a06b881f2913f7e",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libs/libselinux/libselinux1_3.3-1build2_amd64.deb",
+ "version": "3.3-1build2"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libssh-4_0.9.6-2build1_amd64",
+ "name": "libssh-4",
+ "sha256": "785f29b91cf96a66cd85bdd657ddeb028290eb5df0a340f907b42618eefb3493",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libs/libssh/libssh-4_0.9.6-2build1_amd64.deb",
+ "version": "0.9.6-2build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "sha256": "11a83260542e05aebbbafce9164d594287d2584be80972e08708528fe06f80d3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/o/openssl/libssl3_3.0.2-0ubuntu1_amd64.deb",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-11-base_11.2.0-19ubuntu1_amd64",
+ "name": "gcc-11-base",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libasan6_11.2.0-19ubuntu1_amd64",
+ "name": "libasan6",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libatomic1_12-20220319-1ubuntu1_amd64",
+ "name": "libatomic1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_amd64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_amd64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_amd64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-11-dev_11.2.0-19ubuntu1_amd64",
+ "name": "libgcc-11-dev",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgomp1_12-20220319-1ubuntu1_amd64",
+ "name": "libgomp1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libitm1_12-20220319-1ubuntu1_amd64",
+ "name": "libitm1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblsan0_12-20220319-1ubuntu1_amd64",
+ "name": "liblsan0",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_amd64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_amd64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libquadmath0_12-20220319-1ubuntu1_amd64",
+ "name": "libquadmath0",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_amd64",
+ "name": "libstdc++6",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_amd64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_amd64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_amd64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtsan0_11.2.0-19ubuntu1_amd64",
+ "name": "libtsan0",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "key": "libubsan1_12-20220319-1ubuntu1_amd64",
+ "name": "libubsan1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_amd64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_amd64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libstdc-p--p--11-dev_11.2.0-19ubuntu1_amd64",
+ "name": "libstdc++-11-dev",
+ "sha256": "9bf057085dbce0f9b06157df34ca55819d8f5c0262cd7de1eac7515b5138a8a2",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libstdc++-11-dev_11.2.0-19ubuntu1_amd64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_amd64",
+ "name": "libstdc++6",
+ "sha256": "035cfe195ddf3a091abbc0c323285772ccbdbb2fb75279e44a0915748b4e5726",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libstdc++6_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libtasn1-6_4.18.0-4build1_amd64",
+ "name": "libtasn1-6",
+ "sha256": "c4258c87f569f6070312ad4b64a35cb00a9fffca07982b4aac5a3f340ab3e2cd",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtasn1-6/libtasn1-6_4.18.0-4build1_amd64.deb",
+ "version": "4.18.0-4build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libtirpc-common_1.3.2-2build1_amd64",
+ "name": "libtirpc-common",
+ "sha256": "a2746e8c1ae8b1ced2312304e8bd5e3aaabd504377480e743b0edff7b96da6fa",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc-common_1.3.2-2build1_all.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libtirpc-dev_1.3.2-2build1_amd64",
+ "name": "libtirpc-dev",
+ "sha256": "771c4e77f06c306b55759d88d5efc64fd438e79a8001a6e107311b193b065564",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc-dev_1.3.2-2build1_amd64.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libtirpc3_1.3.2-2build1_amd64",
+ "name": "libtirpc3",
+ "sha256": "e5af8cc79ce2cd14a716922f7936d2a7c26d1e90642aaa7810afe4fcdc1cf2dc",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2build1_amd64.deb",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libtsan0_11.2.0-19ubuntu1_amd64",
+ "name": "libtsan0",
+ "sha256": "b3cae0deabbc5fef8a665f51ecc69eb812c97a6fc234b7971ea70d0d365238a1",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-11/libtsan0_11.2.0-19ubuntu1_amd64.deb",
+ "version": "11.2.0-19ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libubsan1_12-20220319-1ubuntu1_amd64",
+ "name": "libubsan1",
+ "sha256": "695665a5619339d23152a7358dafbf44569a9c19afd127b2b9d4ce53d65d07f2",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/g/gcc-12/libubsan1_12-20220319-1ubuntu1_amd64.deb",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libunistring2_1.0-1_amd64",
+ "name": "libunistring2",
+ "sha256": "988fb59de6a0a313844277e8a6e45d3dc16f5ea75a603a46b16b936426f0ac65",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libu/libunistring/libunistring2_1.0-1_amd64.deb",
+ "version": "1.0-1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "icu-devtools_70.1-2_amd64",
+ "name": "icu-devtools",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_amd64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_amd64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_amd64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libicu-dev_70.1-2_amd64",
+ "name": "libicu-dev",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libicu70_70.1-2_amd64",
+ "name": "libicu70",
+ "version": "70.1-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_amd64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_amd64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libstdc-p--p-6_12-20220319-1ubuntu1_amd64",
+ "name": "libstdc++6",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_amd64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_amd64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_amd64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libxml2_2.9.13-p-dfsg-1build1_amd64",
+ "name": "libxml2",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_amd64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_amd64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "libxml2-dev_2.9.13-p-dfsg-1build1_amd64",
+ "name": "libxml2-dev",
+ "sha256": "6ec428fb7ec9288c2ea6340302a8c54f4dde52e90963d2fdeacb2c7557de86b3",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxml2/libxml2-dev_2.9.13+dfsg-1build1_amd64.deb",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libxml2_2.9.13-p-dfsg-1build1_amd64",
+ "name": "libxml2",
+ "sha256": "4831826d0e320f6715722716d9737c7e57a052d20e55dd03ff7444c6e502a3ff",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libx/libxml2/libxml2_2.9.13+dfsg-1build1_amd64.deb",
+ "version": "2.9.13+dfsg-1build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "sha256": "ae7db00ce8b093e50c994518b90203544e063b4bc574836a048bb142b950b2c9",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-3build1_amd64.deb",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "linux-libc-dev_5.15.0-25.25_amd64",
+ "name": "linux-libc-dev",
+ "sha256": "1b2a93020593c9e94a25f750ce442da5a6e8ff48a20f52cec92dfc3fa35336d8",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/l/linux/linux-libc-dev_5.15.0-25.25_amd64.deb",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "sha256": "1af46dbc6b00bbcff8b5e72eeedbb2bafdec48bf0d470ce461c1e453c2ecdfe8",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/p/perl/perl-base_5.34.0-3ubuntu1_amd64.deb",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_amd64",
+ "name": "rpcsvc-proto",
+ "sha256": "447c6d8f7624a3d728a12232440d3f10e6e53bbf60cc202b7beb8a3bc9f7acc9",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/r/rpcsvc-proto/rpcsvc-proto_1.4.2-0ubuntu6_amd64.deb",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "sha256": "d6e4ef9e5793a271764209047ebb78970404b035fd1490cb513302744cfe9a25",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/t/tar/tar_1.34+dfsg-1build3_amd64.deb",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [
+ {
+ "key": "debconf_1.5.79ubuntu1_amd64",
+ "name": "debconf",
+ "version": "1.5.79ubuntu1"
+ },
+ {
+ "key": "dpkg_1.21.1ubuntu2_amd64",
+ "name": "dpkg",
+ "version": "1.21.1ubuntu2"
+ },
+ {
+ "key": "gcc-12-base_12-20220319-1ubuntu1_amd64",
+ "name": "gcc-12-base",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libacl1_2.3.1-1_amd64",
+ "name": "libacl1",
+ "version": "2.3.1-1"
+ },
+ {
+ "key": "libbz2-1.0_1.0.8-5build1_amd64",
+ "name": "libbz2-1.0",
+ "version": "1.0.8-5build1"
+ },
+ {
+ "key": "libc-dev-bin_2.35-0ubuntu3_amd64",
+ "name": "libc-dev-bin",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6-dev_2.35-0ubuntu3_amd64",
+ "name": "libc6-dev",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libc6_2.35-0ubuntu3_amd64",
+ "name": "libc6",
+ "version": "2.35-0ubuntu3"
+ },
+ {
+ "key": "libcom-err2_1.46.5-2ubuntu1_amd64",
+ "name": "libcom-err2",
+ "version": "1.46.5-2ubuntu1"
+ },
+ {
+ "key": "libcrypt-dev_1-4.4.27-1_amd64",
+ "name": "libcrypt-dev",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libcrypt1_1-4.4.27-1_amd64",
+ "name": "libcrypt1",
+ "version": "1:4.4.27-1"
+ },
+ {
+ "key": "libgcc-s1_12-20220319-1ubuntu1_amd64",
+ "name": "libgcc-s1",
+ "version": "12-20220319-1ubuntu1"
+ },
+ {
+ "key": "libgssapi-krb5-2_1.19.2-2_amd64",
+ "name": "libgssapi-krb5-2",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libk5crypto3_1.19.2-2_amd64",
+ "name": "libk5crypto3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkeyutils1_1.6.1-2ubuntu3_amd64",
+ "name": "libkeyutils1",
+ "version": "1.6.1-2ubuntu3"
+ },
+ {
+ "key": "libkrb5-3_1.19.2-2_amd64",
+ "name": "libkrb5-3",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "libkrb5support0_1.19.2-2_amd64",
+ "name": "libkrb5support0",
+ "version": "1.19.2-2"
+ },
+ {
+ "key": "liblzma5_5.2.5-2ubuntu1_amd64",
+ "name": "liblzma5",
+ "version": "5.2.5-2ubuntu1"
+ },
+ {
+ "key": "libnsl-dev_1.3.0-2build2_amd64",
+ "name": "libnsl-dev",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libnsl2_1.3.0-2build2_amd64",
+ "name": "libnsl2",
+ "version": "1.3.0-2build2"
+ },
+ {
+ "key": "libpcre2-8-0_10.39-3build1_amd64",
+ "name": "libpcre2-8-0",
+ "version": "10.39-3build1"
+ },
+ {
+ "key": "libselinux1_3.3-1build2_amd64",
+ "name": "libselinux1",
+ "version": "3.3-1build2"
+ },
+ {
+ "key": "libssl3_3.0.2-0ubuntu1_amd64",
+ "name": "libssl3",
+ "version": "3.0.2-0ubuntu1"
+ },
+ {
+ "key": "libtirpc-common_1.3.2-2build1_amd64",
+ "name": "libtirpc-common",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc-dev_1.3.2-2build1_amd64",
+ "name": "libtirpc-dev",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libtirpc3_1.3.2-2build1_amd64",
+ "name": "libtirpc3",
+ "version": "1.3.2-2build1"
+ },
+ {
+ "key": "libzstd1_1.4.8-p-dfsg-3build1_amd64",
+ "name": "libzstd1",
+ "version": "1.4.8+dfsg-3build1"
+ },
+ {
+ "key": "linux-libc-dev_5.15.0-25.25_amd64",
+ "name": "linux-libc-dev",
+ "version": "5.15.0-25.25"
+ },
+ {
+ "key": "perl-base_5.34.0-3ubuntu1_amd64",
+ "name": "perl-base",
+ "version": "5.34.0-3ubuntu1"
+ },
+ {
+ "key": "rpcsvc-proto_1.4.2-0ubuntu6_amd64",
+ "name": "rpcsvc-proto",
+ "version": "1.4.2-0ubuntu6"
+ },
+ {
+ "key": "tar_1.34-p-dfsg-1build3_amd64",
+ "name": "tar",
+ "version": "1.34+dfsg-1build3"
+ },
+ {
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "key": "zlib1g-dev_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g-dev",
+ "sha256": "ddbadadcbfe2669de79eabac36a990f0f1666bb86a87d1a9cd56fd72620ca2db",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2ubuntu9_amd64.deb",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ },
+ {
+ "arch": "amd64",
+ "dependencies": [],
+ "key": "zlib1g_1-1.2.11.dfsg-2ubuntu9_amd64",
+ "name": "zlib1g",
+ "sha256": "52449467942cc943d651fd16867014e9339f3657935fc09b75b3347aa5a78066",
+ "url": "https://snapshot.ubuntu.com/ubuntu/20250219T154000Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2ubuntu9_amd64.deb",
+ "version": "1:1.2.11.dfsg-2ubuntu9"
+ }
+ ],
+ "version": 2
+}
\ No newline at end of file
diff --git a/swift/internal/feature_names.bzl b/swift/internal/feature_names.bzl
index c5b8928ae..85936c5a0 100644
--- a/swift/internal/feature_names.bzl
+++ b/swift/internal/feature_names.bzl
@@ -379,6 +379,10 @@ SWIFT_FEATURE_USE_PCH_OUTPUT_DIR = "swift.use_pch_output_dir"
# minor binary size improvements
SWIFT_FEATURE_LLD_GC_WORKAROUND = "swift.lld_gc_workaround"
+# If enabled, use the static Swift runtime archives instead of dynamically
+# linking the Swift runtime libraries.
+SWIFT_FEATURE_STATIC_STDLIB = "swift.static_stdlib"
+
# Enable the default -ObjC link flags that otherwise wouldn't be passed to
# non-Apple binary top level targets. Disable this to avoid over-linking
# objects if you know that isn't required.
diff --git a/swift/internal/features.bzl b/swift/internal/features.bzl
index cd1045432..669b7f9c5 100644
--- a/swift/internal/features.bzl
+++ b/swift/internal/features.bzl
@@ -33,6 +33,7 @@ load(
"SWIFT_FEATURE_OBJC_LINK_FLAGS",
"SWIFT_FEATURE_OPT_USES_WMO",
"SWIFT_FEATURE_REMAP_XCODE_PATH",
+ "SWIFT_FEATURE_STATIC_STDLIB",
"SWIFT_FEATURE_USE_GLOBAL_MODULE_CACHE",
)
load(":package_specs.bzl", "label_matches_package_specs")
@@ -326,6 +327,7 @@ def default_features_for_toolchain(target_triple):
if target_triples.unversioned_os(target_triple) == "linux":
features.extend([
SWIFT_FEATURE_NO_GENERATED_MODULE_MAP,
+ SWIFT_FEATURE_STATIC_STDLIB,
])
return features
diff --git a/swift/internal/linking.bzl b/swift/internal/linking.bzl
index 519ad7992..ac237d883 100644
--- a/swift/internal/linking.bzl
+++ b/swift/internal/linking.bzl
@@ -271,6 +271,7 @@ def create_linking_context_from_compilation_outputs(
_, implicit_cc_infos = get_swift_implicit_deps(
feature_configuration = feature_configuration,
+ include_runtime = False, # NOTE: Called from swift_library, which should be independent of the final runtime
swift_toolchain = toolchains.swift,
)
extra_linking_contexts = [
diff --git a/swift/internal/utils.bzl b/swift/internal/utils.bzl
index 6054329b6..e2f3cfce4 100644
--- a/swift/internal/utils.bzl
+++ b/swift/internal/utils.bzl
@@ -24,6 +24,7 @@ load(
"SWIFT_FEATURE_ADD_DEFAULT_PRECOMPILED_MODULES",
"SWIFT_FEATURE_EMIT_C_MODULE",
"SWIFT_FEATURE_NO_IMPLICIT_DEPS",
+ "SWIFT_FEATURE_STATIC_STDLIB",
"SWIFT_FEATURE_USE_C_MODULES",
)
load(":features.bzl", "is_feature_enabled")
@@ -452,7 +453,11 @@ def include_developer_search_paths(attr):
False,
)
-def get_swift_implicit_deps(*, feature_configuration, swift_toolchain):
+def get_swift_implicit_deps(
+ *,
+ feature_configuration,
+ include_runtime = True,
+ swift_toolchain):
"""Returns the Swift and C++ providers for implicit Swift dependencies.
Args:
@@ -460,6 +465,8 @@ def get_swift_implicit_deps(*, feature_configuration, swift_toolchain):
`swift_common.configure_features`. If this feature configuration is
such that implicit dependencies should be ignored, this function
returns an empty list for both providers.
+ include_runtime: Whether to include the runtime selected by the feature
+ configuration in the returned C++ providers.
swift_toolchain: The `SwiftToolchainInfo` provider of the toolchain.
Returns:
@@ -475,11 +482,34 @@ def get_swift_implicit_deps(*, feature_configuration, swift_toolchain):
feature_configuration = feature_configuration,
swift_toolchain = swift_toolchain,
)
+ cc_infos = (
+ swift_toolchain.implicit_deps_providers.cc_infos +
+ system_modules.cc_infos
+ )
+ if include_runtime:
+ if is_feature_enabled(
+ feature_configuration = feature_configuration,
+ feature_name = SWIFT_FEATURE_STATIC_STDLIB,
+ ):
+ runtime_cc_info = swift_toolchain.static_runtime_cc_info
+ if not runtime_cc_info:
+ fail(
+ "The toolchain does not provide a static runtime linking " +
+ "provider, but the 'swift.static_stdlib' feature is enabled.",
+ )
+ else:
+ runtime_cc_info = getattr(
+ swift_toolchain,
+ "dynamic_runtime_cc_info",
+ None,
+ )
+ if runtime_cc_info:
+ cc_infos = cc_infos + [runtime_cc_info]
+
return (
swift_toolchain.implicit_deps_providers.swift_infos +
system_modules.swift_infos,
- swift_toolchain.implicit_deps_providers.cc_infos +
- system_modules.cc_infos,
+ cc_infos,
)
def get_clang_implicit_deps(*, feature_configuration, swift_toolchain):
diff --git a/swift/providers.bzl b/swift/providers.bzl
index ff5d84a98..786ec51dc 100644
--- a/swift/providers.bzl
+++ b/swift/providers.bzl
@@ -437,13 +437,20 @@ their negation in the `features` attribute of a target/package or in the
These features determine various compilation and debugging behaviors of the
Swift build rules, and they are also passed to the C++ APIs used when linking
(so features defined in CROSSTOOL may be used here).
+""",
+ "dynamic_runtime_cc_info": """\
+The `CcInfo` that selects the toolchain's ordinary dynamic Swift runtime, or
+`None` if the toolchain supplies its runtime through implicit dependencies.
+Final links select this provider unless `swift.static_stdlib` is enabled; it is
+not propagated by libraries.
""",
"root_dir": """\
`String`. The workspace-relative root directory of the toolchain.
""",
- "runtime": """\
-`List` of `File`s. Files required at runtime by compiled executables. They will
-be added to the input root at execution time.
+ "static_runtime_cc_info": """\
+A `CcInfo` that selects the static Swift runtime, or `None` if the toolchain
+does not support static Swift runtime linking. Final links select this provider
+when `swift.static_stdlib` is enabled; it is not propagated by libraries.
""",
"swift_worker": """\
`File`. The executable representing the worker executable used to invoke the
diff --git a/swift/swift_binary.bzl b/swift/swift_binary.bzl
index dfac5ec74..6421973f6 100644
--- a/swift/swift_binary.bzl
+++ b/swift/swift_binary.bzl
@@ -24,6 +24,7 @@ load(
"//swift/internal:feature_names.bzl",
"SWIFT_FEATURE_ADD_TARGET_NAME_TO_OUTPUT",
"SWIFT_FEATURE_NO_ENTRY_POINT_RENAME",
+ "SWIFT_FEATURE_STATIC_STDLIB",
)
load("//swift/internal:features.bzl", "is_feature_enabled")
load(
@@ -90,7 +91,9 @@ def _swift_binary_impl(ctx):
ctx = ctx,
requested_features = ctx.features,
toolchains = toolchains,
- unsupported_features = ctx.disabled_features,
+ unsupported_features = ctx.disabled_features + (
+ [SWIFT_FEATURE_STATIC_STDLIB] if ctx.attr.linkshared else []
+ ),
)
is_wasm = _is_wasm(ctx)
diff --git a/swift/swift_test.bzl b/swift/swift_test.bzl
index 25cd3d8a9..5ac1c4c3d 100644
--- a/swift/swift_test.bzl
+++ b/swift/swift_test.bzl
@@ -24,6 +24,7 @@ load("//swift/internal:env_expansion.bzl", "expanded_env")
load(
"//swift/internal:feature_names.bzl",
"SWIFT_FEATURE_ADD_TARGET_NAME_TO_OUTPUT",
+ "SWIFT_FEATURE_STATIC_STDLIB",
)
load("//swift/internal:features.bzl", "is_feature_enabled")
load(
@@ -285,7 +286,10 @@ def _swift_test_impl(ctx):
ctx = ctx,
requested_features = ctx.features,
toolchains = toolchains,
- unsupported_features = ctx.disabled_features,
+ # XCTest and Swift Testing are shared libraries whose dependencies use
+ # the dynamic Swift runtime, so a test executable cannot safely link a
+ # separate static copy of that runtime.
+ unsupported_features = ctx.disabled_features + [SWIFT_FEATURE_STATIC_STDLIB],
)
discover_tests = ctx.attr.discover_tests
@@ -516,9 +520,6 @@ def _swift_test_impl(ctx):
collect_data = True,
collect_default = True,
files = ctx.files.data,
- transitive_files = depset(
- transitive = [toolchains.swift.runtime],
- ),
),
),
OutputGroupInfo(
diff --git a/swift/toolchains/BUILD b/swift/toolchains/BUILD
index 10964bc03..1a8db31e2 100644
--- a/swift/toolchains/BUILD
+++ b/swift/toolchains/BUILD
@@ -3,6 +3,7 @@ load(
"APPLE_PLATFORMS_CONSTRAINTS",
)
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load("@rules_cc//cc/toolchains:feature.bzl", "cc_feature")
load("@rules_swift//swift/toolchains:xcode_swift_toolchain.bzl", "xcode_swift_toolchain")
load(
"//swift/internal:feature_names.bzl",
@@ -11,6 +12,25 @@ load(
licenses(["notice"])
+cc_feature(
+ name = "default_linux_sysroot_feature",
+ feature_name = "rules_swift_default_linux_sysroot",
+)
+
+label_flag(
+ name = "linux_sysroot_feature",
+ build_setting_default = ":default_linux_sysroot_feature",
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "linux_sysroot_feature_is_default",
+ flag_values = {
+ ":linux_sysroot_feature": ":default_linux_sysroot_feature",
+ },
+ visibility = ["//visibility:public"],
+)
+
toolchain(
name = "linux-swift-toolchain_x86_64",
exec_compatible_with = [
diff --git a/swift/toolchains/swift_toolchain.bzl b/swift/toolchains/swift_toolchain.bzl
index 12f101dba..912d5822b 100644
--- a/swift/toolchains/swift_toolchain.bzl
+++ b/swift/toolchains/swift_toolchain.bzl
@@ -50,6 +50,7 @@ load("//swift/internal:autolinking.bzl", "autolink_extract_action_configs")
load(
"//swift/internal:feature_names.bzl",
"SWIFT_FEATURE_MODULE_MAP_HOME_IS_CWD",
+ "SWIFT_FEATURE_STATIC_STDLIB",
"SWIFT_FEATURE_USE_AUTOLINK_EXTRACT",
"SWIFT_FEATURE_USE_GLOBAL_INDEX_STORE",
"SWIFT_FEATURE_USE_MODULE_WRAP",
@@ -386,69 +387,168 @@ def _swift_windows_linkopts_cc_info(
)
def _swift_unix_linkopts_cc_info(
+ ctx,
+ cc_toolchain,
cpu,
os,
toolchain_label,
toolchain_root,
- additional_inputs,
- additional_rpaths):
- """Returns a `CcInfo` containing flags that should be passed to the linker.
+ swift_tool_inputs,
+ dynamic_runtime_files,
+ static_runtime_files):
+ """Returns the ordinary, dynamic, and static Unix runtime `CcInfo`s.
- The provider returned by this function will be used as an implicit
- dependency of the toolchain to ensure that any binary containing Swift code
- will link to the standard libraries correctly.
+ The ordinary provider contains the flags needed by any binary containing
+ Swift code. When shared runtime libraries are available, those libraries
+ and the ordinary provider are combined into the selectable dynamic runtime
+ provider. The static provider contains the complete replacement metadata
+ for static Swift standard library links.
Args:
+ ctx: The rule context.
+ cc_toolchain: The C++ toolchain used to construct library metadata.
cpu: The CPU architecture, which is used as part of the library path.
os: The operating system name, which is used as part of the library
path.
toolchain_label: The label of the Swift toolchain that will act as the
owner of the linker input propagating the flags.
toolchain_root: The toolchain's root directory.
- additional_inputs: depset of File objects to add to link actions.
- additional_rpaths: list of additional RPATH to add at link time.
+ swift_tool_inputs: Swift toolchain files to add to ordinary link
+ actions.
+ dynamic_runtime_files: Shared Swift runtime libraries.
+ static_runtime_files: Static Swift runtime archives and linker files.
Returns:
- A `CcInfo` provider that will provide linker flags to binaries that
- depend on Swift targets.
+ A tuple containing the ordinary Swift link options `CcInfo`, the
+ selectable dynamic runtime `CcInfo` or `None`, and the selectable
+ static runtime `CcInfo` or `None`.
"""
- # TODO(#8): Support statically linking the Swift runtime.
- platform_lib_dir = "{toolchain_root}/lib/swift/{os}".format(
- os = os,
- toolchain_root = toolchain_root,
- )
-
- runtime_object_path = "{platform_lib_dir}/{cpu}/swiftrt.o".format(
- cpu = cpu,
- platform_lib_dir = platform_lib_dir,
- )
-
- linkopts = [
+ universal_linkopts = [
"-pie",
- "-L{}".format(platform_lib_dir),
- "-Wl,-rpath,{}".format(platform_lib_dir),
"-lm",
"-lstdc++",
"-lrt",
"-ldl",
- runtime_object_path,
"-static-libgcc",
- ] + [
- "-Wl,-rpath,{}".format(rpath)
- for rpath in additional_rpaths
]
- return CcInfo(
- linking_context = cc_common.create_linking_context(
- linker_inputs = depset([
- cc_common.create_linker_input(
- owner = toolchain_label,
- user_link_flags = linkopts,
- additional_inputs = depset(additional_inputs),
- ),
- ]),
- ),
+ dynamic_platform_lib_dir = "{toolchain_root}/lib/swift/{os}".format(
+ os = os,
+ toolchain_root = toolchain_root,
+ )
+ dynamic_runtime_object_path = "{platform_lib_dir}/{cpu}/swiftrt.o".format(
+ cpu = cpu,
+ platform_lib_dir = dynamic_platform_lib_dir,
+ )
+ dynamic_linkopts = universal_linkopts + [
+ dynamic_runtime_object_path,
+ "-L{}".format(dynamic_platform_lib_dir),
+ ]
+
+ # Relative toolchain roots are handled by importing the shared libraries
+ # through CcInfo, which lets Bazel compute the correct rpaths so we only
+ # need this for system installs.
+ if paths.is_absolute(toolchain_root):
+ dynamic_linkopts.append("-Wl,-rpath,{}".format(dynamic_platform_lib_dir))
+
+ static_platform_lib_dir = "{toolchain_root}/lib/swift_static/{os}".format(
+ os = os,
+ toolchain_root = toolchain_root,
+ )
+ static_runtime_object_path = "{platform_lib_dir}/{cpu}/swiftrt.o".format(
+ cpu = cpu,
+ platform_lib_dir = static_platform_lib_dir,
+ )
+ static_linkopts = universal_linkopts + [
+ # C++ interoperability archives are shipped alongside the dynamic
+ # runtime rather than under swift_static. The static directory's -L
+ # must be before the dynamic one.
+ "-L{}".format(static_platform_lib_dir),
+ "-L{}".format(dynamic_platform_lib_dir),
+ "@{}/static-stdlib-args.lnk".format(static_platform_lib_dir),
+ static_runtime_object_path,
+
+ # Swift objects are compiled against the ordinary resource directory so
+ # that the same object files can be linked into both dynamic and static
+ # binaries. Because of this we miss out on autolinking info that we
+ # would get if we passed -static-stdlib to compiles. The contents of
+ # these libraries are still lazily loaded so it doesn't affect app size
+ # if they are unused.
+ "-Wl,--push-state,--as-needed",
+ "-lswiftSynchronization",
+ "-l_FoundationICU",
+ "-lCoreFoundation",
+ "-l_CFURLSessionInterface",
+ "-l_CFXMLInterface",
+ "-l_FoundationCShims",
+ "-l_FoundationCollections",
+ "-lcurl",
+ "-lxml2",
+ "-Wl,--pop-state",
+ ]
+
+ dynamic_runtime_cc_info = None
+ if dynamic_runtime_files:
+ feature_configuration = cc_common.configure_features(
+ ctx = ctx,
+ cc_toolchain = cc_toolchain,
+ )
+ libraries = [
+ cc_common.create_library_to_link(
+ actions = ctx.actions,
+ cc_toolchain = cc_toolchain,
+ dynamic_library = runtime,
+ feature_configuration = feature_configuration,
+ )
+ for runtime in dynamic_runtime_files
+ ]
+ dynamic_runtime_cc_info = CcInfo(
+ linking_context = cc_common.create_linking_context(
+ linker_inputs = depset([
+ cc_common.create_linker_input(
+ owner = toolchain_label,
+ user_link_flags = dynamic_linkopts,
+ libraries = depset(libraries),
+ additional_inputs = depset(swift_tool_inputs),
+ ),
+ ]),
+ ),
+ )
+
+ # If the toolchain provides dynamic runtime files we prefer
+ default_cc_info = None
+ if not dynamic_runtime_cc_info:
+ default_cc_info = CcInfo(
+ linking_context = cc_common.create_linking_context(
+ linker_inputs = depset([
+ cc_common.create_linker_input(
+ owner = toolchain_label,
+ user_link_flags = dynamic_linkopts,
+ additional_inputs = depset(swift_tool_inputs),
+ ),
+ ]),
+ ),
+ )
+
+ static_runtime_cc_info = None
+ if static_runtime_files:
+ static_runtime_cc_info = CcInfo(
+ linking_context = cc_common.create_linking_context(
+ linker_inputs = depset([
+ cc_common.create_linker_input(
+ owner = toolchain_label,
+ user_link_flags = static_linkopts,
+ additional_inputs = depset(static_runtime_files),
+ ),
+ ]),
+ ),
+ )
+
+ return (
+ default_cc_info,
+ dynamic_runtime_cc_info,
+ static_runtime_cc_info,
)
def _swift_sdk_linkopts_cc_info(
@@ -551,7 +651,6 @@ def _swift_toolchain_impl(ctx):
sdkroot = _resolve_sdkroot(ctx, cc_toolchain)
- additional_rpaths = []
if ctx.attr.swift_tools:
if ctx.attr.swift_executable:
fail("`swift_executable` and `swift_tools` cannot be used concurrently. " +
@@ -564,15 +663,8 @@ def _swift_toolchain_impl(ctx):
toolchain_root = paths.dirname(ctx.attr.swift_tools[SwiftToolsInfo].swift_driver.dirname)
- # When swift binaries / tests built with a hermetic toolchain gets executed, they need the
- # swift standard libs in their runfiles, along with an RPATH to access them.
- additional_rpaths.append(
- "{}/lib/swift/{}".format(
- paths.dirname(paths.dirname(ctx.attr.swift_tools[SwiftToolsInfo].swift_driver.short_path)),
- ctx.attr.os,
- ),
- )
-
+ dynamic_runtime_cc_info = None
+ static_runtime_cc_info = None
if ctx.attr.os == "windows":
swift_linkopts_cc_info = _swift_windows_linkopts_cc_info(
ctx.attr.arch,
@@ -605,13 +697,20 @@ def _swift_toolchain_impl(ctx):
ctx.files.linker_inputs,
)
else:
- swift_linkopts_cc_info = _swift_unix_linkopts_cc_info(
+ (
+ swift_linkopts_cc_info,
+ dynamic_runtime_cc_info,
+ static_runtime_cc_info,
+ ) = _swift_unix_linkopts_cc_info(
+ ctx,
+ cc_toolchain,
ctx.attr.arch,
ctx.attr.os,
ctx.label,
toolchain_root,
ctx.attr.swift_tools[SwiftToolsInfo].additional_inputs if ctx.attr.swift_tools else [],
- additional_rpaths,
+ ctx.files.dynamic_runtime,
+ ctx.files.static_runtime,
)
swiftcopts = []
@@ -682,6 +781,13 @@ def _swift_toolchain_impl(ctx):
else:
env = ctx.attr.env
+ unsupported_features = ctx.disabled_features + [
+ SWIFT_FEATURE_MODULE_MAP_HOME_IS_CWD,
+ SWIFT_FEATURE_USE_GLOBAL_INDEX_STORE,
+ ]
+ if not static_runtime_cc_info:
+ unsupported_features.append(SWIFT_FEATURE_STATIC_STDLIB)
+
# TODO(allevato): Move some of the remaining hardcoded values, like object
# format and Obj-C interop support, to attributes so that we can remove the
# assumptions that are only valid on Linux.
@@ -710,7 +816,7 @@ def _swift_toolchain_impl(ctx):
),
implicit_deps_providers = collect_implicit_deps_providers(
[],
- additional_cc_infos = [swift_linkopts_cc_info],
+ additional_cc_infos = [swift_linkopts_cc_info] if swift_linkopts_cc_info else [],
),
package_configurations = [
target[SwiftPackageConfigurationInfo]
@@ -718,7 +824,8 @@ def _swift_toolchain_impl(ctx):
],
requested_features = requested_features,
root_dir = toolchain_root,
- runtime = depset(ctx.files.runtime),
+ dynamic_runtime_cc_info = dynamic_runtime_cc_info,
+ static_runtime_cc_info = static_runtime_cc_info,
system_modules = collect_implicit_deps_providers([]),
implicit_system_modules = collect_implicit_deps_providers([]),
swift_worker = ctx.attr._worker[DefaultInfo].files_to_run,
@@ -731,10 +838,7 @@ def _swift_toolchain_impl(ctx):
test_linking_contexts = [],
),
tool_configs = all_tool_configs,
- unsupported_features = ctx.disabled_features + [
- SWIFT_FEATURE_MODULE_MAP_HOME_IS_CWD,
- SWIFT_FEATURE_USE_GLOBAL_INDEX_STORE,
- ],
+ unsupported_features = unsupported_features,
)
return [
@@ -797,9 +901,17 @@ configuration options that are applied to targets on a per-package basis.
providers = [[SwiftPackageConfigurationInfo]],
),
"root": attr.string(),
- "runtime": attr.label_list(
+ "dynamic_runtime": attr.label_list(
+ doc = """\
+Shared Swift runtime libraries that are added to the dynamic runtime linking
+context.
+""",
+ allow_files = True,
+ ),
+ "static_runtime": attr.label_list(
doc = """\
-List of files to carry over as test data to swift executables and tests.
+Static Swift runtime archives and supporting linker files that are passed to
+static runtime link actions.
""",
allow_files = True,
),
@@ -902,6 +1014,7 @@ The version of XCTest that the toolchain packages.
},
),
doc = "Represents a Swift compiler toolchain.",
+ fragments = ["cpp"],
toolchains = use_cc_toolchain(),
implementation = _swift_toolchain_impl,
)
diff --git a/swift/toolchains/xcode_swift_toolchain.bzl b/swift/toolchains/xcode_swift_toolchain.bzl
index d61ee4b56..464ff04ed 100644
--- a/swift/toolchains/xcode_swift_toolchain.bzl
+++ b/swift/toolchains/xcode_swift_toolchain.bzl
@@ -57,6 +57,7 @@ load(
"SWIFT_FEATURE_MODULE_HOME_IS_CWD",
"SWIFT_FEATURE_MODULE_MAP_HOME_IS_CWD",
"SWIFT_FEATURE_REMAP_XCODE_PATH",
+ "SWIFT_FEATURE_STATIC_STDLIB",
"SWIFT_FEATURE_USE_C_MODULES",
"SWIFT_FEATURE__SUPPORTS_DEVELOPER_DIR",
"SWIFT_FEATURE__SUPPORTS_HERMETIC_SWIFTMODULE",
@@ -859,6 +860,7 @@ def _xcode_swift_toolchain_impl(ctx):
requested_features.append(SWIFT_FEATURE_ADD_DEFAULT_PRECOMPILED_MODULES)
unsupported_features = ctx.disabled_features + [
+ SWIFT_FEATURE_STATIC_STDLIB,
SWIFT_FEATURE_MODULE_MAP_HOME_IS_CWD,
]
unsupported_features.extend(ctx.attr.default_unsupported_features)
@@ -956,7 +958,8 @@ def _xcode_swift_toolchain_impl(ctx):
for target in ctx.attr.package_configurations
],
requested_features = requested_features,
- runtime = depset(),
+ dynamic_runtime_cc_info = None,
+ static_runtime_cc_info = None,
system_modules = collect_implicit_deps_providers(
[ctx.attr.system_modules] if ctx.attr.system_modules else [],
),
diff --git a/test/linux_static_stdlib/BUILD b/test/linux_static_stdlib/BUILD
new file mode 100644
index 000000000..964e93ec3
--- /dev/null
+++ b/test/linux_static_stdlib/BUILD
@@ -0,0 +1,154 @@
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
+load("//swift:swift.bzl", "swift_binary")
+load("//swift:swift_library.bzl", "swift_library")
+load("//swift:swift_test.bzl", "swift_test")
+load("//test:transitions.bzl", "transition_test")
+load("//test/rules:provider_test.bzl", "provider_test")
+
+swift_library(
+ name = "foundation_library",
+ srcs = ["FoundationLibrary.swift"],
+ module_name = "FoundationLibrary",
+)
+
+provider_test(
+ name = "foundation_library_does_not_propagate_runtime_test",
+ expected_files = [
+ "-libFoundation.so",
+ "-libswiftCore.so",
+ "*",
+ ],
+ field = "linking_context.linker_inputs.libraries.dynamic_library!",
+ provider = "CcInfo",
+ target_under_test = ":foundation_library",
+)
+
+swift_binary(
+ name = "uses_foundation",
+ srcs = ["main.swift"],
+ tags = ["manual"],
+ deps = [":foundation_library"],
+)
+
+swift_binary(
+ name = "uses_dynamic_foundation",
+ srcs = ["main.swift"],
+ features = ["-swift.static_stdlib"],
+ tags = ["manual"],
+ deps = [":foundation_library"],
+)
+
+swift_binary(
+ name = "uses_foundation_shared",
+ srcs = ["FoundationLibrary.swift"],
+ linkshared = True,
+ module_name = "FoundationSharedLibrary",
+ tags = ["manual"],
+)
+
+swift_test(
+ name = "foundation_library_test",
+ srcs = ["FoundationLibraryTests.swift"],
+ deps = [":foundation_library"],
+)
+
+sh_test(
+ name = "linux_dynamic_stdlib_test",
+ srcs = ["linux_dynamic_stdlib_test.sh"],
+ args = [
+ "$(rootpath :uses_dynamic_foundation)",
+ "$(rootpath @swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump)",
+ ],
+ data = [
+ ":uses_dynamic_foundation",
+ "@swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump",
+ ],
+ target_compatible_with = [
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
+ ],
+)
+
+sh_test(
+ name = "linux_linkshared_dynamic_stdlib_test",
+ srcs = ["linux_linkshared_dynamic_stdlib_test.sh"],
+ args = [
+ "$(rootpath :uses_foundation_shared)",
+ "$(rootpath @swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump)",
+ ],
+ data = [
+ ":uses_foundation_shared",
+ "@swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump",
+ ],
+ target_compatible_with = [
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
+ ],
+)
+
+sh_test(
+ name = "_linux_non_hermetic_dynamic_stdlib_test",
+ srcs = ["linux_non_hermetic_dynamic_stdlib_test.sh"],
+ args = [
+ "$(rootpath :uses_dynamic_foundation)",
+ "--execute",
+ ],
+ data = [":uses_dynamic_foundation"],
+ tags = ["manual"],
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+sh_test(
+ name = "_linux_non_hermetic_linkshared_dynamic_stdlib_test",
+ srcs = ["linux_non_hermetic_dynamic_stdlib_test.sh"],
+ args = ["$(rootpath :uses_foundation_shared)"],
+ data = [":uses_foundation_shared"],
+ tags = ["manual"],
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+# These wrappers select the host Swift toolchains automatically. Keep them
+# manual so hermetic //... builds do not select a host toolchain.
+transition_test(
+ name = "linux_non_hermetic_dynamic_stdlib_test",
+ args = [
+ "test/linux_static_stdlib/uses_dynamic_foundation",
+ "--execute",
+ ],
+ extra_toolchains = [
+ "//swift/toolchains:linux-swift-toolchain_aarch64",
+ "//swift/toolchains:linux-swift-toolchain_x86_64",
+ ],
+ tags = ["manual"],
+ target = ":_linux_non_hermetic_dynamic_stdlib_test",
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+transition_test(
+ name = "linux_non_hermetic_linkshared_dynamic_stdlib_test",
+ args = ["test/linux_static_stdlib/libuses_foundation_shared.so"],
+ extra_toolchains = [
+ "//swift/toolchains:linux-swift-toolchain_aarch64",
+ "//swift/toolchains:linux-swift-toolchain_x86_64",
+ ],
+ tags = ["manual"],
+ target = ":_linux_non_hermetic_linkshared_dynamic_stdlib_test",
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+sh_test(
+ name = "linux_static_stdlib_test",
+ srcs = ["linux_static_stdlib_test.sh"],
+ args = [
+ "$(rootpath :uses_foundation)",
+ "$(rootpath @swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump)",
+ ],
+ data = [
+ ":uses_foundation",
+ "@swift_toolchain_ubuntu22.04//:usr/bin/llvm-objdump",
+ ],
+ target_compatible_with = [
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
+ ],
+)
diff --git a/test/linux_static_stdlib/FoundationLibrary.swift b/test/linux_static_stdlib/FoundationLibrary.swift
new file mode 100644
index 000000000..b583014f8
--- /dev/null
+++ b/test/linux_static_stdlib/FoundationLibrary.swift
@@ -0,0 +1,5 @@
+import Foundation
+
+public func swiftOrgHost() -> String {
+ URL(string: "https://www.swift.org")!.host()!
+}
diff --git a/test/linux_static_stdlib/FoundationLibraryTests.swift b/test/linux_static_stdlib/FoundationLibraryTests.swift
new file mode 100644
index 000000000..ce3a727a0
--- /dev/null
+++ b/test/linux_static_stdlib/FoundationLibraryTests.swift
@@ -0,0 +1,8 @@
+import FoundationLibrary
+import XCTest
+
+final class FoundationLibraryTests: XCTestCase {
+ func testSwiftOrgHost() {
+ XCTAssertEqual(swiftOrgHost(), "www.swift.org")
+ }
+}
diff --git a/test/linux_static_stdlib/linux_dynamic_stdlib_test.sh b/test/linux_static_stdlib/linux_dynamic_stdlib_test.sh
new file mode 100755
index 000000000..57ee69fcc
--- /dev/null
+++ b/test/linux_static_stdlib/linux_dynamic_stdlib_test.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+readonly binary="$1"
+readonly objdump="$2"
+
+dynamic_section="$($objdump -p "$binary")"
+
+if ! grep -Eq '^[[:space:]]*NEEDED[[:space:]]+libswiftCore\.so$' <<<"$dynamic_section"; then
+ echo "error: '$binary' does not dynamically link libswiftCore.so" >&2
+ exit 1
+fi
+
+runpath="$(sed -n 's/^[[:space:]]*\(RUNPATH\|RPATH\)[[:space:]]*//p' <<<"$dynamic_section")"
+if [[ "$runpath" != *'$ORIGIN/../../_solib_'* ]] ||
+ [[ "$runpath" != *'$ORIGIN/uses_dynamic_foundation.runfiles/_main/_solib_'* ]] ||
+ [[ "$runpath" != *'swift_Utoolchain_Uubuntu22.04'* ]] ||
+ [[ "$runpath" != *'usr_Slib_Sswift_Slinux'* ]]; then
+ echo "error: '$binary' does not have the expected Swift runtime search path:" >&2
+ echo "$runpath" >&2
+ exit 1
+fi
+
+"$binary"
diff --git a/test/linux_static_stdlib/linux_linkshared_dynamic_stdlib_test.sh b/test/linux_static_stdlib/linux_linkshared_dynamic_stdlib_test.sh
new file mode 100755
index 000000000..9cc57e475
--- /dev/null
+++ b/test/linux_static_stdlib/linux_linkshared_dynamic_stdlib_test.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+readonly library="$1"
+readonly objdump="$2"
+
+dynamic_section="$($objdump -p "$library")"
+
+if ! grep -Eq '^[[:space:]]*NEEDED[[:space:]]+libswiftCore\.so$' <<<"$dynamic_section"; then
+ echo "error: '$library' does not dynamically link libswiftCore.so" >&2
+ exit 1
+fi
+
+runpath="$(sed -n 's/^[[:space:]]*\(RUNPATH\|RPATH\)[[:space:]]*//p' <<<"$dynamic_section")"
+if [[ "$runpath" != *'$ORIGIN/../../_solib_'* ]] ||
+ [[ "$runpath" != *'swift_Utoolchain_Uubuntu22.04'* ]] ||
+ [[ "$runpath" != *'usr_Slib_Sswift_Slinux'* ]]; then
+ echo "error: '$library' does not have the expected Swift runtime search path:" >&2
+ echo "$runpath" >&2
+ exit 1
+fi
diff --git a/test/linux_static_stdlib/linux_non_hermetic_dynamic_stdlib_test.sh b/test/linux_static_stdlib/linux_non_hermetic_dynamic_stdlib_test.sh
new file mode 100755
index 000000000..623567707
--- /dev/null
+++ b/test/linux_static_stdlib/linux_non_hermetic_dynamic_stdlib_test.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+readonly artifact="$1"
+
+dynamic_section="$(readelf -d "$artifact")"
+needed_libraries="$(
+ sed -n 's/^.*(NEEDED).*Shared library: \[\(.*\)\]$/\1/p' <<<"$dynamic_section"
+)"
+
+for library in libswiftCore.so libFoundation.so; do
+ if ! grep -Fxq "$library" <<<"$needed_libraries"; then
+ echo "error: '$artifact' does not dynamically link $library" >&2
+ exit 1
+ fi
+done
+
+runpath="$(
+ sed -n 's/^.*(\(RUNPATH\|RPATH\)).*\[\(.*\)\]$/\2/p' <<<"$dynamic_section"
+)"
+runtime_dir=""
+IFS=: read -ra runpath_entries <<<"$runpath"
+for entry in "${runpath_entries[@]}"; do
+ if [[ "$entry" = /* ]] &&
+ [[ -f "$entry/libswiftCore.so" ]] &&
+ [[ -f "$entry/libFoundation.so" ]]; then
+ runtime_dir="$entry"
+ break
+ fi
+done
+
+if [[ -z "$runtime_dir" ]]; then
+ echo "error: '$artifact' does not have an absolute Swift runtime search path:" >&2
+ echo "$runpath" >&2
+ exit 1
+fi
+
+if [[ "${2:-}" == "--execute" ]]; then
+ "$artifact"
+fi
diff --git a/test/linux_static_stdlib/linux_static_stdlib_test.sh b/test/linux_static_stdlib/linux_static_stdlib_test.sh
new file mode 100755
index 000000000..635ff773d
--- /dev/null
+++ b/test/linux_static_stdlib/linux_static_stdlib_test.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+readonly binary="$1"
+readonly objdump="$2"
+
+needed_libraries="$($objdump -p "$binary" | sed -n 's/^[[:space:]]*NEEDED[[:space:]]*//p')"
+unexpected_libraries="$(grep -E '^(libswift|libFoundation|libdispatch|libBlocksRuntime|libTesting|libXCTest|lib_|libcurl|libxml2)' <<<"$needed_libraries" || true)"
+
+if [[ -n "$unexpected_libraries" ]]; then
+ echo "error: '$binary' has unexpected dynamic runtime dependencies:" >&2
+ echo "$unexpected_libraries" >&2
+ exit 1
+fi
+
+"$binary"
diff --git a/test/linux_static_stdlib/main.swift b/test/linux_static_stdlib/main.swift
new file mode 100644
index 000000000..f9236f40d
--- /dev/null
+++ b/test/linux_static_stdlib/main.swift
@@ -0,0 +1,3 @@
+import FoundationLibrary
+
+print(swiftOrgHost())
diff --git a/test/transitions.bzl b/test/transitions.bzl
index 5d4356622..50baa8312 100644
--- a/test/transitions.bzl
+++ b/test/transitions.bzl
@@ -5,6 +5,7 @@ load("@rules_cc//cc/common:objc_info.bzl", "ObjcInfo")
load("//swift:providers.bzl", "SwiftInfo")
_COMPILATION_MODE = "//command_line_option:compilation_mode"
+_EXTRA_TOOLCHAINS = "//command_line_option:extra_toolchains"
_FEATURES = "//command_line_option:features"
_HOST_FEATURES = "//command_line_option:host_features"
_IOS_MINIMUM_OS = "//command_line_option:ios_minimum_os"
@@ -14,6 +15,7 @@ _TVOS_MINIMUM_OS = "//command_line_option:tvos_minimum_os"
_TRANSITION_OPTIONS = [
_COMPILATION_MODE,
+ _EXTRA_TOOLCHAINS,
_FEATURES,
_HOST_FEATURES,
_IOS_MINIMUM_OS,
@@ -25,6 +27,7 @@ _TRANSITION_OPTIONS = [
def _transition_impl(settings, attr):
return {
_COMPILATION_MODE: attr.compilation_mode or settings[_COMPILATION_MODE],
+ _EXTRA_TOOLCHAINS: settings[_EXTRA_TOOLCHAINS] + attr.extra_toolchains,
_FEATURES: settings[_FEATURES] + attr.transitive_features,
_HOST_FEATURES: settings[_HOST_FEATURES] + attr.transitive_features,
_IOS_MINIMUM_OS: attr.ios_minimum_os or settings[_IOS_MINIMUM_OS],
@@ -48,6 +51,9 @@ _TRANSITION_ATTRS = {
),
values = ["", "dbg", "fastbuild", "opt"],
),
+ "extra_toolchains": attr.string_list(
+ doc = "Toolchains appended to --extra_toolchains for the transitioned target.",
+ ),
"minimum_os": attr.string(
doc = "Optional value to set `--macos_minimum_os` to.",
),