diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 1e5c5e379..75b1fdaca 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,28 +57,16 @@ 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
- 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
windows:
@@ -128,11 +98,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/MODULE.bazel b/MODULE.bazel
index 6b6a74319..e6803d7ba 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -9,6 +9,7 @@ module(
bazel_dep(name = "abseil-cpp", version = "20250814.1")
bazel_dep(name = "apple_support", version = "2.6.1")
+bazel_dep(name = "bazel_linux_packages", version = "0.3.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,21 @@ 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 lockfile: bazel run @swift_ubuntu22.04_sysroot//:lock
+apt = use_extension("@bazel_linux_packages//apt:extensions.bzl", "apt")
+apt.ubuntu(
+ name = "swift_ubuntu22.04_sysroot",
+ lockfile = "//swift/internal/extensions:ubuntu22.04_sysroot.lock.json",
+ packages = [
+ "libc6-dev",
+ "libstdc++-11-dev",
+ "linux-libc-dev",
+ "zlib1g-dev",
+ ],
+ suites = ["jammy"],
+)
+use_repo(apt, "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 +161,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 +223,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")
@@ -240,3 +258,21 @@ single_version_override(
patch_strip = 1,
patches = ["//third_party/patches:stardoc-revert-load-statements-in-docs.patch"],
)
+
+# FIXME: Delete after testing
+
+archive_override(
+ module_name = "apple_support",
+ integrity = "sha256-4YQ7nCqSJ4QcfTF8RLDRQseKtfFS1MTtWKnLlS3bg/U=",
+ strip_prefix = "apple_support-c268c90e7d1efe0d656081e29b11ab05ada9bdda",
+ urls = [
+ "https://github.com/bazelbuild/apple_support/archive/c268c90e7d1efe0d656081e29b11ab05ada9bdda.tar.gz",
+ ],
+)
+
+single_version_override(
+ module_name = "bazel_linux_packages",
+ patch_strip = 1,
+ patches = ["//third_party/patches:bazel-linux-packages-bazel-9.patch"],
+ version = "0.3.1",
+)
diff --git a/doc/providers.md b/doc/providers.md
index 238aacb6d..502e22fb4 100644
--- a/doc/providers.md
+++ b/doc/providers.md
@@ -268,9 +268,9 @@ 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, root_dir, swift_worker,
+ system_modules, implicit_system_modules, test_configuration, tool_configs,
+ unsupported_features)
Propagates information about a Swift toolchain to compilation and linking rules
@@ -296,7 +296,6 @@ that use the toolchain.
| 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). |
| 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. |
| 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..c1130258f 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_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")
@@ -76,12 +79,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 +116,42 @@ 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_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",
+)
+
+cc_feature(
+ name = "linux_sysroot",
+ args = [":linux_sysroot_args"],
+ feature_name = "sysroot",
+)
+
+apple_cc_toolchain(
+ name = "cc_toolchain_exec",
+ module_map = None,
+ supports_header_parsing = False,
+ sysroot_feature = ":linux_sysroot",
+ 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(
@@ -227,6 +282,12 @@ swift_toolchain(
"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",
@@ -235,8 +296,8 @@ swift_toolchain(
parsed_version = "{swift_version}",
runtime = glob(
[
- "usr/lib/swift/**/*.dylib", # On MacOS
- "usr/lib/swift/**/*.so", # On Linux
+ "usr/lib/swift/linux/*.so",
+ "usr/lib/swift/macosx/*.dylib",
],
allow_empty = True,
),
diff --git a/swift/internal/extensions/toolchains.bzl b/swift/internal/extensions/toolchains.bzl
index cb6916ba7..359395580 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,26 @@ 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,
)
+ # TODO: Expand based on sysroot compatibility, maybe we should allow users to pass them
+ 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_sysroot.lock.json b/swift/internal/extensions/ubuntu22.04_sysroot.lock.json
new file mode 100644
index 000000000..d5c554473
--- /dev/null
+++ b/swift/internal/extensions/ubuntu22.04_sysroot.lock.json
@@ -0,0 +1,968 @@
+{
+ "input_data": {
+ "architectures": [
+ "amd64"
+ ],
+ "packages": [
+ "libc6-dev",
+ "libstdc++-11-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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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/providers.bzl b/swift/providers.bzl
index ff5d84a98..f9f1f5db5 100644
--- a/swift/providers.bzl
+++ b/swift/providers.bzl
@@ -440,10 +440,6 @@ Swift build rules, and they are also passed to the C++ APIs used when linking
""",
"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.
""",
"swift_worker": """\
`File`. The executable representing the worker executable used to invoke the
diff --git a/swift/swift_test.bzl b/swift/swift_test.bzl
index 25cd3d8a9..214175292 100644
--- a/swift/swift_test.bzl
+++ b/swift/swift_test.bzl
@@ -516,9 +516,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/swift_toolchain.bzl b/swift/toolchains/swift_toolchain.bzl
index 12f101dba..a71fcfec0 100644
--- a/swift/toolchains/swift_toolchain.bzl
+++ b/swift/toolchains/swift_toolchain.bzl
@@ -390,8 +390,7 @@ def _swift_unix_linkopts_cc_info(
os,
toolchain_label,
toolchain_root,
- additional_inputs,
- additional_rpaths):
+ additional_inputs):
"""Returns a `CcInfo` containing flags that should be passed to the linker.
The provider returned by this function will be used as an implicit
@@ -406,8 +405,6 @@ def _swift_unix_linkopts_cc_info(
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.
-
Returns:
A `CcInfo` provider that will provide linker flags to binaries that
depend on Swift targets.
@@ -434,9 +431,6 @@ def _swift_unix_linkopts_cc_info(
"-ldl",
runtime_object_path,
"-static-libgcc",
- ] + [
- "-Wl,-rpath,{}".format(rpath)
- for rpath in additional_rpaths
]
return CcInfo(
@@ -482,6 +476,32 @@ def _swift_sdk_linkopts_cc_info(
),
)
+def _runtime_cc_info(ctx, cc_toolchain):
+ """Returns linker metadata for shared libraries required at runtime."""
+ 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 ctx.files.runtime
+ ]
+ return CcInfo(
+ linking_context = cc_common.create_linking_context(
+ linker_inputs = depset([
+ cc_common.create_linker_input(
+ owner = ctx.label,
+ libraries = depset(libraries),
+ ),
+ ]),
+ ),
+ )
+
def _entry_point_linkopts_provider(*, entry_point_name):
"""Returns linkopts to customize the entry point of a binary."""
return struct(
@@ -551,7 +571,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 +583,6 @@ 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,
- ),
- )
-
if ctx.attr.os == "windows":
swift_linkopts_cc_info = _swift_windows_linkopts_cc_info(
ctx.attr.arch,
@@ -611,7 +621,6 @@ def _swift_toolchain_impl(ctx):
ctx.label,
toolchain_root,
ctx.attr.swift_tools[SwiftToolsInfo].additional_inputs if ctx.attr.swift_tools else [],
- additional_rpaths,
)
swiftcopts = []
@@ -710,7 +719,10 @@ 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,
+ _runtime_cc_info(ctx, cc_toolchain),
+ ],
),
package_configurations = [
target[SwiftPackageConfigurationInfo]
@@ -718,7 +730,6 @@ def _swift_toolchain_impl(ctx):
],
requested_features = requested_features,
root_dir = toolchain_root,
- runtime = depset(ctx.files.runtime),
system_modules = collect_implicit_deps_providers([]),
implicit_system_modules = collect_implicit_deps_providers([]),
swift_worker = ctx.attr._worker[DefaultInfo].files_to_run,
@@ -799,7 +810,7 @@ configuration options that are applied to targets on a per-package basis.
"root": attr.string(),
"runtime": attr.label_list(
doc = """\
-List of files to carry over as test data to swift executables and tests.
+Shared libraries that should be added to the linking context of Swift targets.
""",
allow_files = True,
),
@@ -902,6 +913,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..de6c5ae61 100644
--- a/swift/toolchains/xcode_swift_toolchain.bzl
+++ b/swift/toolchains/xcode_swift_toolchain.bzl
@@ -956,7 +956,6 @@ def _xcode_swift_toolchain_impl(ctx):
for target in ctx.attr.package_configurations
],
requested_features = requested_features,
- runtime = depset(),
system_modules = collect_implicit_deps_providers(
[ctx.attr.system_modules] if ctx.attr.system_modules else [],
),
diff --git a/third_party/patches/bazel-linux-packages-bazel-9.patch b/third_party/patches/bazel-linux-packages-bazel-9.patch
new file mode 100644
index 000000000..6c53af618
--- /dev/null
+++ b/third_party/patches/bazel-linux-packages-bazel-9.patch
@@ -0,0 +1,24 @@
+diff --git a/MODULE.bazel b/MODULE.bazel
+index 7c85d01..256bed2 100644
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -10,5 +10,6 @@ bazel_dep(name = "platforms", version = "1.0.0")
+ bazel_dep(name = "bazel_skylib", version = "1.8.1")
+ bazel_dep(name = "bazel_lib", version = "3.1.0")
+ bazel_dep(name = "jq.bzl", version = "0.4.0")
++bazel_dep(name = "rules_shell", version = "0.3.0")
+
+ deb_archive = use_repo_rule("//internal:deb.bzl", "deb_archive")
+diff --git a/apt/private/deb_download.bzl b/apt/private/deb_download.bzl
+index a9a4e9b..cf3b103 100644
+--- a/apt/private/deb_download.bzl
++++ b/apt/private/deb_download.bzl
+@@ -52,6 +52,8 @@ def _get_input_data_with_sources(rctx):
+ return input_data
+
+ _INDEX_BUILD_TMPL = """
++load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
++
+ filegroup(
+ name = "lockfile",
+ srcs = ["lock.json"],