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_configsconst_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"],