diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 000000000..2b29f2764 --- /dev/null +++ b/.bazelignore @@ -0,0 +1 @@ +tests diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 000000000..c347c53a3 --- /dev/null +++ b/.bazelrc @@ -0,0 +1 @@ +try-import %workspace%/.bazelrc.user diff --git a/.bcr/metadata.template.json b/.bcr/metadata.template.json new file mode 100644 index 000000000..af544fec4 --- /dev/null +++ b/.bcr/metadata.template.json @@ -0,0 +1,23 @@ +{ + "homepage": "https://github.com/bazel-contrib/toolchains_llvm", + "maintainers": [ + { + "email": "fabian@meumertzhe.im", + "github": "fmeum", + "name": "Fabian Meumertzheim" + }, + { + "email": "james.sharpe@zenotech.com", + "github": "jsharpe", + "name": "James Sharpe" + }, + { + "email": "rrbutani@users.noreply.github.com", + "github": "rrbutani", + "name": "Rahul Butani" + } + ], + "repository": ["github:bazel-contrib/toolchains_llvm"], + "versions": [], + "yanked_versions": {} +} diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml new file mode 100644 index 000000000..a09e03214 --- /dev/null +++ b/.bcr/presubmit.yml @@ -0,0 +1,25 @@ +matrix: + bazel: [7.*, 8.*] + platform: [ubuntu2004, ubuntu2404, macos, macos_arm64] +tasks: + verify_targets: + name: Verify build targets + bazel: ${{ bazel }} + platform: ${{ platform }} + build_targets: + - "@toolchains_llvm//toolchain:all" + - "@toolchains_llvm//platforms:all" +bcr_test_module: + module_path: tests + matrix: + bazel: [7.*, 8.*] + platform: [ubuntu2004, ubuntu2404, macos, macos_arm64] + tasks: + run_test_module: + name: Run test module + bazel: ${{ bazel }} + platform: ${{ platform }} + build_targets: + - //:all + test_targets: + - //:all diff --git a/.bcr/source.template.json b/.bcr/source.template.json new file mode 100644 index 000000000..631b95a47 --- /dev/null +++ b/.bcr/source.template.json @@ -0,0 +1,5 @@ +{ + "integrity": "**leave this alone**", + "strip_prefix": "{REPO}-{TAG}", + "url": "https://github.com/{OWNER}/{REPO}/releases/download/{TAG}/toolchains_llvm-{TAG}.tar.gz" +} diff --git a/.buildifier.json b/.buildifier.json new file mode 100644 index 000000000..b7efe40a7 --- /dev/null +++ b/.buildifier.json @@ -0,0 +1,60 @@ +{ + "type": "auto", + "mode": "fix", + "lint": "fix", + "warningsList": [ + "attr-applicable_licenses", + "attr-cfg", + "attr-license", + "attr-licenses", + "attr-non-empty", + "attr-output-default", + "attr-single-file", + "build-args-kwargs", + "bzl-visibility", + "confusing-name", + "constant-glob", + "ctx-actions", + "ctx-args", + "deprecated-function", + "depset-items", + "depset-iteration", + "depset-union", + "dict-concatenation", + "dict-method-named-arg", + "duplicated-name", + "filetype", + "git-repository", + "http-archive", + "integer-division", + "keyword-positional-params", + "list-append", + "load", + "name-conventions", + "native-android", + "native-build", + "native-cc", + "native-package", + "native-proto", + "native-py", + "no-effect", + "output-group", + "overly-nested-depset", + "package-name", + "package-on-top", + "positional-args", + "print", + "provider-params", + "redefined-variable", + "repository-name", + "return-value", + "rule-impl-return", + "skylark-comment", + "skylark-docstring", + "string-iteration", + "uninitialized", + "unnamed-macro", + "unreachable", + "unused-variable" + ] +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..19ec958f8 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @rrbutani @jsharpe @fmeum @helly25 @dzbarsky diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..bb13eaa8c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +# Cut a release whenever a new tag is pushed to the repo. +# You should use an annotated tag, like `git tag -a v1.2.3` +# and put the release notes into the commit message for the tag. +name: Release + +on: + push: + tags: + - "*.*.*" + +permissions: read-all + +jobs: + release: + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Prepare release + run: .github/workflows/release_prep.sh > release_notes.txt + - name: Release + uses: softprops/action-gh-release@v2 + with: + prerelease: false + generate_release_notes: true + body_path: release_notes.txt + files: toolchains_llvm-*.tar.gz + fail_on_unmatched_files: true diff --git a/.github/workflows/release_notes_template.txt b/.github/workflows/release_notes_template.txt new file mode 100644 index 000000000..27a7275e7 --- /dev/null +++ b/.github/workflows/release_notes_template.txt @@ -0,0 +1,68 @@ +Minimum bazel version: **7.0.0** + +If you're using `bzlmod`, add the following to `MODULE.bazel`: + +```starlark +bazel_dep(name = "toolchains_llvm", version = "{version}") + +# Configure and register the toolchain. +llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm") +llvm.toolchain( + llvm_version = "16.0.0", +) + +use_repo(llvm, "llvm_toolchain") +# use_repo(llvm, "llvm_toolchain_llvm") # if you depend on specific tools in scripts + +register_toolchains("@llvm_toolchain//:all") +``` + +To directly use a commit from GitHub, add this block and replace commit with the commit you want. +```starlark +git_override( + module_name = "toolchains_llvm", + commit = "{commit}", + remote = "https://github.com/bazel-contrib/toolchains_llvm", +) +``` + +If not using `bzlmod`, include this section in your `WORKSPACE`: + +```starlark +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "toolchains_llvm", + sha256 = "{sha}", + strip_prefix = "{prefix}", + canonical_id = "{tag}", + url = "https://github.com/bazel-contrib/toolchains_llvm/releases/download/{tag}/{archive}", +) + +load("@toolchains_llvm//toolchain:deps.bzl", "bazel_toolchain_dependencies") + +bazel_toolchain_dependencies() + +load("@bazel_features//:deps.bzl", "bazel_features_deps") + +bazel_features_deps() + +load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo") + +# If you see an error: +# ERROR: Cycle caused by autoloads, failed to load .bzl file '@@cc_compatibility_proxy//:symbols.bzl'. +# then you might need to add the following to your .bzelrc: +# common --repositories_without_autoloads=cc_compatibility_proxy +compatibility_proxy_repo() + +load("@toolchains_llvm//toolchain:rules.bzl", "llvm_toolchain") + +llvm_toolchain( + name = "llvm_toolchain", + llvm_version = "16.0.0", +) + +load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains") + +llvm_register_toolchains() +``` diff --git a/.github/workflows/release_prep.sh b/.github/workflows/release_prep.sh new file mode 100755 index 000000000..27ce86dfc --- /dev/null +++ b/.github/workflows/release_prep.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset -o pipefail + +git config user.email "you@example.com" +git config user.name "Your Name" + +# Set by GH actions, see +# https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables +tag="${GITHUB_REF_NAME}" +commit="${GITHUB_SHA}" +# The prefix is chosen to match what GitHub generates for source archives +prefix="toolchains_llvm-${tag}" +archive="toolchains_llvm-${tag}.tar.gz" +git archive --format=tar --prefix="${prefix}/" HEAD | gzip >"${archive}" +sha=$(shasum -a 256 "${archive}" | cut -f1 -d' ') + +# Strip leading "v" from the tag if present to create the semver version. +sed \ + -e "s/{version}/${tag#v}/g" \ + -e "s/{tag}/${tag}/g" \ + -e "s/{commit}/${commit}/g" \ + -e "s/{prefix}/${prefix}/g" \ + -e "s/{archive}/${archive}/g" \ + -e "s/{sha}/${sha}/g" \ + .github/workflows/release_notes_template.txt diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c03c79d0d..e7cb0e12e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,60 +2,144 @@ name: Tests on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] + +concurrency: + group: ${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: read-all jobs: + lint: + runs-on: ubuntu-latest + permissions: + checks: write # For trunk to post annotations + contents: read # For repo checkout + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Trunk Check + uses: trunk-io/trunk-action@v1 test: + strategy: + fail-fast: false + matrix: + os: [macos-latest, ubuntu-latest] + bazel_version: [7.*, 8.*, 9.*, latest] + bzlmod: [true, false] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v6 + - if: startsWith(matrix.os, 'ubuntu') + run: tests/scripts/ubuntu_install_libtinfo.sh + - run: sudo rm -rf /usr/share/dotnet /usr/local/lib/android + - name: Test + env: + USE_BAZEL_VERSION: ${{ matrix.bazel_version }} + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_tests.sh -O + toolchain_test: + strategy: + fail-fast: false + matrix: + os: [macos-latest, ubuntu-latest] + bazel_version: [7.*, 8.*, 9.*, latest] + bzlmod: [true, false] runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v6 + - name: Test + env: + USE_BAZEL_VERSION: ${{ matrix.bazel_version }} + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_toolchain_tests.sh + external_test: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest] - script: [run_tests.sh, run_external_tests.sh] - bazel_version: [latest, 6.0.0] - exclude: - - script: run_external_tests.sh - bazel_version: 6.0.0 - steps: - - uses: actions/checkout@v3 - - name: test - env: - USE_BAZEL_VERSION: ${{ matrix.bazel_version }} - run: tests/scripts/${{ matrix.script }} + bazel_version: [latest] # rules_rust bzlmod support is experimental and needs latest version as of now (20230912). + bzlmod: [true, false] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v6 + - if: startsWith(matrix.os, 'ubuntu') + run: tests/scripts/ubuntu_install_libtinfo.sh + - name: Test + env: + USE_BAZEL_VERSION: ${{ matrix.bazel_version }} + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_external_tests.sh container_test: - runs-on: ubuntu-latest strategy: fail-fast: false matrix: - script: [archlinux, debian, fedora, suse_leap, suse_tumbleweed, ubuntu_20_04, ubuntu_22_04, linux_sysroot] + script: [ + archlinux, + debian, + fedora, + suse_leap, + suse_tumbleweed, + ubuntu_20_04, # Includes omp tests + ubuntu_22_04, + ubuntu_24_04, + linux_sysroot, + ] + bzlmod: [true, false] + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: test - run: tests/scripts/${{ matrix.script }}_test.sh + - uses: actions/checkout@v6 + - run: sudo rm -rf /usr/share/dotnet /usr/local/lib/android + - name: Test + env: + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/${{ matrix.script }}_test.sh xcompile_test: + strategy: + fail-fast: false + matrix: + bzlmod: [true, false] runs-on: macos-latest steps: - - uses: actions/checkout@v3 - - name: test - run: tests/scripts/run_xcompile_tests.sh + - uses: actions/checkout@v6 + - name: Test + env: + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_xcompile_tests.sh abs_paths_test: + strategy: + fail-fast: false + matrix: + bzlmod: [true, false] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: test - run: tests/scripts/run_tests.sh -t @llvm_toolchain_with_absolute_paths//:cc-toolchain-x86_64-linux + - uses: actions/checkout@v6 + - run: tests/scripts/ubuntu_install_libtinfo.sh + - name: Test + env: + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_tests.sh -t @llvm_toolchain_with_absolute_paths//:cc-toolchain-x86_64-linux -O sys_paths_test: + strategy: + fail-fast: false + matrix: + bzlmod: [true, false] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: Download and Extract LLVM distribution - env: - release: "llvmorg-15.0.6" - archive: "clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04" - ext: ".tar.xz" - local_path: "/tmp/llvm-15" - run: wget --no-verbose "https://github.com/llvm/llvm-project/releases/download/${release}/${archive}${ext}" && tar -xf "${archive}${ext}" && mv "${archive}" "${local_path}" - - name: test - run: tests/scripts/run_tests.sh -t @llvm_toolchain_with_system_llvm//:cc-toolchain-x86_64-linux + - uses: actions/checkout@v6 + - run: tests/scripts/ubuntu_install_libtinfo.sh + - name: Download and Extract LLVM distribution + # The downloaded version here must match version specified as '-v' arg to run_tests.sh below. + env: + release: llvmorg-16.0.0 + archive: clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04 + ext: .tar.xz + local_path: /opt/llvm-16 + run: wget --no-verbose "https://github.com/llvm/llvm-project/releases/download/${release}/${archive}${ext}" && tar -xf "${archive}${ext}" && mv "${archive}" "${local_path}" + - name: Test + env: + USE_BZLMOD: ${{ matrix.bzlmod }} + run: tests/scripts/run_tests.sh -t @llvm_toolchain_with_system_llvm//:cc-toolchain-x86_64-linux -v 16.0.0 diff --git a/.gitignore b/.gitignore index cda63fa24..305a45440 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +/bazel-* /tests/bazel-* /toolchain/tools/__pycache__ /toolchain/tools/host_os_key.pyc +MODULE.bazel.lock +/.bazelrc.user diff --git a/.trunk/.gitignore b/.trunk/.gitignore new file mode 100644 index 000000000..1e2465290 --- /dev/null +++ b/.trunk/.gitignore @@ -0,0 +1,8 @@ +*out +*logs +*actions +*notifications +*tools +plugins +user_trunk.yaml +user.yaml diff --git a/.trunk/configs/.editorconfig b/.trunk/configs/.editorconfig new file mode 100644 index 000000000..0020fc03a --- /dev/null +++ b/.trunk/configs/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +indent_style = space +indent_size = 2 diff --git a/.trunk/configs/.markdownlint.yaml b/.trunk/configs/.markdownlint.yaml new file mode 100644 index 000000000..fb940393d --- /dev/null +++ b/.trunk/configs/.markdownlint.yaml @@ -0,0 +1,10 @@ +# Autoformatter friendly markdownlint config (all formatting rules disabled) +default: true +blank_lines: false +bullet: false +html: false +indentation: false +line_length: false +spaces: false +url: false +whitespace: false diff --git a/.trunk/configs/.shellcheckrc b/.trunk/configs/.shellcheckrc new file mode 100644 index 000000000..8c7b1ada8 --- /dev/null +++ b/.trunk/configs/.shellcheckrc @@ -0,0 +1,7 @@ +enable=all +source-path=SCRIPTDIR +disable=SC2154 + +# If you're having issues with shellcheck following source, disable the errors via: +# disable=SC1090 +# disable=SC1091 diff --git a/.trunk/configs/.yamllint.yaml b/.trunk/configs/.yamllint.yaml new file mode 100644 index 000000000..4d444662d --- /dev/null +++ b/.trunk/configs/.yamllint.yaml @@ -0,0 +1,10 @@ +rules: + quoted-strings: + required: only-when-needed + extra-allowed: ["{|}"] + empty-values: + forbid-in-block-mappings: true + forbid-in-flow-mappings: true + key-duplicates: {} + octal-values: + forbid-implicit-octal: true diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml new file mode 100644 index 000000000..c3a42414c --- /dev/null +++ b/.trunk/trunk.yaml @@ -0,0 +1,76 @@ +version: 0.1 +cli: + version: 1.15.0 +plugins: + sources: + - id: trunk + ref: v1.2.3 + uri: https://github.com/trunk-io/plugins +runtimes: + enabled: + - go@1.21.0 + - node@18.12.1 + - python@3.10.8 +lint: + definitions: + - name: buildifier + files: [starlark, bazel-build, bazel-workspace] + tools: [buildifier] + commands: + - name: fix + run: buildifier --lint=fix "${target}" + output: rewrite + cache_results: true + formatter: true + in_place: true + batch: true + success_codes: [0] + - name: warn + run: buildifier --lint=warn --format=json --mode=check "${target}" + # Custom parser type defined in the trunk cli to handle buildifier's JSON output. + output: buildifier + cache_results: true + batch: true + success_codes: [0] + suggest_if: files_present + direct_configs: + - .buildifier.json + # Not a native buildifier construct, but useful for 'addTables', see test file + - .buildifier-tables.json + environment: + - name: PATH + list: ["${linter}"] + known_good_version: 7.1.0 + version_command: + parse_regex: ${semver} + run: buildifier --version + # Default shfmt config uses -s flag to simplify code but this can cause + # unwanted semantic changes + - name: shfmt + commands: + - name: format + output: shfmt + run: shfmt -w ${target} + success_codes: [0, 1] + cache_results: true + formatter: true + batch: true + in_place: true + enabled: + - actionlint@1.7.8 + - buildifier@7.1.0 + - checkov@2.4.9 + - git-diff-check + - markdownlint@0.36.0 + - prettier@3.0.3 + - shellcheck@0.9.0 + - shfmt@3.6.0 + - trivy@0.45.0 + - trufflehog@3.55.1 + - yamllint@1.32.0 +actions: + enabled: + - trunk-announce + - trunk-check-pre-push + - trunk-fmt-pre-commit + - trunk-upgrade-available diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 000000000..7dc9146d6 --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,41 @@ +# Copyright 2023 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module( + name = "toolchains_llvm", + bazel_compatibility = [">=7.0.0"], + compatibility_level = 0, +) + +bazel_dep(name = "bazel_features", version = "1.38.0") +bazel_dep(name = "bazel_skylib", version = "1.8.2") +bazel_dep(name = "aspect_bazel_lib", version = "2.19.3") +bazel_dep(name = "rules_cc", version = "0.2.14") +bazel_dep(name = "platforms", version = "1.0.0") +bazel_dep(name = "helly25_bzl", version = "0.3.1") + +bazel_dep(name = "tar.bzl", version = "0.6.0") +tar_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains") +use_repo( + tar_toolchains, + "bsd_tar_toolchains_darwin_amd64", + "bsd_tar_toolchains_darwin_arm64", + "bsd_tar_toolchains_linux_amd64", + "bsd_tar_toolchains_linux_arm64", + "bsd_tar_toolchains_windows_amd64", + "bsd_tar_toolchains_windows_arm64", +) + +# TODO: Remove when protobuf is released with a version of rules_python that supports 8.x +bazel_dep(name = "rules_python", version = "1.0.0", dev_dependency = True) diff --git a/README.md b/README.md index 8ca96c842..3e84becff 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,13 @@ -LLVM toolchain for Bazel [![Tests](https://github.com/grailbio/bazel-toolchain/actions/workflows/tests.yml/badge.svg)](https://github.com/grailbio/bazel-toolchain/actions/workflows/tests.yml) -================= - -------- - -The project is in a relatively stable state and in use for all code development -at GRAIL and other organizations. Having said that, I am unable to give time to -it at any regular cadence. - -I rely on the community for maintenance and new feature implementations. If you -are interested in being part of this project, please let me know and I can give -you write access, so you can merge your changes directly. - -If you feel like you have a better maintained fork or an alternative/derived -implementation, please let me know and I can redirect people there. - -– @siddharthab - -------- +# LLVM toolchain for Bazel [![Tests](https://github.com/bazel-contrib/toolchains_llvm/actions/workflows/tests.yml/badge.svg)](https://github.com/bazel-contrib/toolchains_llvm/actions/workflows/tests.yml) ## Quickstart -Minimum bazel version: **6.0.0** - -To use this toolchain, include this section in your WORKSPACE: -```starlark -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -BAZEL_TOOLCHAIN_TAG = "0.8.2" -BAZEL_TOOLCHAIN_SHA = "0fc3a2b0c9c929920f4bed8f2b446a8274cad41f5ee823fd3faa0d7641f20db0" - -http_archive( - name = "com_grail_bazel_toolchain", - sha256 = BAZEL_TOOLCHAIN_SHA, - strip_prefix = "bazel-toolchain-{tag}".format(tag = BAZEL_TOOLCHAIN_TAG), - canonical_id = BAZEL_TOOLCHAIN_TAG, - url = "https://github.com/grailbio/bazel-toolchain/archive/refs/tags/{tag}.tar.gz".format(tag = BAZEL_TOOLCHAIN_TAG), -) - -load("@com_grail_bazel_toolchain//toolchain:deps.bzl", "bazel_toolchain_dependencies") - -bazel_toolchain_dependencies() - -load("@com_grail_bazel_toolchain//toolchain:rules.bzl", "llvm_toolchain") - -llvm_toolchain( - name = "llvm_toolchain", - llvm_version = "16.0.0", -) - -load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains") +See notes on the [release](https://github.com/bazel-contrib/toolchains_llvm/releases) +for how to get started. -llvm_register_toolchains() -``` +NOTE: For releases prior to 0.10.1, please also see [these notes](REPO_RENAME.md). -And add the following section to your .bazelrc file: -``` -# Not needed after https://github.com/bazelbuild/bazel/issues/7260 is closed -build --incompatible_enable_cc_toolchain_resolution - -# Tell Bazel to pass the right flags for llvm-ar, not libtool. Only needed if you are building on darwin. -# See https://github.com/bazelbuild/bazel/blob/5c75d0acec21459bbb13520817e3806e1507e907/tools/cpp/unix_cc_toolchain_config.bzl#L1000-L1024 -build --features=-libtool -``` + ## Basic Usage @@ -74,7 +20,7 @@ attributes to `llvm_toolchain`. ## Advanced Usage -#### Per host architecture LLVM version +### Per host architecture LLVM version LLVM does not come with distributions for all host architectures in each version. In particular patch versions often come with few prebuilt packages. @@ -87,7 +33,7 @@ specified explicitly. This is like providing `llvm_version = "15.0.6"`, just like in the example on the top. However, here we provide two more entries that map their respective target to a distinct version: -``` +```starlark llvm_toolchain( name = "llvm_toolchain", llvm_versions = { @@ -98,19 +44,55 @@ llvm_toolchain( ) ``` -#### Customizations +### Customizations We currently offer limited customizability through attributes of the -[llvm_toolchain_\* rules](toolchain/rules.bzl). You can send us a PR to add +[llvm_toolchain\_\* rules](toolchain/rules.bzl). You can send us a PR to add more configuration attributes. +The `MODULE.bazel` example below demonstrates how to add new LLVM distributions before the toolchain has +been updated. They can easily be computed using the provided checksum tool (see `llvm_checksums.sh -h`). + +```starlark +llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm", dev_dependency = True) +llvm.toolchain( + name = "llvm_toolchain", + llvm_version = "20.1.4", + extra_llvm_distributions = { + "LLVM-20.1.4-Linux-ARM64.tar.xz": "4de80a332eecb06bf55097fd3280e1c69ed80f222e5bdd556221a6ceee02721a", + "LLVM-20.1.4-Linux-X64.tar.xz": "113b54c397adb2039fa45e38dc8107b9ec5a0baead3a3bac8ccfbb65b2340caa", + "LLVM-20.1.4-macOS-ARM64.tar.xz": "debb43b7b364c5cf864260d84ba1b201d49b6460fe84b76eaa65688dfadf19d2", + "clang+llvm-20.1.4-x86_64-pc-windows-msvc.tar.xz": "2b12ac1a0689e29a38a7c98c409cbfa83f390aea30c60b7a06e4ed73f82d2457", + }, +) +``` + +The following `WORKSPACE` snippet shows how to add a specific version for a specific target before +the version was added to [llvm_distributions.bzl](toolchain/internal/llvm_distributions.bzl). + +```starlark +llvm_toolchain( + name = "llvm_toolchain", + llvm_version = "19.1.6", + sha256 = {"linux-x86_64": "d55dcbb309de7ade4e3073ec3ac3fac4d3ff236d54df3c4de04464fe68bec531"}, + strip_prefix = { + "linux-x86_64": "LLVM-19.1.6-Linux-X64", + }, + urls = { + "linux-x86_64": [ + "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.6/LLVM-19.1.6-Linux-X64.tar.xz", + ], + }, +) +``` + A majority of the complexity of this project is to make it generic for multiple use cases. For one-off experiments with new architectures, cross-compilations, new compiler features, etc., my advice would be to look at the toolchain configurations generated by this repo, and copy-paste/edit to make your own in any package in your own workspace. -``` +```sh bazel query --output=build @llvm_toolchain//:all | grep -v -e '^#' -e '^ generator' ``` @@ -123,7 +105,7 @@ directory, and also create a wrapper script for clang such that the actual clang invocation is not through the symlinked path. See the files in the `@llvm_toolchain//:` package as a reference. -``` +```sh # See generated files for reference. ls -lR "$(bazel info output_base)/external/llvm_toolchain" @@ -141,7 +123,54 @@ See [bazel tutorial](https://docs.bazel.build/versions/main/tutorial/cc-toolchain-config.html) for how CC toolchains work in general. -#### Selecting Toolchains +### Requirements + +Version attributes can be requirements of the form `first`, `first:`, +`latest` or `latest:`. + +In case of `latest`, the latest distribution matching the optional `condition` +will be selected. + +In case of `first`, the first distribution matching the optional `condition` +will be selected. + +The condition consists of a comma separated list of semver version comparisons +supporting `<`, `<=`, `>`, `>=`, `==`, `!=`. Examples: + +- `latest` +- `latest:>=20.1.0` +- `latest:>17.0.4,!=19.1.7,<=20.1.0` +- `first:>=15.0.6,<16` + +It is further possible to provide the version or requirement from an environment +variable with a fallback version or requirement. In this case it is important to +also use the bazel flag `--repo_env=LLVM_VERSION=version_or_requirement`. It is +important to use both correctly because otherwise the resulting builds are not +reproducible. The main purpose of using an environment variable to encode the +version for integration or batch testing on multiple platforms where multiple +LLVM versions should be tested. + +- `getenv(ENVIRONMENT_VARIABLE_NAME,fallback)` + +Example `MODULE.bazel` + +```starlark +llvm.toolchain( + name = "llvm_toolchain", + llvm_versions = { + "": "getenv(LLVM_VERSION,latest:>=17.0.0,<20)", + "darwin-x86_64": "15.0.7", # Verify this works as opposed to using one version. + }, +) +``` + +In this example, MacOS x86 machines have their LLVM version hard-coded to +`15.0.7`. For all other targets the LLVM version is read from the environment +variable `LLVM_VERSION` which must be referenced on the Bazel command line as +explained above. If the variable is not present, then the LLVM version defaults +to the requirement expression `latest:>=17.0.0,<20`. + +### Selecting Toolchains If toolchains are registered (see Quickstart section above), you do not need to do anything special for bazel to find the toolchain. You may want to check once @@ -149,13 +178,10 @@ with the `--toolchain_resolution_debug` flag to see which toolchains were selected by bazel for your target platform. For specifying unregistered toolchains on the command line, please use the -`--extra_toolchains` flag. For example, +`--extra_toolchains` flag. For example, `--extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux`. -We no longer support the `--crosstool_top=@llvm_toolchain//:toolchain` flag, -and instead rely on the `--incompatible_enable_cc_toolchain_resolution` flag. - -#### Bring Your Own LLVM +### Bring Your Own LLVM The following mechanisms are available for using an LLVM toolchain: @@ -172,12 +198,13 @@ The following mechanisms are available for using an LLVM toolchain: the archive is downloaded and extracted as a separate repository with the suffix `_llvm`. 3. You can also specify your own bazel package paths or local absolute paths - for each host os-arch pair through the `toolchain_roots` attribute. Note + for each host os-arch pair through the `toolchain_roots` attribute (without + bzlmod) or the `toolchain_root` module extension tags (with bzlmod). Note that the keys here are different and less granular than the keys in the `urls` attribute. When using a bazel package path, each of the values is typically a package in the user's workspace or configured through `local_repository` or `http_archive`; the BUILD file of the package should be similar to - `@com_grail_bazel_toolchain//toolchain:BUILD.llvm_repo`. If using only + `@toolchains_llvm//toolchain:BUILD.llvm_repo`. If using only `http_archive`, maybe consider using the `urls` attribute instead to get more flexibility if you need. 4. All the above options rely on host OS information, and are not suited for @@ -187,21 +214,23 @@ The following mechanisms are available for using an LLVM toolchain: a toolchain root specified through the `toolchain_roots` attribute with an empty key. -#### Sysroots +### Sysroots -A sysroot can be specified through the `sysroot` attribute. This can be either -a path on the user's system, or a bazel `filegroup` like label. One way to -create a sysroot is to use `docker export` to get a single archive of the -entire filesystem for the image you want. Another way is to use the build -scripts provided by the [Chromium +A sysroot can be specified through the `sysroot` attribute (without bzlmod) or +the `sysroot` module extension tag (with bzlmod). This can be either a path on +the user's system, or a bazel `filegroup` like label. One way to create a +sysroot is to use `docker export` to get a single archive of the entire +filesystem for the image you want. Another way is to use the build scripts +provided by the [Chromium project](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux/sysroot.md). -#### Cross-compilation +### Cross-compilation The toolchain supports cross-compilation if you bring your own sysroot. When cross-compiling, we link against the libstdc++ from the sysroot (single-platform build behavior is to link against libc++ bundled with LLVM). The following pairs have been tested to work for some hello-world binaries: + - {linux, x86_64} -> {linux, aarch64} - {linux, aarch64} -> {linux, x86_64} - {darwin, x86_64} -> {linux, x86_64} @@ -210,16 +239,37 @@ The following pairs have been tested to work for some hello-world binaries: A recommended approach would be to define two toolchains, one without sysroot for single-platform builds, and one with sysroot for cross-compilation builds. Then, when cross-compiling, explicitly specify the toolchain with the sysroot -and the target platform. For example, see the [WORKSPACE](tests/WORKSPACE) file and -the [test script](tests/scripts/run_xcompile_tests.sh) for cross-compilation. -``` +and the target platform. For example, see the [MODULE.bazel](tests/MODULE.bazel) +file for `llvm_toolchain_with_sysroot` and the [test +script](tests/scripts/run_xcompile_tests.sh) for cross-compilation. + +```sh bazel build \ - --platforms=@com_grail_bazel_toolchain//platforms:linux-x86_64 \ + --platforms=@toolchains_llvm//platforms:linux-x86_64 \ --extra_toolchains=@llvm_toolchain_with_sysroot//:cc-toolchain-x86_64-linux \ //... ``` -#### Supporting New Target Platforms +### Multi-platform builds + +The toolchain supports multi-platform builds through the combination of the +`exec_os`, `exec_arch` attribute pair, and either the `distribution` attribute, +or the `urls` attribute. This allows one to run their builds on one platform +(e.g. macOS) and their build actions to run on another (e.g. Linux), enabling +remote build execution (RBE). For example, see the [MODULE.bazel](tests/MODULE.bazel) +file for `llvm_toolchain_linux_exec` and the [test +script](tests/scripts/run_docker_exec_test.sh) for running the build actions on +Linux even if the build is being run from macOS. + +```sh +bazel build \ + --platforms=@toolchains_llvm//platforms:linux-x86_64 \ + --extra_execution_platforms=@toolchains_llvm//platforms:linux-x86_64 \ + --extra_toolchains=@llvm_toolchain_linux_exec//:cc-toolchain-x86_64-linux \ + //... +``` + +### Supporting New Target Platforms The following is a rough (untested) list of steps: @@ -237,23 +287,23 @@ The following is a rough (untested) list of steps: `toolchain_roots` or `urls` attribute. 6. Test your build. -#### Sandbox +### Sandbox Sandboxing the toolchain introduces a significant overhead (100ms per action, as of mid 2018). To overcome this, one can use -`--experimental_sandbox_base=/dev/shm`. However, not all environments might +`--experimental_sandbox_base=/dev/shm`. However, not all environments might have enough shared memory available to load all the files in memory. If this is a concern, you may set the attribute for using absolute paths, which will substitute templated paths to the toolchain as absolute paths. When running bazel actions, these paths will be available from inside the sandbox as part of the / read-only mount. Note that this will make your builds non-hermetic. -#### Compatibility +### Compatibility The toolchain is tested to work with `rules_go`, `rules_rust`, and `rules_foreign_cc`. -#### Accessing tools +### Accessing tools The LLVM distribution also provides several tools like `clang-format`. You can depend on these tools directly in the bin directory of the distribution. When @@ -276,6 +326,14 @@ then they can be referenced as: - `@llvm_toolchain//:clang-format` - `@llvm_toolchain//:llvm-cov` +### Strict header deps (Linux only) + +The toolchain supports Bazel's `layering_check` feature, which relies on +[Clang modules](https://clang.llvm.org/docs/Modules.html) to implement strict +deps (also known as "depend on what you use") for `cc_*` rules. This feature +can be enabled by enabling the `layering_check` feature on a per-target, +per-package or global basis. + ## Prior Art Other examples of toolchain configuration: diff --git a/REPO_RENAME.md b/REPO_RENAME.md new file mode 100644 index 000000000..18f12ee97 --- /dev/null +++ b/REPO_RENAME.md @@ -0,0 +1,73 @@ +# Rename from bazel-toolchain to toolchains_llvm + +As part of the transfer to the bazel-contrib org, the repo has been renamed to +`toolchains_llvm`. This has affected the dynamically generated source archives +which now have a different tree prefix, and consequently, a different shasum. + +From release 0.10.1 onwards, the releases have all generated a release artifact +which is guaranteed to be stable. But for prior releases, users need to change +the `shasum` and `strip_prefix` attributes for referencing this repo. + +0.10.0: + +```bzl + strip_prefix = "toolchains_llvm-0.10.0", + shasum = "a2877b8bf596ee4c0310b50463796efd8f360dcb087675e9101e15c39e03d7ea", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.10.0.tar.gz", +``` + +0.9: + +```bzl + strip_prefix = "toolchains_llvm-0.9", + shasum = "b2d168315dd0785f170b2b306b86e577c36e812b8f8b05568f9403141f2c24dd", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.9.tar.gz", +``` + +0.8.2: + +```bzl + strip_prefix = "toolchains_llvm-0.8.2", + shasum = "3e251524b3e8f3b9ec93848e5267c168424f43b7b554efc983a5291c33d78cde", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.8.2.tar.gz", +``` + +0.8.1: + +```bzl + strip_prefix = "toolchains_llvm-0.8.1", + shasum = "3bb45f480e3eb198f39fc97e91df2c2fc0beaabbea620ba3034ac505786a1813", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.8.1.tar.gz", +``` + +0.8: + +```bzl + strip_prefix = "toolchains_llvm-0.8", + shasum = "f121449dd565d59274b7421a62f3ed1f16ad7ceab4575c5b34f882ba441093bd", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.8.tar.gz", +``` + +0.7.2: + +```bzl + strip_prefix = "toolchains_llvm-0.7.2", + shasum = "ea7d247dd4a0058c008a6e8fa0855a69d57b0cb500271c7b48c1a28512608ecd", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.7.2.tar.gz", +``` + +0.7.1: + +```bzl + strip_prefix = "toolchains_llvm-0.7.1", + shasum = "5613b430a6b7f6d0eb03011976df53abe7f4cc6c3ec43be066b679c4ad81e3bf", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.7.1.tar.gz", +``` + +0.7: + +```bzl + strip_prefix = "toolchains_llvm-0.7", + shasum = "bb07651178c6fbdc0981799b96a09ea5b4f01d98a98ca64c679db1601a92a66f", + url = "https://github.com/bazel-contrib/toolchains_llvm/archive/refs/tags/0.7.tar.gz", +``` diff --git a/WORKSPACE b/WORKSPACE index 52d3839ba..244c479c5 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -13,5 +13,14 @@ # limitations under the License. workspace( - name = "com_grail_bazel_toolchain", + name = "toolchains_llvm", +) + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "helly25_bzl", + sha256 = "c8e28a3cb7e465b4b71f5d4d366c5796cc0ae822fa510a8adf12cf39a9709902", + strip_prefix = "bzl-0.3.1", + url = "https://github.com/helly25/bzl/releases/download/0.3.1/bzl-0.3.1.tar.gz", ) diff --git a/WORKSPACE.bzlmod b/WORKSPACE.bzlmod new file mode 100644 index 000000000..8f46f0534 --- /dev/null +++ b/WORKSPACE.bzlmod @@ -0,0 +1 @@ +# Empty by design. Allows use of --enable_bzlmod --enable_workspace. diff --git a/platforms/BUILD.bazel b/platforms/BUILD.bazel index d9c7140dc..95fcc7cd8 100644 --- a/platforms/BUILD.bazel +++ b/platforms/BUILD.bazel @@ -22,6 +22,14 @@ platform( ], ) +platform( + name = "none-x86_64", + constraint_values = [ + "@platforms//os:none", + "@platforms//cpu:x86_64", + ], +) + platform( name = "linux-aarch64", constraint_values = [ @@ -30,6 +38,22 @@ platform( ], ) +platform( + name = "linux-armv7", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:armv7", + ], +) + +platform( + name = "linux-riscv64", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:riscv64", + ], +) + platform( name = "darwin-x86_64", constraint_values = [ @@ -45,3 +69,35 @@ platform( "@platforms//cpu:aarch64", ], ) + +platform( + name = "wasm32", + constraint_values = [ + "@platforms//os:none", + "@platforms//cpu:wasm32", + ], +) + +platform( + name = "wasm64", + constraint_values = [ + "@platforms//os:none", + "@platforms//cpu:wasm64", + ], +) + +platform( + name = "wasip1-wasm32", + constraint_values = [ + "@platforms//os:wasi", + "@platforms//cpu:wasm32", + ], +) + +platform( + name = "wasip1-wasm64", + constraint_values = [ + "@platforms//os:wasi", + "@platforms//cpu:wasm64", + ], +) diff --git a/renovate.json b/renovate.json new file mode 100644 index 000000000..902d0ac04 --- /dev/null +++ b/renovate.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + ":dependencyDashboard", + ":semanticPrefixFixDepsChoreOthers", + "group:monorepos", + "group:recommended", + "replacements:all", + "workarounds:all" + ], + "packageRules": [ + { + "matchFiles": ["MODULE.bazel"], + "enabled": false + } + ] +} diff --git a/tests/.bazelrc b/tests/.bazelrc index d44be8e08..d26bd64fd 100644 --- a/tests/.bazelrc +++ b/tests/.bazelrc @@ -1,2 +1,4 @@ -build --incompatible_enable_cc_toolchain_resolution -build --features=-libtool +common --incompatible_disallow_empty_glob +common --nolegacy_external_runfiles +build --features=layering_check +common --repositories_without_autoloads=cc_compatibility_proxy diff --git a/tests/.buildifier.json b/tests/.buildifier.json new file mode 120000 index 000000000..3a96e6a96 --- /dev/null +++ b/tests/.buildifier.json @@ -0,0 +1 @@ +../.buildifier.json \ No newline at end of file diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 70f3a208f..d34b1308e 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -14,7 +14,8 @@ load("@bazel_skylib//rules:build_test.bzl", "build_test") load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load(":transitions.bzl", "dwp_file") +load("@rules_shell//shell:sh_test.bzl", "sh_test") +load(":transitions.bzl", "dwp_file", "transition_library_to_platform") cc_library( name = "stdlib", @@ -66,7 +67,7 @@ build_test( # (https://github.com/bazelbuild/bazel/issues/14038). # # #109 in this repo and this comment -# (https://github.com/grailbio/bazel-toolchain/pull/108#issuecomment-928839768) +# (https://github.com/bazel-contrib/toolchains_llvm/pull/108#issuecomment-928839768) # have some additional details. # # For now, we'll specify `-c dbg` when building `.dwo` and `.dwp` files. @@ -80,7 +81,7 @@ build_test( dwp_file( name = "stdlib.dwp", src = ":stdlib_bin", - # NOTE: we should eventually we able to drop this; see #109. + # NOTE: we should eventually be able to drop this; see #109. override_compilation_mode = "dbg", target_compatible_with = [ "@platforms//os:linux", @@ -100,6 +101,7 @@ cc_test( srcs = ["omp_test.c"], copts = ["-fopenmp"], linkopts = ["-fopenmp"], + tags = ["manual"], deps = ["@llvm_toolchain//:omp"], ) @@ -113,14 +115,100 @@ cc_test( srcs = ["omp_test.cc"], copts = ["-fopenmp"], linkopts = ["-fopenmp"], + tags = ["manual"], deps = ["@llvm_toolchain//:omp"], ) +test_suite( + name = "omp_tests", + tags = ["manual"], + tests = [ + ":omp_test", + ":omp_test_cc", + ], +) + sh_test( name = "file_dependency_test", srcs = ["file_dependency_test.sh"], + args = [ + "$(rootpath @llvm_toolchain_llvm//:bin/clang-format)", + "$(rootpaths @llvm_toolchain_llvm//:lib)", + ], data = [ "@llvm_toolchain_llvm//:bin/clang-format", "@llvm_toolchain_llvm//:lib", ], ) + +# As a workaround for https://github.com/bazelbuild/rules_foreign_cc/issues/1018. +toolchain( + name = "ninja_mac_arm64_toolchain", + exec_compatible_with = [ + "@platforms//cpu:arm64", + "@platforms//os:macos", + ], + toolchain = "@ninja_mac//:ninja_tool", + toolchain_type = "@rules_foreign_cc//toolchains:ninja_toolchain", +) + +# Testing extra_target_compatible_with +constraint_setting( + name = "cxx_standard", + default_constraint_value = ":cxx17", + visibility = ["//visibility:public"], +) + +constraint_value( + name = "cxx20", + constraint_setting = ":cxx_standard", + visibility = ["//visibility:public"], +) + +constraint_value( + name = "cxx17", + constraint_setting = ":cxx_standard", + visibility = ["//visibility:public"], +) + +platform( + name = "cxx20_platform", + constraint_values = [ + ":cxx20", + ], + parents = ["@platforms//host"], + visibility = ["//visibility:public"], +) + +cc_library( + name = "test_cxx_standard_lib", + srcs = ["test_cxx_standard.cc"], +) + +cc_test( + name = "test_cxx_standard_is_17", + size = "small", + srcs = ["test_cxx_standard_main.cc"], + args = ["201703"], + deps = [":test_cxx_standard_lib"], +) + +transition_library_to_platform( + name = "test_cxx_standard_lib_transitioned", + lib = ":test_cxx_standard_lib", + platform = ":cxx20_platform", +) + +cc_test( + name = "test_cxx_standard_is_20", + size = "small", + srcs = ["test_cxx_standard_main.cc"], + args = ["202002"], + + # Since some platforms require special toolchains (e.g. llvm 13.0.0) this + # target won't build on those platforms unless we create a new toolchain per + # platform with c++20. So instead just only run this test on platforms that + # can use the default toolchain + tags = ["manual"], + deps = [":test_cxx_standard_lib_transitioned"], +) diff --git a/tests/MODULE.bazel b/tests/MODULE.bazel new file mode 100644 index 000000000..161157684 --- /dev/null +++ b/tests/MODULE.bazel @@ -0,0 +1,281 @@ +# Copyright 2023 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module(name = "toolchains_llvm_tests") + +bazel_dep(name = "toolchains_llvm", version = "0.0.0") +local_path_override( + module_name = "toolchains_llvm", + path = "..", +) + +bazel_dep(name = "bazel_skylib", version = "1.9.0") +bazel_dep(name = "platforms", version = "1.0.0") +bazel_dep(name = "rules_cc", version = "0.2.16") +bazel_dep(name = "rules_foreign_cc", version = "0.15.1") +bazel_dep(name = "rules_go", version = "0.60.0", repo_name = "io_bazel_rules_go") +bazel_dep(name = "rules_license", version = "1.0.0") +bazel_dep(name = "rules_rust", version = "0.67.0") +bazel_dep(name = "rules_shell", version = "0.6.1") +bazel_dep(name = "abseil-cpp", version = "20250814.2", repo_name = "com_google_absl") +bazel_dep(name = "boringssl", version = "0.20251124.0") + +# TODO: Remove when protobuf is released with a version of rules_python that supports 8.x +bazel_dep(name = "rules_python", version = "1.8.4") + +go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") +go_sdk.download( + version = "1.25.4", +) +use_repo(go_sdk, "go_toolchains") + +register_toolchains("@go_toolchains//:all") + +rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") +rust.toolchain(edition = "2023") +use_repo( + rust, + "rust_toolchains", +) + +register_toolchains("@rust_toolchains//:all") + +llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm") + +# When updating this version, also update the versions associated with +# llvm_toolchain below, sys_paths_test in the workflows file, and xcompile_test +# through the `llvm_toolchain_with_sysroot` toolchain. +# We use C++17 and the first LLVM version with full support is 16.0.0. +# We also use C++20 which has reasonable wide support starting with LLVM 17.0.0. +# MacOS X86 does not exist for LLVM 17 or 18, so we allow 19 as well. +# We also allow to override this with a environment LLVM_VERSION for testing. +LLVM_VERSIONS = { + "": "getenv(LLVM_VERSION,latest:>=17.0.0,<20)", + "darwin-x86_64": "15.0.7", # Verify this works as opposed to using one version. +} + +llvm.toolchain( + name = "llvm_toolchain", + cxx_standard = {"": "c++17"}, + llvm_versions = LLVM_VERSIONS, +) +llvm.extra_target_compatible_with( + name = "llvm_toolchain", + constraints = ["@//:cxx17"], +) +use_repo(llvm, "llvm_toolchain", "llvm_toolchain_llvm") + +register_toolchains("@llvm_toolchain//:all") + +llvm.toolchain( + name = "llvm_toolchain_cxx20", + cxx_standard = {"": "c++20"}, + llvm_versions = LLVM_VERSIONS, +) +llvm.extra_target_compatible_with( + name = "llvm_toolchain_cxx20", + constraints = ["//:cxx20"], +) +use_repo(llvm, "llvm_toolchain_cxx20") + +register_toolchains("@llvm_toolchain_cxx20//:all") + +# Example toolchain with user provided URLs. +# TODO(siddharthab): Add test. +llvm.toolchain( + name = "llvm_toolchain_with_urls", + llvm_versions = { + "": "15.0.6", + "darwin-aarch64": "15.0.7", + "darwin-x86_64": "15.0.7", + }, + sha256 = { + "": "38bc7f5563642e73e69ac5626724e206d6d539fbef653541b34cae0ba9c3f036", + "darwin-aarch64": "867c6afd41158c132ef05a8f1ddaecf476a26b91c85def8e124414f9a9ba188d", + "darwin-x86_64": "d16b6d536364c5bec6583d12dd7e6cf841b9f508c4430d9ee886726bd9983f1c", + }, + strip_prefix = { + "": "clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04", + "darwin-aarch64": "clang+llvm-15.0.7-arm64-apple-darwin22.0", + "darwin-x86_64": "clang+llvm-15.0.7-x86_64-apple-darwin21.0", + }, + urls = { + "": ["https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz"], + "darwin-aarch64": ["https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/clang+llvm-15.0.7-arm64-apple-darwin22.0.tar.xz"], + "darwin-x86_64": ["https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz"], + }, +) +use_repo(llvm, "llvm_toolchain_with_urls") + +# This is the last known LLVM version with zlib support in ld.lld. Without zlib +# support, if the installed gcc toolchain has compressed sections in its object +# files, then ld.lld won't be able to process them. Example is archlinux docker +# image base-devel as of the time of this writing (23 May 2022). +llvm.toolchain( + name = "llvm_toolchain_13_0_0", + llvm_version = "13.0.0", +) +use_repo(llvm, "llvm_toolchain_13_0_0") + +# Toolchain example with absolute paths; tested in GitHub CI. +llvm.toolchain( + name = "llvm_toolchain_with_absolute_paths", + absolute_paths = True, + llvm_versions = LLVM_VERSIONS, +) + +# We can share the downloaded LLVM distribution with the first configuration. +llvm.toolchain_root( + name = "llvm_toolchain_with_absolute_paths", + label = "@llvm_toolchain_llvm//:BUILD", +) +use_repo(llvm, "llvm_toolchain_with_absolute_paths") + +# Toolchain example with system LLVM; tested in GitHub CI. +# The llvm_version must match the version specified in .github/workflows/tests.yml: sys_paths_test +llvm.toolchain( + name = "llvm_toolchain_with_system_llvm", + llvm_versions = {"": "16.0.0"}, +) + +# For this toolchain to work, the LLVM distribution archive would need to be unpacked here. +llvm.toolchain_root( + name = "llvm_toolchain_with_system_llvm", + path = "/opt/llvm-16", +) +use_repo(llvm, "llvm_toolchain_with_system_llvm") + +# Toolchain example with a sysroot. +llvm.toolchain( + name = "llvm_toolchain_with_sysroot", + llvm_versions = LLVM_VERSIONS, +) + +# We can share the downloaded LLVM distribution with the first configuration. +llvm.toolchain_root( + name = "llvm_toolchain_with_sysroot", + label = "@llvm_toolchain_llvm//:BUILD", +) +llvm.sysroot( + name = "llvm_toolchain_with_sysroot", + label = "@org_chromium_sysroot_linux_x64//sysroot", + targets = ["linux-x86_64"], +) +use_repo(llvm, "llvm_toolchain_with_sysroot") +llvm.toolchain( + name = "llvm_toolchain_linux_exec", + exec_arch = "amd64", + # Option 2: + # distribution = "clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz", + exec_os = "linux", + llvm_version = "17.0.6", + # Option 1: + sha256 = {"": "884ee67d647d77e58740c1e645649e29ae9e8a6fe87c1376be0f3a30f3cc9ab3"}, + strip_prefix = {"": "clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04"}, + urls = {"": ["https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz"]}, +) +use_repo(llvm, "llvm_toolchain_linux_exec") + +# Toolchain example for WebAssembly wasm* targets. +llvm.toolchain( + name = "llvm_toolchain_wasm", + libclang_rt = { + "@libclang_rt_wasm32//:libclang_rt.builtins-wasm32.a": "wasm32-unknown-unknown/libclang_rt.builtins.a", + }, + # WebAssembly tests use a separate (newer) version of LLVM to exercise + # support for experimental features such as wasm64. + llvm_versions = { + # The most recent LLVM as of 2024-10-17 + "": "19.1.0", + }, + stdlib = { + "wasm32": "libc", + "wasm64": "none", + }, +) +llvm.sysroot( + name = "llvm_toolchain_wasm", + label = "@wasi_sdk_sysroots//wasm32-wasip2", + targets = ["wasm32"], +) +llvm.sysroot( + name = "llvm_toolchain_wasm", + label = "@wasi_sdk_sysroots//empty", + targets = ["wasm64"], +) +use_repo(llvm, "llvm_toolchain_wasm") + +register_toolchains("@llvm_toolchain_wasm//:all") + +# Toolchain example for WebAssembly wasm*-wasi* targets. +llvm.toolchain( + name = "llvm_toolchain_wasm_wasi", + libclang_rt = { + "@libclang_rt_wasm32//:libclang_rt.builtins-wasm32.a": "wasm32-unknown-wasip1/libclang_rt.builtins.a", + }, + # WebAssembly tests use a separate (newer) version of LLVM to exercise + # support for experimental features such as wasm64. + llvm_versions = { + # The most recent LLVM as of 2024-10-17 + "": "19.1.0", + }, + stdlib = { + "wasip1-wasm32": "libc", + }, +) +llvm.sysroot( + name = "llvm_toolchain_wasm_wasi", + label = "@wasi_sdk_sysroots//wasm32-wasip1", + targets = ["wasip1-wasm32"], +) +use_repo(llvm, "llvm_toolchain_wasm_wasi") + +register_toolchains("@llvm_toolchain_wasm_wasi//:all") + +wasi_sdk_sysroots = use_repo_rule("//wasm:wasi_sdk.bzl", "wasi_sdk_sysroots") + +wasi_sdk_sysroots(name = "wasi_sdk_sysroots") + +libclang_rt_wasm32 = use_repo_rule("//wasm:wasi_sdk.bzl", "libclang_rt_wasm32") + +libclang_rt_wasm32(name = "libclang_rt_wasm32") + +sysroot = use_repo_rule("@toolchains_llvm//toolchain:sysroot.bzl", "sysroot") + +# This sysroot is used by github.com/vsco/bazel-toolchains. +sysroot( + name = "org_chromium_sysroot_linux_x64", + sha256 = "84656a6df544ecef62169cfe3ab6e41bb4346a62d3ba2a045dc5a0a2ecea94a3", + urls = ["https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/2202c161310ffde63729f29d27fe7bb24a0bc540/debian_stretch_amd64_sysroot.tar.xz"], +) + +http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "pcre", + build_file_content = """\ +filegroup( + name = "all_srcs", + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) +""", + sha256 = "0b8e7465dc5e98c757cc3650a20a7843ee4c3edf50aaf60bb33fd879690d2c73", + strip_prefix = "pcre-8.43", + urls = [ + "https://mirror.bazel.build/ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz", + "https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz", + ], +) + diff --git a/tests/WORKSPACE b/tests/WORKSPACE index eb2981610..ab8f7e274 100644 --- a/tests/WORKSPACE +++ b/tests/WORKSPACE @@ -12,43 +12,85 @@ # See the License for the specific language governing permissions and # limitations under the License. -workspace(name = "com_grail_bazel_toolchain_tests") +workspace(name = "toolchains_llvm_tests") local_repository( - name = "com_grail_bazel_toolchain", + name = "toolchains_llvm", path = "..", ) load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@com_grail_bazel_toolchain//toolchain:deps.bzl", "bazel_toolchain_dependencies") + +http_archive( + name = "bazel_features", + sha256 = "966c211ec42c4deb2af4c6dd6948408100b752f61753c97055bdac9bfb5cc0c7", + strip_prefix = "bazel_features-1.41.0", + url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.41.0/bazel_features-v1.41.0.tar.gz", +) + +load("@bazel_features//:deps.bzl", "bazel_features_deps") + +bazel_features_deps() + +http_archive( + name = "aspect_bazel_lib", + sha256 = "e733937de2f542436c5d3d618e22c638489b40dfd251284050357babe71103d7", + strip_prefix = "bazel-lib-3.2.0", + url = "https://github.com/aspect-build/bazel-lib/releases/download/v3.2.0/bazel-lib-v3.2.0.tar.gz", +) + +http_archive( + name = "tar.bzl", + sha256 = "8bac5a2b43f9988e4e69bb03a242b9cbed2c53f9cd4c989f879aaa441bda03f4", + strip_prefix = "tar.bzl-0.8.1", + url = "https://github.com/bazel-contrib/tar.bzl/releases/download/v0.8.1/tar.bzl-v0.8.1.tar.gz", +) + +load("@tar.bzl//tar:extensions.bzl", "create_repositories") + +create_repositories() + +load("@toolchains_llvm//toolchain:deps.bzl", "bazel_toolchain_dependencies") bazel_toolchain_dependencies() -load("@com_grail_bazel_toolchain//toolchain:rules.bzl", "llvm_toolchain") +load("@toolchains_llvm//toolchain:rules.bzl", "llvm_toolchain") # When updating this version, also update the versions associated with # llvm_toolchain below, sys_paths_test in the workflows file, and xcompile_test # through the `llvm_toolchain_with_sysroot` toolchain. -LLVM_VERSION = "15.0.6" +# We use C++17 and the first LLVM version with full suppor is 16.0.0. +# We also use C++20 which has reasonable wide support starting with LLVM 17.0.0. +# MacOS X86 does not exist for LLVM 17 or 18, so we allow 19 as well. +# We also allow to override this with a environment LLVM_VERSION for testing. +LLVM_VERSIONS = { + "": "getenv(LLVM_VERSION,latest:>=17.0.0,<20)", + "darwin-x86_64": "15.0.7", # Verify this works as opposed to using one version. +} llvm_toolchain( name = "llvm_toolchain", - llvm_versions = { - "": "15.0.6", - "darwin-aarch64": "15.0.7", - "darwin-x86_64": "15.0.7", + cxx_standard = {"": "c++17"}, + extra_target_compatible_with = { + "": ["@//:cxx17"], + }, + llvm_versions = LLVM_VERSIONS, +) + +llvm_toolchain( + name = "llvm_toolchain_cxx20", + cxx_standard = {"": "c++20"}, + extra_target_compatible_with = { + "": ["@//:cxx20"], }, + llvm_versions = LLVM_VERSIONS, ) # Example toolchain with user provided URLs. # TODO(siddharthab): Add test. llvm_toolchain( name = "llvm_toolchain_with_urls", - llvm_versions = { - "": "15.0.6", - "darwin-aarch64": "15.0.7", - "darwin-x86_64": "15.0.7", - }, + llvm_versions = LLVM_VERSIONS, sha256 = { "": "38bc7f5563642e73e69ac5626724e206d6d539fbef653541b34cae0ba9c3f036", "darwin-aarch64": "867c6afd41158c132ef05a8f1ddaecf476a26b91c85def8e124414f9a9ba188d", @@ -66,13 +108,6 @@ llvm_toolchain( }, ) -# This is the latest version of LLVM that seems to work with rules_go; later -# versions cause the tests to crash. -llvm_toolchain( - name = "llvm_toolchain_14_0_0", - llvm_version = "14.0.0", -) - # This is the last known LLVM version with zlib support in ld.lld. Without zlib # support, if the installed gcc toolchain has compressed sections in its object # files, then ld.lld won't be able to process them. Example is archlinux docker @@ -86,11 +121,15 @@ load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains") llvm_register_toolchains() +load("@llvm_toolchain_cxx20//:toolchains.bzl", llvm_register_toolchains_cxx20 = "llvm_register_toolchains") + +llvm_register_toolchains_cxx20() + ## Toolchain example with absolute paths; tested in GitHub CI. llvm_toolchain( name = "llvm_toolchain_with_absolute_paths", absolute_paths = True, - llvm_version = LLVM_VERSION, + llvm_versions = LLVM_VERSIONS, # We can share the downloaded LLVM distribution with the first configuration. toolchain_roots = { "": "@llvm_toolchain_llvm//", @@ -98,39 +137,30 @@ llvm_toolchain( ) ## Toolchain example with system LLVM; tested in GitHub CI. +# The llvm_version must match the version specified in .github/workflows/tests.yml: sys_paths_test llvm_toolchain( name = "llvm_toolchain_with_system_llvm", - llvm_version = LLVM_VERSION, + llvm_version = "getenv(LLVM_VERSION)", # For this toolchain to work, the LLVM distribution archive would need to be unpacked here. - # A path in /tmp to be part of system tmp cleanup schedule. - toolchain_roots = {"": "/tmp/llvm-15"}, + toolchain_roots = {"": "/opt/llvm-16"}, ) ## Toolchain example with a sysroot. # This sysroot is used by github.com/vsco/bazel-toolchains. -http_archive( +load("@toolchains_llvm//toolchain:sysroot.bzl", "sysroot") + +sysroot( name = "org_chromium_sysroot_linux_x64", - build_file_content = """ -filegroup( - name = "sysroot", - srcs = glob(["*/**"]), - visibility = ["//visibility:public"], -) -""", sha256 = "84656a6df544ecef62169cfe3ab6e41bb4346a62d3ba2a045dc5a0a2ecea94a3", urls = ["https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/2202c161310ffde63729f29d27fe7bb24a0bc540/debian_stretch_amd64_sysroot.tar.xz"], ) llvm_toolchain( name = "llvm_toolchain_with_sysroot", - llvm_versions = { - "": "15.0.6", - "darwin-x86_64": "15.0.7", - "darwin-aarch64": "15.0.7", - }, + llvm_versions = LLVM_VERSIONS, sysroot = { - "linux-x86_64": "@org_chromium_sysroot_linux_x64//:sysroot", + "linux-x86_64": "@org_chromium_sysroot_linux_x64//sysroot", }, # We can share the downloaded LLVM distribution with the first configuration. toolchain_roots = { @@ -138,58 +168,117 @@ llvm_toolchain( }, ) -http_archive( - name = "bazel_skylib", - sha256 = "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", - ], -) - load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") bazel_skylib_workspace() -# Well known repos; present here only for testing. +llvm_toolchain( + name = "llvm_toolchain_linux_exec", + exec_arch = "amd64", + # Option 2: + # distribution = "clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz", + exec_os = "linux", + llvm_version = "17.0.6", + # Option 1: + sha256 = {"": "884ee67d647d77e58740c1e645649e29ae9e8a6fe87c1376be0f3a30f3cc9ab3"}, + strip_prefix = {"": "clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04"}, + urls = {"": ["https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz"]}, +) -http_archive( - name = "com_google_googletest", - sha256 = "81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2", - strip_prefix = "googletest-release-1.12.1", - urls = ["https://github.com/google/googletest/archive/release-1.12.1.tar.gz"], +# Toolchain example for WebAssembly wasm* targets. +llvm_toolchain( + name = "llvm_toolchain_wasm", + libclang_rt = { + "@libclang_rt_wasm32//:libclang_rt.builtins-wasm32.a": "wasm32-unknown-unknown/libclang_rt.builtins.a", + }, + # WebAssembly tests use a separate (newer) version of LLVM to exercise + # support for experimental features such as wasm64. + llvm_versions = { + # The most recent LLVM as of 2024-10-17 + "": "19.1.0", + }, + stdlib = { + "wasm32": "libc", + "wasm64": "none", + }, + sysroot = { + "wasm32": "@wasi_sdk_sysroots//wasm32-wasip2", + "wasm64": "@wasi_sdk_sysroots//empty", + }, ) -http_archive( - name = "com_github_google_benchmark", - sha256 = "6430e4092653380d9dc4ccb45a1e2dc9259d581f4866dc0759713126056bc1d7", - strip_prefix = "benchmark-1.7.1", - urls = ["https://github.com/google/benchmark/archive/v1.7.1.tar.gz"], +load( + "@llvm_toolchain_wasm//:toolchains.bzl", + llvm_register_toolchains_wasm = "llvm_register_toolchains", +) + +llvm_register_toolchains_wasm() + +# Toolchain example for WebAssembly wasm*-wasi* targets. +llvm_toolchain( + name = "llvm_toolchain_wasm_wasi", + libclang_rt = { + "@libclang_rt_wasm32//:libclang_rt.builtins-wasm32.a": "wasm32-unknown-wasip1/libclang_rt.builtins.a", + }, + # WebAssembly tests use a separate (newer) version of LLVM to exercise + # support for experimental features such as wasm64. + llvm_versions = { + # The most recent LLVM as of 2024-10-17 + "": "19.1.0", + }, + stdlib = { + "wasip1-wasm32": "libc", + }, + sysroot = { + "wasip1-wasm32": "@wasi_sdk_sysroots//wasm32-wasip1", + }, +) + +load( + "@llvm_toolchain_wasm_wasi//:toolchains.bzl", + llvm_register_toolchains_wasm_wasi = "llvm_register_toolchains", ) +llvm_register_toolchains_wasm_wasi() + +load("//wasm:wasi_sdk.bzl", "libclang_rt_wasm32", "wasi_sdk_sysroots") + +libclang_rt_wasm32(name = "libclang_rt_wasm32") + +wasi_sdk_sysroots(name = "wasi_sdk_sysroots") + +## Test dependencies. + +# Well known repos; present here only for testing. + http_archive( name = "com_google_absl", - sha256 = "91ac87d30cc6d79f9ab974c51874a704de9c2647c40f6932597329a282217ba8", - strip_prefix = "abseil-cpp-20220623.1", - urls = ["https://github.com/abseil/abseil-cpp/archive/refs/tags/20220623.1.tar.gz"], + sha256 = "f9148fb00ec98a2396bdf875c99a78e6a70afa662b107862d92b285d857a8320", + strip_prefix = "abseil-cpp-20250814.2", + urls = ["https://github.com/abseil/abseil-cpp/releases/download/20250814.2/abseil-cpp-20250814.2.tar.gz"], ) +# As a test dep of com_google_absl. http_archive( - name = "openssl", - build_file = "//openssl:openssl.bazel", - sha256 = "f6fb3079ad15076154eda9413fed42877d668e7069d9b87396d0804fdb3f4c90", - strip_prefix = "openssl-1.1.1c", - urls = ["https://www.openssl.org/source/openssl-1.1.1c.tar.gz"], + name = "googletest", + sha256 = "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c", + strip_prefix = "googletest-1.17.0", + urls = ["https://github.com/google/googletest/archive/v1.17.0.tar.gz"], ) -# For testing rules_go. +http_archive( + name = "boringssl", + sha256 = "6f64bf1e4af8d14144ca931f8881ff890d01c240add517357e8c54f4b8d79b65", + strip_prefix = "boringssl-0.20260204.0", + urls = ["https://github.com/google/boringssl/releases/download/0.20260204.0/boringssl-0.20260204.0.tar.gz"], +) http_archive( name = "io_bazel_rules_go", - sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6", + sha256 = "86d3dc8f59d253524f933aaf2f3c05896cb0b605fc35b460c0b4b039996124c6", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", - "https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", + "https://mirror.bazel.build/github.com/bazel-contrib/rules_go/releases/download/v0.60.0/rules_go-v0.60.0.zip", + "https://github.com/bazel-contrib/rules_go/releases/download/v0.60.0/rules_go-v0.60.0.zip", ], ) @@ -197,14 +286,23 @@ load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_depe go_rules_dependencies() -go_register_toolchains(version = "1.19.3") +go_register_toolchains(version = "1.25.4") + +# Create the host platform repository transitively required by rules_go. +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("@platforms//host:extension.bzl", "host_platform_repo") + +maybe( + host_platform_repo, + name = "host_platform", +) # For testing rules_rust. http_archive( name = "rules_rust", - sha256 = "29ea0f1d0cad8fc90400479dee0a8b69204b7e6927081b5a27d6da872114a160", - urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.16.0/rules_rust-v0.16.0.tar.gz"], + integrity = "sha256-3Ch+PsqAsp1cyV4mHK4nPu3xr0oAqWrpN+I0U02tskw=", + urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.67.0/rules_rust-0.67.0.tar.gz"], ) load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") @@ -213,20 +311,60 @@ rules_rust_dependencies() rust_register_toolchains() +http_archive( + name = "rules_python", + sha256 = "c85d5db38d3eac06167a13b10c9dba54b003a986cd4f1ebc00806b74e7c12f06", + strip_prefix = "rules_python-1.8.4", + url = "https://github.com/bazelbuild/rules_python/releases/download/1.8.4/rules_python-1.8.4.tar.gz", +) + +load("@rules_python//python:repositories.bzl", "py_repositories") + +py_repositories() + # For testing rules_foreign_cc. # See https://bazelbuild.github.io/rules_foreign_cc/0.6.0/cmake.html http_archive( name = "rules_foreign_cc", - sha256 = "69023642d5781c68911beda769f91fcbc8ca48711db935a75da7f6536b65047f", - strip_prefix = "rules_foreign_cc-0.6.0", - url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.6.0.tar.gz", + sha256 = "32759728913c376ba45b0116869b71b68b1c2ebf8f2bcf7b41222bc07b773d73", + strip_prefix = "rules_foreign_cc-0.15.1", + url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.15.1.tar.gz", ) +http_archive( + name = "com_google_protobuf", + sha256 = "98bc55acbc30be2bda6fb8bc9169a31e14956bd3b3169c63edbe6207b8116b68", + strip_prefix = "protobuf-33.5", + urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v33.5/protobuf-33.5.zip"], +) + +load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") + +protobuf_deps() + +http_archive( + name = "rules_java", + sha256 = "440edfa8098d00b166a5a73d215f3214a6506db01e1ec45afee356b6679c5593", + urls = ["https://github.com/bazelbuild/rules_java/releases/download/9.5.0/rules_java-9.5.0.tar.gz"], +) + +load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies") + +rules_java_dependencies() + load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies") rules_foreign_cc_dependencies() +load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo") + +# If you see an error: +# ERROR: Cycle caused by autoloads, failed to load .bzl file '@@cc_compatibility_proxy//:symbols.bzl'. +# then you might need to add the following to your .bzelrc: +# common --repositories_without_autoloads=cc_compatibility_proxy +compatibility_proxy_repo() + _ALL_CONTENT = """\ filegroup( name = "all_srcs", @@ -245,3 +383,12 @@ http_archive( "https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz", ], ) + +http_archive( + name = "platforms", + sha256 = "3384eb1c30762704fbe38e440204e114154086c8fc8a8c2e3e28441028c019a8", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz", + ], +) diff --git a/tests/file_dependency_test.sh b/tests/file_dependency_test.sh index f0ffccbf5..bf60e2bdd 100755 --- a/tests/file_dependency_test.sh +++ b/tests/file_dependency_test.sh @@ -14,14 +14,17 @@ # limitations under the License. fail() { - >&2 echo "$@" + echo >&2 "$@" exit 1 } -[[ -a "external/llvm_toolchain_llvm/bin/clang-format" ]] || fail "bin/clang-format not found" +clang_format_path=$1 +libcpp_path=$2 -[[ -a "external/llvm_toolchain_llvm/lib/libc++.a" ]] \ - || compgen -G 'external/llvm_toolchain_llvm/lib/*/libc++.a' >/dev/null \ - || fail "libc++.a not found" +[[ -e ${clang_format_path} ]] || fail "bin/clang-format not found at ${clang_format_path}" + +[[ -e ${libcpp_path} ]] || + compgen -G "${libcpp_path}" >/dev/null || + fail "libc++.a not found at ${libcpp_path}" echo "SUCCESS!" diff --git a/tests/openssl/BUILD.bazel b/tests/openssl/BUILD.bazel deleted file mode 100644 index 36f2a2396..000000000 --- a/tests/openssl/BUILD.bazel +++ /dev/null @@ -1,4 +0,0 @@ -exports_files( - srcs = glob(["**/*.h"]), - visibility = ["@openssl//:__pkg__"], -) diff --git a/tests/openssl/crypto/include/internal/bn_conf.h b/tests/openssl/crypto/include/internal/bn_conf.h deleted file mode 100644 index cb853e059..000000000 --- a/tests/openssl/crypto/include/internal/bn_conf.h +++ /dev/null @@ -1,28 +0,0 @@ -/* WARNING: do not edit! */ -/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */ -/* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifndef HEADER_BN_CONF_H -#define HEADER_BN_CONF_H - -/* - * The contents of this file are not used in the UEFI build, as - * both 32-bit and 64-bit builds are supported from a single run - * of the Configure script. - */ - -/* Should we define BN_DIV2W here? */ - -/* Only one for the following should be defined */ -#define SIXTY_FOUR_BIT_LONG -#undef SIXTY_FOUR_BIT -#undef THIRTY_TWO_BIT - -#endif diff --git a/tests/openssl/crypto/include/internal/dso_conf.h b/tests/openssl/crypto/include/internal/dso_conf.h deleted file mode 100644 index 71ff37022..000000000 --- a/tests/openssl/crypto/include/internal/dso_conf.h +++ /dev/null @@ -1,17 +0,0 @@ -/* WARNING: do not edit! */ -/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */ -/* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifndef HEADER_DSO_CONF_H -#define HEADER_DSO_CONF_H -#define DSO_DLFCN -#define HAVE_DLFCN_H -#define DSO_EXTENSION ".dylib" -#endif diff --git a/tests/openssl/include/openssl/opensslconf.h b/tests/openssl/include/openssl/opensslconf.h deleted file mode 100644 index 2c28a2b5e..000000000 --- a/tests/openssl/include/openssl/opensslconf.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * WARNING: do not edit! - * Generated by Makefile from include/openssl/opensslconf.h.in - * - * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef OPENSSL_ALGORITHM_DEFINES -#error OPENSSL_ALGORITHM_DEFINES no longer supported -#endif - -/* - * OpenSSL was configured with the following options: - */ - -#ifndef OPENSSL_NO_MD2 -#define OPENSSL_NO_MD2 -#endif -#ifndef OPENSSL_NO_RC5 -#define OPENSSL_NO_RC5 -#endif -#ifndef OPENSSL_THREADS -#define OPENSSL_THREADS -#endif -#ifndef OPENSSL_RAND_SEED_OS -#define OPENSSL_RAND_SEED_OS -#endif -#ifndef OPENSSL_NO_ASAN -#define OPENSSL_NO_ASAN -#endif -#ifndef OPENSSL_NO_CRYPTO_MDEBUG -#define OPENSSL_NO_CRYPTO_MDEBUG -#endif -#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE -#define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE -#endif -#ifndef OPENSSL_NO_DEVCRYPTOENG -#define OPENSSL_NO_DEVCRYPTOENG -#endif -#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -#define OPENSSL_NO_EC_NISTP_64_GCC_128 -#endif -#ifndef OPENSSL_NO_EGD -#define OPENSSL_NO_EGD -#endif -#ifndef OPENSSL_NO_EXTERNAL_TESTS -#define OPENSSL_NO_EXTERNAL_TESTS -#endif -#ifndef OPENSSL_NO_FUZZ_AFL -#define OPENSSL_NO_FUZZ_AFL -#endif -#ifndef OPENSSL_NO_FUZZ_LIBFUZZER -#define OPENSSL_NO_FUZZ_LIBFUZZER -#endif -#ifndef OPENSSL_NO_HEARTBEATS -#define OPENSSL_NO_HEARTBEATS -#endif -#ifndef OPENSSL_NO_MSAN -#define OPENSSL_NO_MSAN -#endif -#ifndef OPENSSL_NO_SCTP -#define OPENSSL_NO_SCTP -#endif -#ifndef OPENSSL_NO_SSL_TRACE -#define OPENSSL_NO_SSL_TRACE -#endif -#ifndef OPENSSL_NO_SSL3 -#define OPENSSL_NO_SSL3 -#endif -#ifndef OPENSSL_NO_SSL3_METHOD -#define OPENSSL_NO_SSL3_METHOD -#endif -#ifndef OPENSSL_NO_UBSAN -#define OPENSSL_NO_UBSAN -#endif -#ifndef OPENSSL_NO_UNIT_TEST -#define OPENSSL_NO_UNIT_TEST -#endif -#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS -#define OPENSSL_NO_WEAK_SSL_CIPHERS -#endif -#ifndef OPENSSL_NO_STATIC_ENGINE -#define OPENSSL_NO_STATIC_ENGINE -#endif - -/* - * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers - * don't like that. This will hopefully silence them. - */ -#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; - -/* - * Applications should use -DOPENSSL_API_COMPAT= to suppress the - * declarations of functions deprecated in or before . Otherwise, they - * still won't see them if the library has been built to disable deprecated - * functions. - */ -#ifndef DECLARE_DEPRECATED -#define DECLARE_DEPRECATED(f) f; -#ifdef __GNUC__ -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) -#undef DECLARE_DEPRECATED -#define DECLARE_DEPRECATED(f) f __attribute__((deprecated)); -#endif -#endif -#endif - -#ifndef OPENSSL_FILE -#ifdef OPENSSL_NO_FILENAMES -#define OPENSSL_FILE "" -#define OPENSSL_LINE 0 -#else -#define OPENSSL_FILE __FILE__ -#define OPENSSL_LINE __LINE__ -#endif -#endif - -#ifndef OPENSSL_MIN_API -#define OPENSSL_MIN_API 0 -#endif - -#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API -#undef OPENSSL_API_COMPAT -#define OPENSSL_API_COMPAT OPENSSL_MIN_API -#endif - -/* - * Do not deprecate things to be deprecated in version 1.2.0 before the - * OpenSSL version number matches. - */ -#if OPENSSL_VERSION_NUMBER < 0x10200000L -#define DEPRECATEDIN_1_2_0(f) f; -#elif OPENSSL_API_COMPAT < 0x10200000L -#define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) -#else -#define DEPRECATEDIN_1_2_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x10100000L -#define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) -#else -#define DEPRECATEDIN_1_1_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x10000000L -#define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) -#else -#define DEPRECATEDIN_1_0_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x00908000L -#define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) -#else -#define DEPRECATEDIN_0_9_8(f) -#endif - -/* Generate 80386 code? */ -#undef I386_ONLY - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION - -/* - * The following are cipher-specific, but are part of the public API. - */ -#if !defined(OPENSSL_SYS_UEFI) -#undef BN_LLONG -/* Only one for the following should be defined */ -#define SIXTY_FOUR_BIT_LONG -#undef SIXTY_FOUR_BIT -#undef THIRTY_TWO_BIT -#endif - -#define RC4_INT unsigned int - -#ifdef __cplusplus -} -#endif diff --git a/tests/openssl/openssl.bazel b/tests/openssl/openssl.bazel deleted file mode 100644 index 347956095..000000000 --- a/tests/openssl/openssl.bazel +++ /dev/null @@ -1,917 +0,0 @@ -# Copyright 2018 The Bazel Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -package(default_visibility = ["//visibility:public"]) - -COPTS = [ - "-DL_ENDIAN", - "-DOPENSSL_PIC", - "-DOPENSSL_CPUID_OBJ", - "-DOPENSSL_IA32_SSE2", - "-DOPENSSL_BN_ASM_MONT", - "-DOPENSSL_BN_ASM_MONT5", - "-DOPENSSL_BN_ASM_GF2m", - "-DSHA1_ASM", - "-DSHA256_ASM", - "-DSHA512_ASM", - "-DKECCAK1600_ASM", - "-DRC4_ASM", - "-DMD5_ASM", - "-DAES_ASM", - "-DVPAES_ASM", - "-DBSAES_ASM", - "-DGHASH_ASM", - "-DECP_NISTZ256_ASM", - "-DX25519_ASM", - "-DPOLY1305_ASM", - "-DOPENSSLDIR=\\\"/usr/local/ssl\\\"", - "-DENGINESDIR=\\\"/usr/local/lib/engines-1.1\\\"", - "-D_REENTRANT", - "-DNDEBUG", - "-Wno-unused-command-line-argument", -] - -CONF_FILES = [ - "crypto/include/internal/bn_conf.h", - "crypto/include/internal/dso_conf.h", - "include/openssl/opensslconf.h", -] - -genrule( - name = "configure", - srcs = [("@com_grail_bazel_toolchain//tests/openssl:" + f) for f in CONF_FILES], - outs = CONF_FILES, - cmd = "\n".join([ - "cp $(location @com_grail_bazel_toolchain//tests/openssl:{0}) $(location {0})".format(f) - for f in CONF_FILES - ]), - visibility = ["//visibility:private"], -) - -HDRS = glob(["include/**/*.h"]) + ["include/openssl/opensslconf.h"] - -genrule( - name = "gen-buildinf_h", - srcs = ["util/mkbuildinf.pl"], - outs = ["crypto/buildinf.h"], - cmd = "perl $(location util/mkbuildinf.pl) 'dummy' 'dummy' > $(location crypto/buildinf.h)", -) - -genrule( - name = "gen-asm", - srcs = [ - "crypto/aes/asm/aes-x86_64.pl", - "crypto/aes/asm/aesni-mb-x86_64.pl", - "crypto/aes/asm/aesni-sha1-x86_64.pl", - "crypto/aes/asm/aesni-sha256-x86_64.pl", - "crypto/aes/asm/aesni-x86_64.pl", - "crypto/aes/asm/bsaes-x86_64.pl", - "crypto/aes/asm/vpaes-x86_64.pl", - "crypto/bn/asm/rsaz-avx2.pl", - "crypto/bn/asm/rsaz-x86_64.pl", - "crypto/bn/asm/x86_64-gf2m.pl", - "crypto/bn/asm/x86_64-mont.pl", - "crypto/bn/asm/x86_64-mont5.pl", - "crypto/camellia/asm/cmll-x86_64.pl", - "crypto/chacha/asm/chacha-x86_64.pl", - "crypto/ec/ecp_nistz256_table.c", - "crypto/ec/asm/ecp_nistz256-x86_64.pl", - "crypto/ec/asm/x25519-x86_64.pl", - "crypto/md5/asm/md5-x86_64.pl", - "crypto/modes/asm/aesni-gcm-x86_64.pl", - "crypto/modes/asm/ghash-x86_64.pl", - "crypto/perlasm/x86_64-xlate.pl", - "crypto/poly1305/asm/poly1305-x86_64.pl", - "crypto/rc4/asm/rc4-md5-x86_64.pl", - "crypto/rc4/asm/rc4-x86_64.pl", - "crypto/sha/asm/keccak1600-x86_64.pl", - "crypto/sha/asm/sha1-mb-x86_64.pl", - "crypto/sha/asm/sha1-x86_64.pl", - "crypto/sha/asm/sha256-mb-x86_64.pl", - "crypto/sha/asm/sha512-x86_64.pl", - "crypto/whrlpool/asm/wp-x86_64.pl", - "crypto/x86_64cpuid.pl", - "engines/asm/e_padlock-x86_64.pl", - ], - outs = [ - "crypto/aes/aes-x86_64.s", - "crypto/aes/aesni-mb-x86_64.s", - "crypto/aes/aesni-sha1-x86_64.s", - "crypto/aes/aesni-sha256-x86_64.s", - "crypto/aes/aesni-x86_64.s", - "crypto/aes/bsaes-x86_64.s", - "crypto/aes/vpaes-x86_64.s", - "crypto/bn/rsaz-avx2.s", - "crypto/bn/rsaz-x86_64.s", - "crypto/bn/x86_64-gf2m.s", - "crypto/bn/x86_64-mont.s", - "crypto/bn/x86_64-mont5.s", - "crypto/camellia/cmll-x86_64.s", - "crypto/chacha/chacha-x86_64.s", - "crypto/ec/ecp_nistz256-x86_64.s", - "crypto/ec/x25519-x86_64.s", - "crypto/md5/md5-x86_64.s", - "crypto/modes/aesni-gcm-x86_64.s", - "crypto/modes/ghash-x86_64.s", - "crypto/poly1305/poly1305-x86_64.s", - "crypto/rc4/rc4-md5-x86_64.s", - "crypto/rc4/rc4-x86_64.s", - "crypto/sha/keccak1600-x86_64.s", - "crypto/sha/sha1-mb-x86_64.s", - "crypto/sha/sha1-x86_64.s", - "crypto/sha/sha256-mb-x86_64.s", - "crypto/sha/sha256-x86_64.s", - "crypto/sha/sha512-x86_64.s", - "crypto/whrlpool/wp-x86_64.s", - "crypto/x86_64cpuid.s", - "engines/e_padlock-x86_64.s", - ], - cmd = "\n".join([ - "FLAVOR='elf'", - "if [[ $$(uname -s) == 'Darwin' ]]; then FLAVOR='macosx'; fi", - "perl $(location crypto/aes/asm/aes-x86_64.pl) $$FLAVOR $(location crypto/aes/aes-x86_64.s)", - "perl $(location crypto/aes/asm/aesni-mb-x86_64.pl) $$FLAVOR $(location crypto/aes/aesni-mb-x86_64.s)", - "perl $(location crypto/aes/asm/aesni-sha1-x86_64.pl) $$FLAVOR $(location crypto/aes/aesni-sha1-x86_64.s)", - "perl $(location crypto/aes/asm/aesni-sha256-x86_64.pl) $$FLAVOR $(location crypto/aes/aesni-sha256-x86_64.s)", - "perl $(location crypto/aes/asm/aesni-x86_64.pl) $$FLAVOR $(location crypto/aes/aesni-x86_64.s)", - "perl $(location crypto/aes/asm/bsaes-x86_64.pl) $$FLAVOR $(location crypto/aes/bsaes-x86_64.s)", - "perl $(location crypto/aes/asm/vpaes-x86_64.pl) $$FLAVOR $(location crypto/aes/vpaes-x86_64.s)", - "perl $(location crypto/bn/asm/rsaz-avx2.pl) $$FLAVOR $(location crypto/bn/rsaz-avx2.s)", - "perl $(location crypto/bn/asm/rsaz-x86_64.pl) $$FLAVOR $(location crypto/bn/rsaz-x86_64.s)", - "perl $(location crypto/bn/asm/x86_64-gf2m.pl) $$FLAVOR $(location crypto/bn/x86_64-gf2m.s)", - "perl $(location crypto/bn/asm/x86_64-mont.pl) $$FLAVOR $(location crypto/bn/x86_64-mont.s)", - "perl $(location crypto/bn/asm/x86_64-mont5.pl) $$FLAVOR $(location crypto/bn/x86_64-mont5.s)", - "perl $(location crypto/camellia/asm/cmll-x86_64.pl) $$FLAVOR $(location crypto/camellia/cmll-x86_64.s)", - "perl $(location crypto/chacha/asm/chacha-x86_64.pl) $$FLAVOR $(location crypto/chacha/chacha-x86_64.s)", - "perl $(location crypto/ec/asm/ecp_nistz256-x86_64.pl) $$FLAVOR $(location crypto/ec/ecp_nistz256-x86_64.s)", - "perl $(location crypto/ec/asm/x25519-x86_64.pl) $$FLAVOR $(location crypto/ec/x25519-x86_64.s)", - "perl $(location crypto/md5/asm/md5-x86_64.pl) $$FLAVOR $(location crypto/md5/md5-x86_64.s)", - "perl $(location crypto/modes/asm/aesni-gcm-x86_64.pl) $$FLAVOR $(location crypto/modes/aesni-gcm-x86_64.s)", - "perl $(location crypto/modes/asm/ghash-x86_64.pl) $$FLAVOR $(location crypto/modes/ghash-x86_64.s)", - "perl $(location crypto/poly1305/asm/poly1305-x86_64.pl) $$FLAVOR $(location crypto/poly1305/poly1305-x86_64.s)", - "perl $(location crypto/rc4/asm/rc4-md5-x86_64.pl) $$FLAVOR $(location crypto/rc4/rc4-md5-x86_64.s)", - "perl $(location crypto/rc4/asm/rc4-x86_64.pl) $$FLAVOR $(location crypto/rc4/rc4-x86_64.s)", - "perl $(location crypto/sha/asm/keccak1600-x86_64.pl) $$FLAVOR $(location crypto/sha/keccak1600-x86_64.s)", - "perl $(location crypto/sha/asm/sha1-mb-x86_64.pl) $$FLAVOR $(location crypto/sha/sha1-mb-x86_64.s)", - "perl $(location crypto/sha/asm/sha1-x86_64.pl) $$FLAVOR $(location crypto/sha/sha1-x86_64.s)", - "perl $(location crypto/sha/asm/sha256-mb-x86_64.pl) $$FLAVOR $(location crypto/sha/sha256-mb-x86_64.s)", - "perl $(location crypto/sha/asm/sha512-x86_64.pl) $$FLAVOR $(location crypto/sha/sha256-x86_64.s)", - "perl $(location crypto/sha/asm/sha512-x86_64.pl) $$FLAVOR $(location crypto/sha/sha512-x86_64.s)", - "perl $(location crypto/whrlpool/asm/wp-x86_64.pl) $$FLAVOR $(location crypto/whrlpool/wp-x86_64.s)", - "perl $(location crypto/x86_64cpuid.pl) $$FLAVOR $(location crypto/x86_64cpuid.s)", - "perl $(location engines/asm/e_padlock-x86_64.pl) $$FLAVOR $(location engines/e_padlock-x86_64.s)", - ]), - target_compatible_with = ["@platforms//cpu:x86_64"], -) - -cc_library( - name = "libcrypto", - srcs = [ - "crypto/aes/aes-x86_64.s", - "crypto/aes/aes_cfb.c", - "crypto/aes/aes_ecb.c", - "crypto/aes/aes_ige.c", - "crypto/aes/aes_misc.c", - "crypto/aes/aes_ofb.c", - "crypto/aes/aes_wrap.c", - "crypto/aes/aesni-mb-x86_64.s", - "crypto/aes/aesni-sha1-x86_64.s", - "crypto/aes/aesni-sha256-x86_64.s", - "crypto/aes/aesni-x86_64.s", - "crypto/aes/bsaes-x86_64.s", - "crypto/aes/vpaes-x86_64.s", - "crypto/aria/aria.c", - "crypto/asn1/a_bitstr.c", - "crypto/asn1/a_d2i_fp.c", - "crypto/asn1/a_digest.c", - "crypto/asn1/a_dup.c", - "crypto/asn1/a_gentm.c", - "crypto/asn1/a_i2d_fp.c", - "crypto/asn1/a_int.c", - "crypto/asn1/a_mbstr.c", - "crypto/asn1/a_object.c", - "crypto/asn1/a_octet.c", - "crypto/asn1/a_print.c", - "crypto/asn1/a_sign.c", - "crypto/asn1/a_strex.c", - "crypto/asn1/a_strnid.c", - "crypto/asn1/a_time.c", - "crypto/asn1/a_type.c", - "crypto/asn1/a_utctm.c", - "crypto/asn1/a_utf8.c", - "crypto/asn1/a_verify.c", - "crypto/asn1/ameth_lib.c", - "crypto/asn1/asn1_err.c", - "crypto/asn1/asn1_gen.c", - "crypto/asn1/asn1_item_list.c", - "crypto/asn1/asn1_lib.c", - "crypto/asn1/asn1_par.c", - "crypto/asn1/asn_mime.c", - "crypto/asn1/asn_moid.c", - "crypto/asn1/asn_mstbl.c", - "crypto/asn1/asn_pack.c", - "crypto/asn1/bio_asn1.c", - "crypto/asn1/bio_ndef.c", - "crypto/asn1/d2i_pr.c", - "crypto/asn1/d2i_pu.c", - "crypto/asn1/evp_asn1.c", - "crypto/asn1/f_int.c", - "crypto/asn1/f_string.c", - "crypto/asn1/i2d_pr.c", - "crypto/asn1/i2d_pu.c", - "crypto/asn1/n_pkey.c", - "crypto/asn1/nsseq.c", - "crypto/asn1/p5_pbe.c", - "crypto/asn1/p5_pbev2.c", - "crypto/asn1/p5_scrypt.c", - "crypto/asn1/p8_pkey.c", - "crypto/asn1/t_bitst.c", - "crypto/asn1/t_pkey.c", - "crypto/asn1/t_spki.c", - "crypto/asn1/tasn_dec.c", - "crypto/asn1/tasn_enc.c", - "crypto/asn1/tasn_fre.c", - "crypto/asn1/tasn_new.c", - "crypto/asn1/tasn_prn.c", - "crypto/asn1/tasn_scn.c", - "crypto/asn1/tasn_typ.c", - "crypto/asn1/tasn_utl.c", - "crypto/asn1/x_algor.c", - "crypto/asn1/x_bignum.c", - "crypto/asn1/x_info.c", - "crypto/asn1/x_int64.c", - "crypto/asn1/x_long.c", - "crypto/asn1/x_pkey.c", - "crypto/asn1/x_sig.c", - "crypto/asn1/x_spki.c", - "crypto/asn1/x_val.c", - "crypto/async/arch/async_null.c", - "crypto/async/arch/async_posix.c", - "crypto/async/arch/async_win.c", - "crypto/async/async.c", - "crypto/async/async_err.c", - "crypto/async/async_wait.c", - "crypto/bf/bf_cfb64.c", - "crypto/bf/bf_ecb.c", - "crypto/bf/bf_enc.c", - "crypto/bf/bf_ofb64.c", - "crypto/bf/bf_skey.c", - "crypto/bio/b_addr.c", - "crypto/bio/b_dump.c", - "crypto/bio/b_print.c", - "crypto/bio/b_sock.c", - "crypto/bio/b_sock2.c", - "crypto/bio/bf_buff.c", - "crypto/bio/bf_lbuf.c", - "crypto/bio/bf_nbio.c", - "crypto/bio/bf_null.c", - "crypto/bio/bio_cb.c", - "crypto/bio/bio_err.c", - "crypto/bio/bio_lib.c", - "crypto/bio/bio_meth.c", - "crypto/bio/bss_acpt.c", - "crypto/bio/bss_bio.c", - "crypto/bio/bss_conn.c", - "crypto/bio/bss_dgram.c", - "crypto/bio/bss_fd.c", - "crypto/bio/bss_file.c", - "crypto/bio/bss_log.c", - "crypto/bio/bss_mem.c", - "crypto/bio/bss_null.c", - "crypto/bio/bss_sock.c", - "crypto/blake2/blake2b.c", - "crypto/blake2/blake2s.c", - "crypto/blake2/m_blake2b.c", - "crypto/blake2/m_blake2s.c", - "crypto/bn/asm/x86_64-gcc.c", - "crypto/bn/bn_add.c", - "crypto/bn/bn_blind.c", - "crypto/bn/bn_const.c", - "crypto/bn/bn_ctx.c", - "crypto/bn/bn_depr.c", - "crypto/bn/bn_dh.c", - "crypto/bn/bn_div.c", - "crypto/bn/bn_err.c", - "crypto/bn/bn_exp.c", - "crypto/bn/bn_exp2.c", - "crypto/bn/bn_gcd.c", - "crypto/bn/bn_gf2m.c", - "crypto/bn/bn_intern.c", - "crypto/bn/bn_kron.c", - "crypto/bn/bn_lib.c", - "crypto/bn/bn_mod.c", - "crypto/bn/bn_mont.c", - "crypto/bn/bn_mpi.c", - "crypto/bn/bn_mul.c", - "crypto/bn/bn_nist.c", - "crypto/bn/bn_prime.c", - "crypto/bn/bn_print.c", - "crypto/bn/bn_rand.c", - "crypto/bn/bn_recp.c", - "crypto/bn/bn_shift.c", - "crypto/bn/bn_sqr.c", - "crypto/bn/bn_sqrt.c", - "crypto/bn/bn_srp.c", - "crypto/bn/bn_word.c", - "crypto/bn/bn_x931p.c", - "crypto/bn/rsaz-avx2.s", - "crypto/bn/rsaz-x86_64.s", - "crypto/bn/rsaz_exp.c", - "crypto/bn/x86_64-gf2m.s", - "crypto/bn/x86_64-mont.s", - "crypto/bn/x86_64-mont5.s", - "crypto/buffer/buf_err.c", - "crypto/buffer/buffer.c", - "crypto/camellia/cmll-x86_64.s", - "crypto/camellia/cmll_cfb.c", - "crypto/camellia/cmll_ctr.c", - "crypto/camellia/cmll_ecb.c", - "crypto/camellia/cmll_misc.c", - "crypto/camellia/cmll_ofb.c", - "crypto/cast/c_cfb64.c", - "crypto/cast/c_ecb.c", - "crypto/cast/c_enc.c", - "crypto/cast/c_ofb64.c", - "crypto/cast/c_skey.c", - "crypto/chacha/chacha-x86_64.s", - "crypto/cmac/cm_ameth.c", - "crypto/cmac/cm_pmeth.c", - "crypto/cmac/cmac.c", - "crypto/cms/cms_asn1.c", - "crypto/cms/cms_att.c", - "crypto/cms/cms_cd.c", - "crypto/cms/cms_dd.c", - "crypto/cms/cms_enc.c", - "crypto/cms/cms_env.c", - "crypto/cms/cms_err.c", - "crypto/cms/cms_ess.c", - "crypto/cms/cms_io.c", - "crypto/cms/cms_kari.c", - "crypto/cms/cms_lib.c", - "crypto/cms/cms_pwri.c", - "crypto/cms/cms_sd.c", - "crypto/cms/cms_smime.c", - "crypto/comp/c_zlib.c", - "crypto/comp/comp_err.c", - "crypto/comp/comp_lib.c", - "crypto/conf/conf_api.c", - "crypto/conf/conf_def.c", - "crypto/conf/conf_err.c", - "crypto/conf/conf_lib.c", - "crypto/conf/conf_mall.c", - "crypto/conf/conf_mod.c", - "crypto/conf/conf_sap.c", - "crypto/conf/conf_ssl.c", - "crypto/cpt_err.c", - "crypto/cryptlib.c", - "crypto/ct/ct_b64.c", - "crypto/ct/ct_err.c", - "crypto/ct/ct_log.c", - "crypto/ct/ct_oct.c", - "crypto/ct/ct_policy.c", - "crypto/ct/ct_prn.c", - "crypto/ct/ct_sct.c", - "crypto/ct/ct_sct_ctx.c", - "crypto/ct/ct_vfy.c", - "crypto/ct/ct_x509v3.c", - "crypto/ctype.c", - "crypto/cversion.c", - "crypto/des/cbc_cksm.c", - "crypto/des/cbc_enc.c", - "crypto/des/cfb64ede.c", - "crypto/des/cfb64enc.c", - "crypto/des/cfb_enc.c", - "crypto/des/des_enc.c", - "crypto/des/ecb3_enc.c", - "crypto/des/ecb_enc.c", - "crypto/des/fcrypt.c", - "crypto/des/fcrypt_b.c", - "crypto/des/ofb64ede.c", - "crypto/des/ofb64enc.c", - "crypto/des/ofb_enc.c", - "crypto/des/pcbc_enc.c", - "crypto/des/qud_cksm.c", - "crypto/des/rand_key.c", - "crypto/des/set_key.c", - "crypto/des/str2key.c", - "crypto/des/xcbc_enc.c", - "crypto/dh/dh_ameth.c", - "crypto/dh/dh_asn1.c", - "crypto/dh/dh_check.c", - "crypto/dh/dh_depr.c", - "crypto/dh/dh_err.c", - "crypto/dh/dh_gen.c", - "crypto/dh/dh_kdf.c", - "crypto/dh/dh_key.c", - "crypto/dh/dh_lib.c", - "crypto/dh/dh_meth.c", - "crypto/dh/dh_pmeth.c", - "crypto/dh/dh_prn.c", - "crypto/dh/dh_rfc5114.c", - "crypto/dh/dh_rfc7919.c", - "crypto/dsa/dsa_ameth.c", - "crypto/dsa/dsa_asn1.c", - "crypto/dsa/dsa_depr.c", - "crypto/dsa/dsa_err.c", - "crypto/dsa/dsa_gen.c", - "crypto/dsa/dsa_key.c", - "crypto/dsa/dsa_lib.c", - "crypto/dsa/dsa_meth.c", - "crypto/dsa/dsa_ossl.c", - "crypto/dsa/dsa_pmeth.c", - "crypto/dsa/dsa_prn.c", - "crypto/dsa/dsa_sign.c", - "crypto/dsa/dsa_vrf.c", - "crypto/dso/dso_dl.c", - "crypto/dso/dso_dlfcn.c", - "crypto/dso/dso_err.c", - "crypto/dso/dso_lib.c", - "crypto/dso/dso_openssl.c", - "crypto/dso/dso_vms.c", - "crypto/dso/dso_win32.c", - "crypto/ebcdic.c", - "crypto/ec/curve25519.c", - "crypto/ec/curve448/arch_32/f_impl.c", - "crypto/ec/curve448/curve448.c", - "crypto/ec/curve448/curve448_tables.c", - "crypto/ec/curve448/eddsa.c", - "crypto/ec/curve448/f_generic.c", - "crypto/ec/curve448/scalar.c", - "crypto/ec/ec2_oct.c", - "crypto/ec/ec2_smpl.c", - "crypto/ec/ec_ameth.c", - "crypto/ec/ec_asn1.c", - "crypto/ec/ec_check.c", - "crypto/ec/ec_curve.c", - "crypto/ec/ec_cvt.c", - "crypto/ec/ec_err.c", - "crypto/ec/ec_key.c", - "crypto/ec/ec_kmeth.c", - "crypto/ec/ec_lib.c", - "crypto/ec/ec_mult.c", - "crypto/ec/ec_oct.c", - "crypto/ec/ec_pmeth.c", - "crypto/ec/ec_print.c", - "crypto/ec/ecdh_kdf.c", - "crypto/ec/ecdh_ossl.c", - "crypto/ec/ecdsa_ossl.c", - "crypto/ec/ecdsa_sign.c", - "crypto/ec/ecdsa_vrf.c", - "crypto/ec/eck_prn.c", - "crypto/ec/ecp_mont.c", - "crypto/ec/ecp_nist.c", - "crypto/ec/ecp_nistp224.c", - "crypto/ec/ecp_nistp256.c", - "crypto/ec/ecp_nistp521.c", - "crypto/ec/ecp_nistputil.c", - "crypto/ec/ecp_nistz256-x86_64.s", - "crypto/ec/ecp_nistz256.c", - "crypto/ec/ecp_oct.c", - "crypto/ec/ecp_smpl.c", - "crypto/ec/ecx_meth.c", - "crypto/ec/x25519-x86_64.s", - "crypto/engine/eng_all.c", - "crypto/engine/eng_cnf.c", - "crypto/engine/eng_ctrl.c", - "crypto/engine/eng_dyn.c", - "crypto/engine/eng_err.c", - "crypto/engine/eng_fat.c", - "crypto/engine/eng_init.c", - "crypto/engine/eng_lib.c", - "crypto/engine/eng_list.c", - "crypto/engine/eng_openssl.c", - "crypto/engine/eng_pkey.c", - "crypto/engine/eng_rdrand.c", - "crypto/engine/eng_table.c", - "crypto/engine/tb_asnmth.c", - "crypto/engine/tb_cipher.c", - "crypto/engine/tb_dh.c", - "crypto/engine/tb_digest.c", - "crypto/engine/tb_dsa.c", - "crypto/engine/tb_eckey.c", - "crypto/engine/tb_pkmeth.c", - "crypto/engine/tb_rand.c", - "crypto/engine/tb_rsa.c", - "crypto/err/err.c", - "crypto/err/err_all.c", - "crypto/err/err_prn.c", - "crypto/evp/bio_b64.c", - "crypto/evp/bio_enc.c", - "crypto/evp/bio_md.c", - "crypto/evp/bio_ok.c", - "crypto/evp/c_allc.c", - "crypto/evp/c_alld.c", - "crypto/evp/cmeth_lib.c", - "crypto/evp/digest.c", - "crypto/evp/e_aes.c", - "crypto/evp/e_aes_cbc_hmac_sha1.c", - "crypto/evp/e_aes_cbc_hmac_sha256.c", - "crypto/evp/e_aria.c", - "crypto/evp/e_bf.c", - "crypto/evp/e_camellia.c", - "crypto/evp/e_cast.c", - "crypto/evp/e_chacha20_poly1305.c", - "crypto/evp/e_des.c", - "crypto/evp/e_des3.c", - "crypto/evp/e_idea.c", - "crypto/evp/e_null.c", - "crypto/evp/e_old.c", - "crypto/evp/e_rc2.c", - "crypto/evp/e_rc4.c", - "crypto/evp/e_rc4_hmac_md5.c", - "crypto/evp/e_rc5.c", - "crypto/evp/e_seed.c", - "crypto/evp/e_sm4.c", - "crypto/evp/e_xcbc_d.c", - "crypto/evp/encode.c", - "crypto/evp/evp_cnf.c", - "crypto/evp/evp_enc.c", - "crypto/evp/evp_err.c", - "crypto/evp/evp_key.c", - "crypto/evp/evp_lib.c", - "crypto/evp/evp_pbe.c", - "crypto/evp/evp_pkey.c", - "crypto/evp/m_md2.c", - "crypto/evp/m_md4.c", - "crypto/evp/m_md5.c", - "crypto/evp/m_md5_sha1.c", - "crypto/evp/m_mdc2.c", - "crypto/evp/m_null.c", - "crypto/evp/m_ripemd.c", - "crypto/evp/m_sha1.c", - "crypto/evp/m_sha3.c", - "crypto/evp/m_sigver.c", - "crypto/evp/m_wp.c", - "crypto/evp/names.c", - "crypto/evp/p5_crpt.c", - "crypto/evp/p5_crpt2.c", - "crypto/evp/p_dec.c", - "crypto/evp/p_enc.c", - "crypto/evp/p_lib.c", - "crypto/evp/p_open.c", - "crypto/evp/p_seal.c", - "crypto/evp/p_sign.c", - "crypto/evp/p_verify.c", - "crypto/evp/pbe_scrypt.c", - "crypto/evp/pmeth_fn.c", - "crypto/evp/pmeth_gn.c", - "crypto/evp/pmeth_lib.c", - "crypto/ex_data.c", - "crypto/getenv.c", - "crypto/hmac/hm_ameth.c", - "crypto/hmac/hm_pmeth.c", - "crypto/hmac/hmac.c", - "crypto/idea/i_cbc.c", - "crypto/idea/i_cfb64.c", - "crypto/idea/i_ecb.c", - "crypto/idea/i_ofb64.c", - "crypto/idea/i_skey.c", - "crypto/init.c", - "crypto/kdf/hkdf.c", - "crypto/kdf/kdf_err.c", - "crypto/kdf/scrypt.c", - "crypto/kdf/tls1_prf.c", - "crypto/lhash/lh_stats.c", - "crypto/lhash/lhash.c", - "crypto/md4/md4_dgst.c", - "crypto/md4/md4_one.c", - "crypto/md5/md5-x86_64.s", - "crypto/md5/md5_dgst.c", - "crypto/md5/md5_one.c", - "crypto/mdc2/mdc2_one.c", - "crypto/mdc2/mdc2dgst.c", - "crypto/mem.c", - "crypto/mem_dbg.c", - "crypto/mem_sec.c", - "crypto/modes/aesni-gcm-x86_64.s", - "crypto/modes/cbc128.c", - "crypto/modes/ccm128.c", - "crypto/modes/cfb128.c", - "crypto/modes/ctr128.c", - "crypto/modes/cts128.c", - "crypto/modes/gcm128.c", - "crypto/modes/ghash-x86_64.s", - "crypto/modes/ocb128.c", - "crypto/modes/ofb128.c", - "crypto/modes/wrap128.c", - "crypto/modes/xts128.c", - "crypto/o_dir.c", - "crypto/o_fips.c", - "crypto/o_fopen.c", - "crypto/o_init.c", - "crypto/o_str.c", - "crypto/o_time.c", - "crypto/objects/o_names.c", - "crypto/objects/obj_dat.c", - "crypto/objects/obj_err.c", - "crypto/objects/obj_lib.c", - "crypto/objects/obj_xref.c", - "crypto/ocsp/ocsp_asn.c", - "crypto/ocsp/ocsp_cl.c", - "crypto/ocsp/ocsp_err.c", - "crypto/ocsp/ocsp_ext.c", - "crypto/ocsp/ocsp_ht.c", - "crypto/ocsp/ocsp_lib.c", - "crypto/ocsp/ocsp_prn.c", - "crypto/ocsp/ocsp_srv.c", - "crypto/ocsp/ocsp_vfy.c", - "crypto/ocsp/v3_ocsp.c", - "crypto/pem/pem_all.c", - "crypto/pem/pem_err.c", - "crypto/pem/pem_info.c", - "crypto/pem/pem_lib.c", - "crypto/pem/pem_oth.c", - "crypto/pem/pem_pk8.c", - "crypto/pem/pem_pkey.c", - "crypto/pem/pem_sign.c", - "crypto/pem/pem_x509.c", - "crypto/pem/pem_xaux.c", - "crypto/pem/pvkfmt.c", - "crypto/pkcs12/p12_add.c", - "crypto/pkcs12/p12_asn.c", - "crypto/pkcs12/p12_attr.c", - "crypto/pkcs12/p12_crpt.c", - "crypto/pkcs12/p12_crt.c", - "crypto/pkcs12/p12_decr.c", - "crypto/pkcs12/p12_init.c", - "crypto/pkcs12/p12_key.c", - "crypto/pkcs12/p12_kiss.c", - "crypto/pkcs12/p12_mutl.c", - "crypto/pkcs12/p12_npas.c", - "crypto/pkcs12/p12_p8d.c", - "crypto/pkcs12/p12_p8e.c", - "crypto/pkcs12/p12_sbag.c", - "crypto/pkcs12/p12_utl.c", - "crypto/pkcs12/pk12err.c", - "crypto/pkcs7/bio_pk7.c", - "crypto/pkcs7/pk7_asn1.c", - "crypto/pkcs7/pk7_attr.c", - "crypto/pkcs7/pk7_doit.c", - "crypto/pkcs7/pk7_lib.c", - "crypto/pkcs7/pk7_mime.c", - "crypto/pkcs7/pk7_smime.c", - "crypto/pkcs7/pkcs7err.c", - "crypto/poly1305/poly1305-x86_64.s", - "crypto/poly1305/poly1305.c", - "crypto/poly1305/poly1305_ameth.c", - "crypto/poly1305/poly1305_pmeth.c", - "crypto/rand/drbg_ctr.c", - "crypto/rand/drbg_lib.c", - "crypto/rand/rand_egd.c", - "crypto/rand/rand_err.c", - "crypto/rand/rand_lib.c", - "crypto/rand/rand_unix.c", - "crypto/rand/rand_vms.c", - "crypto/rand/rand_win.c", - "crypto/rand/randfile.c", - "crypto/rc2/rc2_cbc.c", - "crypto/rc2/rc2_ecb.c", - "crypto/rc2/rc2_skey.c", - "crypto/rc2/rc2cfb64.c", - "crypto/rc2/rc2ofb64.c", - "crypto/rc4/rc4-md5-x86_64.s", - "crypto/rc4/rc4-x86_64.s", - "crypto/ripemd/rmd_dgst.c", - "crypto/ripemd/rmd_one.c", - "crypto/rsa/rsa_ameth.c", - "crypto/rsa/rsa_asn1.c", - "crypto/rsa/rsa_chk.c", - "crypto/rsa/rsa_crpt.c", - "crypto/rsa/rsa_depr.c", - "crypto/rsa/rsa_err.c", - "crypto/rsa/rsa_gen.c", - "crypto/rsa/rsa_lib.c", - "crypto/rsa/rsa_meth.c", - "crypto/rsa/rsa_mp.c", - "crypto/rsa/rsa_none.c", - "crypto/rsa/rsa_oaep.c", - "crypto/rsa/rsa_ossl.c", - "crypto/rsa/rsa_pk1.c", - "crypto/rsa/rsa_pmeth.c", - "crypto/rsa/rsa_prn.c", - "crypto/rsa/rsa_pss.c", - "crypto/rsa/rsa_saos.c", - "crypto/rsa/rsa_sign.c", - "crypto/rsa/rsa_ssl.c", - "crypto/rsa/rsa_x931.c", - "crypto/rsa/rsa_x931g.c", - "crypto/seed/seed.c", - "crypto/seed/seed_cbc.c", - "crypto/seed/seed_cfb.c", - "crypto/seed/seed_ecb.c", - "crypto/seed/seed_ofb.c", - "crypto/sha/keccak1600-x86_64.s", - "crypto/sha/sha1-mb-x86_64.s", - "crypto/sha/sha1-x86_64.s", - "crypto/sha/sha1_one.c", - "crypto/sha/sha1dgst.c", - "crypto/sha/sha256-mb-x86_64.s", - "crypto/sha/sha256-x86_64.s", - "crypto/sha/sha256.c", - "crypto/sha/sha512-x86_64.s", - "crypto/sha/sha512.c", - "crypto/siphash/siphash.c", - "crypto/siphash/siphash_ameth.c", - "crypto/siphash/siphash_pmeth.c", - "crypto/sm2/sm2_crypt.c", - "crypto/sm2/sm2_err.c", - "crypto/sm2/sm2_pmeth.c", - "crypto/sm2/sm2_sign.c", - "crypto/sm3/m_sm3.c", - "crypto/sm3/sm3.c", - "crypto/sm4/sm4.c", - "crypto/srp/srp_lib.c", - "crypto/srp/srp_vfy.c", - "crypto/stack/stack.c", - "crypto/store/loader_file.c", - "crypto/store/store_err.c", - "crypto/store/store_init.c", - "crypto/store/store_lib.c", - "crypto/store/store_register.c", - "crypto/store/store_strings.c", - "crypto/threads_none.c", - "crypto/threads_pthread.c", - "crypto/threads_win.c", - "crypto/ts/ts_asn1.c", - "crypto/ts/ts_conf.c", - "crypto/ts/ts_err.c", - "crypto/ts/ts_lib.c", - "crypto/ts/ts_req_print.c", - "crypto/ts/ts_req_utils.c", - "crypto/ts/ts_rsp_print.c", - "crypto/ts/ts_rsp_sign.c", - "crypto/ts/ts_rsp_utils.c", - "crypto/ts/ts_rsp_verify.c", - "crypto/ts/ts_verify_ctx.c", - "crypto/txt_db/txt_db.c", - "crypto/ui/ui_err.c", - "crypto/ui/ui_lib.c", - "crypto/ui/ui_null.c", - "crypto/ui/ui_openssl.c", - "crypto/ui/ui_util.c", - "crypto/uid.c", - "crypto/whrlpool/wp-x86_64.s", - "crypto/whrlpool/wp_dgst.c", - "crypto/x509/by_dir.c", - "crypto/x509/by_file.c", - "crypto/x509/t_crl.c", - "crypto/x509/t_req.c", - "crypto/x509/t_x509.c", - "crypto/x509/x509_att.c", - "crypto/x509/x509_cmp.c", - "crypto/x509/x509_d2.c", - "crypto/x509/x509_def.c", - "crypto/x509/x509_err.c", - "crypto/x509/x509_ext.c", - "crypto/x509/x509_lu.c", - "crypto/x509/x509_meth.c", - "crypto/x509/x509_obj.c", - "crypto/x509/x509_r2x.c", - "crypto/x509/x509_req.c", - "crypto/x509/x509_set.c", - "crypto/x509/x509_trs.c", - "crypto/x509/x509_txt.c", - "crypto/x509/x509_v3.c", - "crypto/x509/x509_vfy.c", - "crypto/x509/x509_vpm.c", - "crypto/x509/x509cset.c", - "crypto/x509/x509name.c", - "crypto/x509/x509rset.c", - "crypto/x509/x509spki.c", - "crypto/x509/x509type.c", - "crypto/x509/x_all.c", - "crypto/x509/x_attrib.c", - "crypto/x509/x_crl.c", - "crypto/x509/x_exten.c", - "crypto/x509/x_name.c", - "crypto/x509/x_pubkey.c", - "crypto/x509/x_req.c", - "crypto/x509/x_x509.c", - "crypto/x509/x_x509a.c", - "crypto/x509v3/pcy_cache.c", - "crypto/x509v3/pcy_data.c", - "crypto/x509v3/pcy_lib.c", - "crypto/x509v3/pcy_map.c", - "crypto/x509v3/pcy_node.c", - "crypto/x509v3/pcy_tree.c", - "crypto/x509v3/v3_addr.c", - "crypto/x509v3/v3_admis.c", - "crypto/x509v3/v3_akey.c", - "crypto/x509v3/v3_akeya.c", - "crypto/x509v3/v3_alt.c", - "crypto/x509v3/v3_asid.c", - "crypto/x509v3/v3_bcons.c", - "crypto/x509v3/v3_bitst.c", - "crypto/x509v3/v3_conf.c", - "crypto/x509v3/v3_cpols.c", - "crypto/x509v3/v3_crld.c", - "crypto/x509v3/v3_enum.c", - "crypto/x509v3/v3_extku.c", - "crypto/x509v3/v3_genn.c", - "crypto/x509v3/v3_ia5.c", - "crypto/x509v3/v3_info.c", - "crypto/x509v3/v3_int.c", - "crypto/x509v3/v3_lib.c", - "crypto/x509v3/v3_ncons.c", - "crypto/x509v3/v3_pci.c", - "crypto/x509v3/v3_pcia.c", - "crypto/x509v3/v3_pcons.c", - "crypto/x509v3/v3_pku.c", - "crypto/x509v3/v3_pmaps.c", - "crypto/x509v3/v3_prn.c", - "crypto/x509v3/v3_purp.c", - "crypto/x509v3/v3_skey.c", - "crypto/x509v3/v3_sxnet.c", - "crypto/x509v3/v3_tlsf.c", - "crypto/x509v3/v3_utl.c", - "crypto/x509v3/v3err.c", - "crypto/x86_64cpuid.s", - ] + CONF_FILES + ["crypto/buildinf.h"] + glob([ - "*.h", - "crypto/**/*.h", - "crypto/include/*.h", - "include/internal/*.h", - ]), - hdrs = HDRS + [ - # These are not independent compile units, but are included in other .c files. - "crypto/LPdir_unix.c", - "crypto/des/ncbc_enc.c", - ], - copts = COPTS + [ - "-isystem external/openssl", - "-iquote external/openssl/crypto", - "-iquote external/openssl/crypto/include", - "-iquote external/openssl/crypto/modes", - "-iquote external/openssl/crypto/ec/curve448", - "-iquote external/openssl/crypto/ec/curve448/arch_32", - "-iquote $(GENDIR)/external/openssl/crypto", - "-iquote $(GENDIR)/external/openssl/crypto/include", - ], - includes = ["include"], -) - -cc_library( - name = "libssl", - srcs = [ - "ssl/bio_ssl.c", - "ssl/d1_lib.c", - "ssl/d1_msg.c", - "ssl/d1_srtp.c", - "ssl/methods.c", - "ssl/packet.c", - "ssl/pqueue.c", - "ssl/record/dtls1_bitmap.c", - "ssl/record/rec_layer_d1.c", - "ssl/record/rec_layer_s3.c", - "ssl/record/ssl3_buffer.c", - "ssl/record/ssl3_record.c", - "ssl/record/ssl3_record_tls13.c", - "ssl/s3_cbc.c", - "ssl/s3_enc.c", - "ssl/s3_lib.c", - "ssl/s3_msg.c", - "ssl/ssl_asn1.c", - "ssl/ssl_cert.c", - "ssl/ssl_ciph.c", - "ssl/ssl_conf.c", - "ssl/ssl_err.c", - "ssl/ssl_init.c", - "ssl/ssl_lib.c", - "ssl/ssl_mcnf.c", - "ssl/ssl_rsa.c", - "ssl/ssl_sess.c", - "ssl/ssl_stat.c", - "ssl/ssl_txt.c", - "ssl/ssl_utst.c", - "ssl/statem/extensions.c", - "ssl/statem/extensions_clnt.c", - "ssl/statem/extensions_cust.c", - "ssl/statem/extensions_srvr.c", - "ssl/statem/statem.c", - "ssl/statem/statem_clnt.c", - "ssl/statem/statem_dtls.c", - "ssl/statem/statem_lib.c", - "ssl/statem/statem_srvr.c", - "ssl/t1_enc.c", - "ssl/t1_lib.c", - "ssl/t1_trce.c", - "ssl/tls13_enc.c", - "ssl/tls_srp.c", - ] + glob([ - "ssl/**/*.h", - ]), - hdrs = HDRS, - copts = COPTS, - deps = [":libcrypto"], -) diff --git a/tests/rust/rules_rust.patch b/tests/rust/rules_rust.patch deleted file mode 100644 index f98d5516d..000000000 --- a/tests/rust/rules_rust.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/test/unit/linkstamps/linkstamps_test.bzl b/test/unit/linkstamps/linkstamps_test.bzl -index d7423f3..47120c1 100644 ---- a/test/unit/linkstamps/linkstamps_test.bzl -+++ b/test/unit/linkstamps/linkstamps_test.bzl -@@ -23 +23,2 @@ def _supports_linkstamps_test(ctx): -- expected_linkstamp_path = tut_out.dirname + "/_objs/" + tut_out.basename + "/test/unit/linkstamps/linkstamp.o" -+ workspace_prefix = "" if ctx.workspace_name == "rules_rust" else "/external/rules_rust" -+ expected_linkstamp_path = tut_out.dirname + "/_objs/" + tut_out.basename + workspace_prefix + "/test/unit/linkstamps/linkstamp.o" -diff --git a/test/unit/native_deps/native_deps_test.bzl b/test/unit/native_deps/native_deps_test.bzl -index 5a91881..6665489 100644 ---- a/test/unit/native_deps/native_deps_test.bzl -+++ b/test/unit/native_deps/native_deps_test.bzl -@@ -80,0 +81 @@ def _bin_has_native_dep_and_alwayslink_test_impl(ctx): -+ workspace_prefix = "" if ctx.workspace_name == "rules_rust" else "external/rules_rust/" -@@ -84 +85 @@ def _bin_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=-Wl,-force_load,bazel-out/darwin-{}/bin/test/unit/native_deps/libalwayslink.lo".format(compilation_mode), -+ "link-arg=-Wl,-force_load,bazel-out/darwin-{}/bin/{}test/unit/native_deps/libalwayslink.lo".format(compilation_mode, workspace_prefix), -@@ -89 +90 @@ def _bin_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=/WHOLEARCHIVE:bazel-out/x64_windows-{}/bin/test/unit/native_deps/alwayslink.lo.lib".format(compilation_mode), -+ "link-arg=/WHOLEARCHIVE:bazel-out/x64_windows-{}/bin/{}test/unit/native_deps/alwayslink.lo.lib".format(compilation_mode, workspace_prefix), -@@ -95 +96 @@ def _bin_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=bazel-out/k8-{}/bin/test/unit/native_deps/libalwayslink.lo".format(compilation_mode), -+ "link-arg=bazel-out/k8-{}/bin/{}test/unit/native_deps/libalwayslink.lo".format(compilation_mode, workspace_prefix), -@@ -114,0 +116 @@ def _cdylib_has_native_dep_and_alwayslink_test_impl(ctx): -+ workspace_prefix = "" if ctx.workspace_name == "rules_rust" else "external/rules_rust/" -@@ -119 +121 @@ def _cdylib_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=-Wl,-force_load,bazel-out/darwin-{}/bin/test/unit/native_deps/libalwayslink{}.lo".format(compilation_mode, pic_suffix), -+ "link-arg=-Wl,-force_load,bazel-out/darwin-{}/bin/{}test/unit/native_deps/libalwayslink{}.lo".format(compilation_mode, workspace_prefix, pic_suffix), -@@ -124 +126 @@ def _cdylib_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=/WHOLEARCHIVE:bazel-out/x64_windows-{}/bin/test/unit/native_deps/alwayslink.lo.lib".format(compilation_mode), -+ "link-arg=/WHOLEARCHIVE:bazel-out/x64_windows-{}/bin/{}test/unit/native_deps/alwayslink.lo.lib".format(compilation_mode, workspace_prefix), -@@ -130 +132 @@ def _cdylib_has_native_dep_and_alwayslink_test_impl(ctx): -- "link-arg=bazel-out/k8-{}/bin/test/unit/native_deps/libalwayslink{}.lo".format(compilation_mode, pic_suffix), -+ "link-arg=bazel-out/k8-{}/bin/{}test/unit/native_deps/libalwayslink{}.lo".format(compilation_mode, workspace_prefix, pic_suffix), diff --git a/tests/scripts/archlinux_test.sh b/tests/scripts/archlinux_test.sh index 25373deb6..eb244f4ea 100755 --- a/tests/scripts/archlinux_test.sh +++ b/tests/scripts/archlinux_test.sh @@ -16,7 +16,7 @@ set -euo pipefail images=( -"archlinux:base-devel" + "archlinux:base-devel" ) # See note next to the definition of this toolchain in the WORKSPACE file. @@ -27,11 +27,11 @@ readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Run tests cd /src -tests/scripts/run_tests.sh -t ${toolchain} +tests/scripts/run_tests.sh -O -t ${toolchain} """ done diff --git a/tests/scripts/bazel.sh b/tests/scripts/bazel.sh index fd8098127..3e600bec7 100644 --- a/tests/scripts/bazel.sh +++ b/tests/scripts/bazel.sh @@ -12,39 +12,46 @@ # See the License for the specific language governing permissions and # limitations under the License. -os="$(uname -s | tr "[:upper:]" "[:lower:]")" +# shellcheck shell=bash + +short_uname="$(uname -s)" +readonly short_uname + +os="$(echo "${short_uname}" | tr "[:upper:]" "[:lower:]")" readonly os arch="$(uname -m)" -if [[ "${arch}" == "x86_64" ]]; then +if [[ ${arch} == "x86_64" ]]; then arch="amd64" -elif [[ "${arch}" == "aarch64" ]] || [[ "${arch}" == "arm64" ]]; then +elif [[ ${arch} == "aarch64" ]] || [[ ${arch} == "arm64" ]]; then arch="arm64" else - >&2 echo "Unknown architecture: ${arch}" + echo >&2 "Unknown architecture: ${arch}" fi readonly arch # Use bazelisk to catch migration problems. -readonly bazelisk_version="v1.11.0" +readonly bazelisk_version="v1.28.0" readonly url="https://github.com/bazelbuild/bazelisk/releases/download/${bazelisk_version}/bazelisk-${os}-${arch}" bazel="${TMPDIR:-/tmp}/bazelisk" readonly bazel -common_test_args=( - --incompatible_enable_cc_toolchain_resolution - --symlink_prefix=/ - --color=yes - --show_progress_rate_limit=30 - --keep_going - --test_output=errors +common_args=( + "--enable_bzlmod=${USE_BZLMOD:-true}" + "--enable_workspace" ) -# TODO: Remove this once we no longer support bazel 6.x. -# This feature isn't intentionally supported on macOS. -if [[ $(uname -s) == 'Darwin' ]]; then - common_test_args+=(--features=-supports_dynamic_linker) -fi +# shellcheck disable=SC2034 +common_test_args=( + "${common_args[@]}" + "--symlink_prefix=/" + "--color=yes" + "--show_progress_rate_limit=30" + "--keep_going" + "--test_output=errors" + "--features=layering_check" + "--process_headers_in_dependencies" +) # Do not run autoconf to configure local CC toolchains. export BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 diff --git a/tests/scripts/centos_test.sh b/tests/scripts/centos_test.sh index d26ce6ed6..c609f05f9 100755 --- a/tests/scripts/centos_test.sh +++ b/tests/scripts/centos_test.sh @@ -13,13 +13,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Disable the unreachable code warning because the test is disabled. +# shellcheck disable=SC2317 + echo "This test is disabled because our supported versions of LLVM do not work with CentOS." exit 1 set -euo pipefail images=( -"centos:7" + "centos:7" ) git_root=$(git rev-parse --show-toplevel) @@ -27,7 +30,7 @@ readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Need system glibc and headers. diff --git a/tests/scripts/debian_test.sh b/tests/scripts/debian_test.sh index 306af156b..0fb2858e9 100755 --- a/tests/scripts/debian_test.sh +++ b/tests/scripts/debian_test.sh @@ -16,7 +16,7 @@ set -euo pipefail images=( -"debian:latest" + "debian:bookworm" ) git_root=$(git rev-parse --show-toplevel) @@ -24,18 +24,18 @@ readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Common setup export DEBIAN_FRONTEND=noninteractive apt-get -qq update -apt-get -qq -y install curl zlib1g-dev >/dev/null +apt-get -qq -y install curl libtinfo5 libxml2 zlib1g-dev >/dev/null # The above command gives some verbose output that can not be silenced easily. # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288778 # Run tests cd /src -tests/scripts/run_tests.sh +tests/scripts/run_tests.sh -O """ done diff --git a/tests/scripts/fedora_test.sh b/tests/scripts/fedora_test.sh index 494f2df87..20e31994a 100755 --- a/tests/scripts/fedora_test.sh +++ b/tests/scripts/fedora_test.sh @@ -16,7 +16,7 @@ set -euo pipefail images=( -"fedora:latest" + "fedora:latest" ) git_root=$(git rev-parse --show-toplevel) @@ -24,14 +24,14 @@ readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Need system glibc headers (e.g. features.h). -dnf install -qy glibc-headers +dnf install -qy glibc-headers ncurses-compat-libs # Run tests cd /src -tests/scripts/run_tests.sh +tests/scripts/run_tests.sh -O """ done diff --git a/tests/scripts/linux_sysroot_test.sh b/tests/scripts/linux_sysroot_test.sh index 2b123c944..3cbd0d6b9 100755 --- a/tests/scripts/linux_sysroot_test.sh +++ b/tests/scripts/linux_sysroot_test.sh @@ -16,26 +16,28 @@ set -euo pipefail images=( -"ubuntu:22.04" + "ubuntu:22.04" ) +LLVM_VERSION="first:>=15.0.0,<17" + git_root=$(git rev-parse --show-toplevel) readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Common setup export DEBIAN_FRONTEND=noninteractive apt-get -qq update -apt-get -qq -y install curl zlib1g-dev >/dev/null +apt-get -qq -y install curl libtinfo5 libxml2 zlib1g-dev >/dev/null # The above command gives some verbose output that can not be silenced easily. # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288778 # Run tests cd /src -tests/scripts/run_tests.sh -t '@llvm_toolchain_with_sysroot//:cc-toolchain-x86_64-linux' +tests/scripts/run_tests.sh -t '@llvm_toolchain_with_sysroot//:cc-toolchain-x86_64-linux' -v '${LLVM_VERSION}' """ done diff --git a/tests/scripts/run_docker_exec_test.sh b/tests/scripts/run_docker_exec_test.sh new file mode 100755 index 000000000..fe582aadd --- /dev/null +++ b/tests/scripts/run_docker_exec_test.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# Copyright 2024 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +os="$(uname -s)" +if [[ ${os} != "Darwin" ]]; then + echo >&2 "Test, to be most effective, is meant to be run on Darwin." + exit 1 +fi + +if "${CI:-false}"; then + # macOS GitHub Action Runners do not have docker installed on them. + echo >&2 "Test can not be run on GitHub Actions" + exit 1 +fi + +scripts_dir="$(dirname "${BASH_SOURCE[0]}")" +source "${scripts_dir}/bazel.sh" +"${bazel}" version + +cd "${scripts_dir}" + +base_image="debian:stable-slim" +binpath="$("${bazel}" info "${common_args[@]}" bazel-bin)/stdlib_test" + +docker build --platform=linux/amd64 --pull --tag=bazel-docker-sandbox - <<-EOF + FROM ${base_image} + ENV DEBIAN_FRONTEND=noninteractive + RUN apt-get -qq update && \ + apt-get -qq -y install libtinfo5 libxml2 zlib1g-dev libxml2 +EOF + +build_args=( + "${common_args[@]}" + # Platforms + "--platforms=@toolchains_llvm//platforms:linux-x86_64" + "--extra_execution_platforms=@toolchains_llvm//platforms:linux-x86_64" + "--extra_toolchains=@llvm_toolchain_linux_exec//:cc-toolchain-x86_64-linux" + # Docker sandbox + "--experimental_enable_docker_sandbox" + "--experimental_docker_verbose" + "--experimental_docker_image=bazel-docker-sandbox" + "--spawn_strategy=docker" + # Verbosity of build actions + "--copt=-v" + "--linkopt=-v" + "--linkopt=-Wl,-v" +) + +"${bazel}" --bazelrc=/dev/null build "${build_args[@]}" //:stdlib_test +file "${binpath}" | tee /dev/stderr | grep -q ELF +docker run --rm -it --platform=linux/amd64 \ + --mount "type=bind,source=${binpath},target=/stdlib_test" "${base_image}" /stdlib_test diff --git a/tests/scripts/run_external_tests.sh b/tests/scripts/run_external_tests.sh index 6eaa2a50d..eeffacce7 100755 --- a/tests/scripts/run_external_tests.sh +++ b/tests/scripts/run_external_tests.sh @@ -22,16 +22,29 @@ source "${scripts_dir}/bazel.sh" cd "${scripts_dir}" # Generate some files needed for the tests. -"${bazel}" fetch @io_bazel_rules_go//tests/core/cgo:all -"$("${bazel}" info output_base)/external/io_bazel_rules_go/tests/core/cgo/generate_imported_dylib.sh" +"${bazel}" query "${common_args[@]}" @io_bazel_rules_go//tests/core/cgo:dylib_test >/dev/null + +output_base="$("${bazel}" info output_base)" +echo "Output base: ${output_base}" + +# As of rules_go 0.51.0 the 'generate_imported_dylib.sh' expects 'cc' to be available through PATH. +if [[ ${USE_BZLMOD} == "true" ]]; then + generate_imported_dylib_sh="${output_base}/external/rules_go~/tests/core/cgo/generate_imported_dylib.sh" + if [[ ! -f "${generate_imported_dylib_sh}" ]]; then + generate_imported_dylib_sh="${output_base}/external/rules_go+/tests/core/cgo/generate_imported_dylib.sh" + fi +else + generate_imported_dylib_sh="${output_base}/external/io_bazel_rules_go/tests/core/cgo/generate_imported_dylib.sh" +fi +"${generate_imported_dylib_sh}" || echo "ERROR: rules_go script 'tests/core/cgo/generate_imported_dylib.sh' failed." test_args=( "${common_test_args[@]}" - # Fix LLVM version to be 14.0.0 because that's the last known version with - # which the tests in rules_go pass. - "--extra_toolchains=@llvm_toolchain_14_0_0//:all" - # Options needed for LLVM 15 when we switch to using it for these tests - #"--copt=-Wno-deprecated-builtins" # https://github.com/abseil/abseil-cpp/issues/1201 + "--copt=-Wno-deprecated-builtins" # https://github.com/abseil/abseil-cpp/issues/1201 + # Disable the "hermetic sandbox /tmp" behavior of Bazel 7 as it results in broken symlinks when + # rules_foreign_cc builds pcre. + # TODO: Remove this once rules_foreign_cc is fully compatible with Bazel 7. + "--sandbox_add_mount_pair=/tmp" ) # We exclude the following targets: @@ -39,12 +52,21 @@ test_args=( # link it statically on linux. # - external_includes_test from rules_go because it is a nested bazel test and so takes a long time # to run, and it is not particularly useful to us. +# - time_zone_format_test from abseil-cpp because it assumes TZ is set to America/Los_Angeles, but +# we run the tests in UTC. +# - {cdylib,bin}_has_native_dep_and_alwayslink_test from rules_rust because they assume the test is +# being run in the root module (use 'rules_rust' in the bazel-bin path instead of 'rules_rust~'). +# shellcheck disable=SC2207 +absl_targets=($("${bazel}" query "${common_args[@]}" 'attr(timeout, short, tests(@com_google_absl//absl/...) except attr(tags, benchmark, tests(@com_google_absl//absl/...)))')) "${bazel}" --bazelrc=/dev/null test "${test_args[@]}" -- \ //foreign:pcre \ - @openssl//:libssl \ - @rules_rust//test/unit/{native_deps,linkstamps,interleaved_cc_info}:all \ + @boringssl//... \ + @rules_rust//test/unit/{interleaved_cc_info,native_deps}:all \ @io_bazel_rules_go//tests/core/cgo:all \ -@io_bazel_rules_go//tests/core/cgo:cc_libs_test \ + -@io_bazel_rules_go//tests/core/cgo:cgo_abs_paths_test \ -@io_bazel_rules_go//tests/core/cgo:external_includes_test \ - $("${bazel}" query 'attr(timeout, short, tests(@com_google_absl//absl/...))') \ - + -@io_bazel_rules_go//tests/core/cgo:wrapped_cgo_test \ + -@rules_rust//test/unit/native_deps:{cdylib,bin}_has_native_dep_and_alwayslink_test \ + "${absl_targets[@]}" \ + -@com_google_absl//absl/time/internal/cctz:time_zone_format_test diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh index 049bbce01..48c507427 100755 --- a/tests/scripts/run_tests.sh +++ b/tests/scripts/run_tests.sh @@ -16,15 +16,33 @@ set -euo pipefail toolchain_name="" +enable_omp_targets="1" +enable_wasm_tests="1" +LLVM_VERSION="" -while getopts "t:h" opt; do - case "$opt" in - "t") toolchain_name="$OPTARG";; - "h") echo "Usage:" - echo "-t - Toolchain name to use for testing; default is llvm_toolchain" - exit 2 - ;; - "?") echo "invalid option: -$OPTARG"; exit 1;; +while getopts "hOt:v:W" opt; do + case "${opt}" in + "h") + echo "Usage:" + echo "-t - Toolchain name to use for testing; default is llvm_toolchain" + exit 2 + ;; + "O") + enable_omp_targets="" + ;; + "t") + toolchain_name="${OPTARG}" + ;; + "v") + LLVM_VERSION="${OPTARG}" + ;; + "W") + enable_wasm_tests="" + ;; + *) + echo "invalid option: -${OPTARG}" + exit 1 + ;; esac done @@ -36,13 +54,65 @@ cd "${scripts_dir}" set -x test_args=( - --extra_toolchains="${toolchain_name}" - --copt=-v - --linkopt=-Wl,-t + "--extra_toolchains=${toolchain_name}" + "--copt=-v" + "--linkopt=-Wl,-v" + "--linkopt=-Wl,-t" ) + +targets=( + "//:all" +) +# :test_cxx_standard_is_20 builds with a version of the default toolchain, if +# we're trying to build with a different toolchain then it's likely the default +# toolchain won't work so :test_cxx_standard_is_20 won't build. +if [[ -z "${toolchain_name}" ]]; then + targets+=("//:test_cxx_standard_is_20") +fi + +if [[ -n "${enable_omp_targets}" ]]; then + targets+=("//:omp_tests") +fi + +if [[ -n "${LLVM_VERSION}" ]]; then + echo "LLVM_VERSION=${LLVM_VERSION}" + common_test_args+=( + "--repo_env=LLVM_VERSION=${LLVM_VERSION}" + ) +fi + "${bazel}" ${TEST_MIGRATION:+"--strict"} --bazelrc=/dev/null test \ - "${common_test_args[@]}" "${test_args[@]}" //:all + "${common_test_args[@]}" "${test_args[@]}" "${targets[@]}" # Note that the following flags are currently known to cause issues in migration tests: # --incompatible_disallow_struct_provider_syntax # https://github.com/bazelbuild/bazel/issues/7347 # --incompatible_no_rule_outputs_param # from rules_rust + +# WebAssembly tests use a separate (newer) version of LLVM to exercise support +# for experimental features such as wasm64, which can cause the CI environment +# to run out of disk space. +# +# Mitigate this by expunging the workspace before trying to build Wasm targets. +if [[ -z "${toolchain_name}" ]] && [[ -n "${enable_wasm_tests}" ]]; then + # Redefine `test_args` without `--linkopt=-Wl,-v`, which breaks `wasm-ld`. + # + # https://github.com/llvm/llvm-project/issues/112836 + test_args=( + "--copt=-v" + "--linkopt=-Wl,-t" + ) + wasm_targets=( + "//wasm:all" + ) + "${bazel}" clean --expunge + # Remove the repo contents cache in addition to cleaning the work trees since + # this is where the llvm toolchains are stored. + user="$(id -un)" + if [[ ${OSTYPE} == 'darwin'* ]]; then + rm -rf "/private/var/tmp/_bazel_${user}/cache/repos/v1/contents" + else + rm -rf "${HOME}/.cache/bazel/_bazel_${user}/cache/repos/v1/contents" + fi + "${bazel}" ${TEST_MIGRATION:+"--strict"} --bazelrc=/dev/null test \ + "${common_test_args[@]}" "${test_args[@]}" "${wasm_targets[@]}" +fi diff --git a/tests/scripts/run_toolchain_tests.sh b/tests/scripts/run_toolchain_tests.sh new file mode 100755 index 000000000..676bc98ff --- /dev/null +++ b/tests/scripts/run_toolchain_tests.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Copyright 2018 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +while getopts "h" opt; do + case "${opt}" in + "h") + echo "Usage: No options" + exit 2 + ;; + *) + echo "invalid option: -${OPTARG}" + exit 1 + ;; + esac +done + +scripts_dir="$(dirname "${BASH_SOURCE[0]}")" +source "${scripts_dir}/bazel.sh" +"${bazel}" version + +set -x +test_args=( + "--check_direct_dependencies=off" +) + +targets=( + "//toolchain/..." +) + +if [[ -z "${common_test_args:-}" ]]; then + common_test_args=() +fi + +"${bazel}" ${TEST_MIGRATION:+"--strict"} --bazelrc=/dev/null test \ + "${common_test_args[@]}" "${test_args[@]}" -- "${targets[@]}" diff --git a/tests/scripts/run_xcompile_tests.sh b/tests/scripts/run_xcompile_tests.sh index d734caabc..6f9c99cca 100755 --- a/tests/scripts/run_xcompile_tests.sh +++ b/tests/scripts/run_xcompile_tests.sh @@ -21,7 +21,7 @@ source "${scripts_dir}/bazel.sh" cd "${scripts_dir}" -binpath="$("${bazel}" info bazel-bin)/stdlib_test" +binpath="$("${bazel}" info "${common_args[@]}" bazel-bin)/stdlib_test" check_with_image() { if "${CI:-false}"; then @@ -29,14 +29,15 @@ check_with_image() { return fi local image="$1" - docker run --rm --mount "type=bind,source=${binpath},target=/stdlib_test" "${image}" /stdlib_test + docker run --rm -it --platform=linux/amd64 \ + --mount "type=bind,source=${binpath},target=/stdlib_test" "${image}" /stdlib_test } echo "" echo "Testing static linked user libraries and dynamic linked system libraries" build_args=( - --incompatible_enable_cc_toolchain_resolution - --platforms=@com_grail_bazel_toolchain//platforms:linux-x86_64 + "${common_args[@]}" + --platforms=@toolchains_llvm//platforms:linux-x86_64 --extra_toolchains=@llvm_toolchain_with_sysroot//:cc-toolchain-x86_64-linux --symlink_prefix=/ --color=yes @@ -44,7 +45,7 @@ build_args=( ) "${bazel}" --bazelrc=/dev/null build "${build_args[@]}" //:stdlib_test file "${binpath}" | tee /dev/stderr | grep -q ELF -check_with_image "frolvlad/alpine-glibc" # Need glibc image for system libraries. +check_with_image "gcr.io/distroless/cc-debian11" # Need glibc image for system libraries. echo "" echo "Testing static linked user and system libraries" @@ -53,4 +54,4 @@ build_args+=( ) "${bazel}" --bazelrc=/dev/null build "${build_args[@]}" //:stdlib_test file "${binpath}" | tee /dev/stderr | grep -q ELF -check_with_image "alpine" +check_with_image "gcr.io/distroless/static-debian11" diff --git a/tests/scripts/suse_leap_test.sh b/tests/scripts/suse_leap_test.sh index 1a7ded7da..3e3308d59 100755 --- a/tests/scripts/suse_leap_test.sh +++ b/tests/scripts/suse_leap_test.sh @@ -16,7 +16,7 @@ set -euox pipefail images=( -"opensuse/leap:latest" + "opensuse/leap:latest" ) # See note next to the definition of this toolchain in the WORKSPACE file. @@ -25,11 +25,11 @@ toolchain="@llvm_toolchain_13_0_0//:cc-toolchain-x86_64-linux" git_root=$(git rev-parse --show-toplevel) readonly git_root -echo "git root: $git_root" +echo "git root: ${git_root}" for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src" "${image}" -c """ set -exuo pipefail # Common setup @@ -38,6 +38,6 @@ zypper -n install curl gcc libc++1 # Run tests cd /src -tests/scripts/run_tests.sh -t ${toolchain} +tests/scripts/run_tests.sh -O -t ${toolchain} """ done diff --git a/tests/scripts/suse_tumbleweed_test.sh b/tests/scripts/suse_tumbleweed_test.sh index 9ebc680fe..07db78a77 100755 --- a/tests/scripts/suse_tumbleweed_test.sh +++ b/tests/scripts/suse_tumbleweed_test.sh @@ -16,7 +16,7 @@ set -euox pipefail images=( -"opensuse/tumbleweed:latest" + "opensuse/tumbleweed:latest" ) # See note next to the definition of this toolchain in the WORKSPACE file. @@ -25,11 +25,11 @@ toolchain="@llvm_toolchain_13_0_0//:cc-toolchain-x86_64-linux" git_root=$(git rev-parse --show-toplevel) readonly git_root -echo "git root: $git_root" +echo "git root: ${git_root}" for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src" "${image}" -c """ set -exuo pipefail # Common setup @@ -38,6 +38,6 @@ zypper -n install curl gcc libc++1 # Run tests cd /src -tests/scripts/run_tests.sh -t ${toolchain} +tests/scripts/run_tests.sh -O -t ${toolchain} """ done diff --git a/tests/scripts/ubuntu_20_04_test.sh b/tests/scripts/ubuntu_20_04_test.sh index f440bc5ca..a8510a145 100755 --- a/tests/scripts/ubuntu_20_04_test.sh +++ b/tests/scripts/ubuntu_20_04_test.sh @@ -16,26 +16,32 @@ set -euo pipefail images=( -"ubuntu:20.04" + "ubuntu:20.04" ) +LLVM_VERSION="first:>=15.0.0,<17" + git_root=$(git rev-parse --show-toplevel) readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Common setup export DEBIAN_FRONTEND=noninteractive apt-get -qq update -apt-get -qq -y install apt-utils curl pkg-config zip zlib1g-dev unzip python >/dev/null +apt-get -qq -y install apt-utils curl libtinfo5 libxml2 pkg-config zlib1g-dev >/dev/null # The above command gives some verbose output that can not be silenced easily. # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288778 +# The WebAssembly tests use an LLVM version that is too new for the GNU libc +# distributed in Ubuntu 20.04. +disable_wasm_tests='-W' + # Run tests cd /src -tests/scripts/run_tests.sh +tests/scripts/run_tests.sh -v '${LLVM_VERSION}' \${disable_wasm_tests} """ done diff --git a/tests/scripts/ubuntu_22_04_test.sh b/tests/scripts/ubuntu_22_04_test.sh index 86c3f9ee4..2e5ff013f 100755 --- a/tests/scripts/ubuntu_22_04_test.sh +++ b/tests/scripts/ubuntu_22_04_test.sh @@ -16,7 +16,7 @@ set -euo pipefail images=( -"ubuntu:22.04" + "ubuntu:22.04" ) git_root=$(git rev-parse --show-toplevel) @@ -24,18 +24,18 @@ readonly git_root for image in "${images[@]}"; do docker pull "${image}" - docker run --rm --entrypoint=/bin/bash --volume="${git_root}:/src:ro" "${image}" -c """ + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ set -exuo pipefail # Common setup export DEBIAN_FRONTEND=noninteractive apt-get -qq update -apt-get -qq -y install curl zlib1g-dev >/dev/null +apt-get -qq -y install curl libtinfo5 libxml2 zlib1g-dev >/dev/null # The above command gives some verbose output that can not be silenced easily. # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288778 # Run tests cd /src -tests/scripts/run_tests.sh +tests/scripts/run_tests.sh -O """ done diff --git a/tests/scripts/ubuntu_24_04_test.sh b/tests/scripts/ubuntu_24_04_test.sh new file mode 100755 index 000000000..d26917f26 --- /dev/null +++ b/tests/scripts/ubuntu_24_04_test.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Copyright 2020 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +images=( + "ubuntu:24.04" +) + +git_root=$(git rev-parse --show-toplevel) +readonly git_root + +for image in "${images[@]}"; do + docker pull "${image}" + docker run --rm --entrypoint=/bin/bash --env USE_BZLMOD --volume="${git_root}:/src:ro" "${image}" -c """ +set -exuo pipefail + +# Common setup +export DEBIAN_FRONTEND=noninteractive +apt-get -qq update +apt-get -qq -y install curl libtinfo6 libxml2 zlib1g-dev >/dev/null +# The above command gives some verbose output that can not be silenced easily. +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=288778 + +# Run tests +cd /src +tests/scripts/run_tests.sh -O +""" +done diff --git a/tests/scripts/ubuntu_install_libtinfo.sh b/tests/scripts/ubuntu_install_libtinfo.sh new file mode 100755 index 000000000..cb31efb7c --- /dev/null +++ b/tests/scripts/ubuntu_install_libtinfo.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# Ubuntu 24.04 does not have libtinfo5 in its PPAs: +# +# However, the LLVM binary releases hosted up upstream still target Ubuntu 18.04 +# as of this writing and contain binaries linked against `libtinfo5`. +# +# This script installs `libtinfo5` using the `.deb` from Ubuntu 22.04's PPAs: +# https://packages.ubuntu.com/jammy-updates/amd64/libtinfo5/download + +set -euo pipefail + +pkg="$(mktemp --suffix=.deb)" +trap 'rm -f "${pkg}"' EXIT + +curl -L https://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb -o "${pkg}" +sudo dpkg -i "${pkg}" diff --git a/tests/test_cxx_standard.cc b/tests/test_cxx_standard.cc new file mode 100644 index 000000000..26892880e --- /dev/null +++ b/tests/test_cxx_standard.cc @@ -0,0 +1,22 @@ +#include +#include + +int run_test(int argc, char** argv) { + if (argc != 2) { + std::cout << "Not enough arguments" << std::endl; + return 1; + } + + long expected_version = std::atol(argv[1]); + + if (expected_version == 0) { + std::cout << "Invalid version argument, must be an integer" << std::endl; + return 1; + } + + if (expected_version != __cplusplus) { + std::cout << "Expected version to be " << argv[1] << " but got " << __cplusplus << std::endl; + return 1; + } + return 0; +} diff --git a/tests/test_cxx_standard_main.cc b/tests/test_cxx_standard_main.cc new file mode 100644 index 000000000..9a388226a --- /dev/null +++ b/tests/test_cxx_standard_main.cc @@ -0,0 +1,5 @@ +int run_test(int argc, char** argv); + +int main(int argc, char** argv) { + return run_test(argc, argv); +} \ No newline at end of file diff --git a/tests/transitions.bzl b/tests/transitions.bzl index 8d3a0196d..04b8fcdc7 100644 --- a/tests/transitions.bzl +++ b/tests/transitions.bzl @@ -19,6 +19,8 @@ # # These three Bazel flags influence whether or not `.dwo` and `.dwp` are # created. +load("@rules_cc//cc:defs.bzl", "CcInfo", "DebugPackageInfo") + def _fission_transition_impl(settings, attr): features = settings["//command_line_option:features"] if "per_object_debug_info" in features: @@ -95,5 +97,49 @@ dwp_file = rule( default = "@bazel_tools//tools/allowlists/function_transition_allowlist", ), }, - incompatible_use_toolchain_transition = True, +) + +def _transition_to_platform_transition_impl(_, attr): + return {"//command_line_option:platforms": str(attr.platform)} + +_transition_to_platform_transition = transition( + implementation = _transition_to_platform_transition_impl, + inputs = [], + outputs = ["//command_line_option:platforms"], +) + +def _transition_library_to_platform_impl(ctx): + return [ + ctx.attr.lib[0][CcInfo], + ] + +transition_library_to_platform = rule( + implementation = _transition_library_to_platform_impl, + attrs = { + "lib": attr.label(mandatory = True, cfg = _transition_to_platform_transition), + "platform": attr.label(mandatory = True), + "_allowlist_function_transition": attr.label( + default = "@bazel_tools//tools/allowlists/function_transition_allowlist", + ), + }, +) + +def _transition_binary_to_platform_impl(ctx): + out = ctx.actions.declare_file(ctx.attr.name) + ctx.actions.symlink(output = out, target_file = ctx.file.bin) + return DefaultInfo(files = depset([out])) + +transition_binary_to_platform = rule( + implementation = _transition_binary_to_platform_impl, + attrs = { + "bin": attr.label( + mandatory = True, + allow_single_file = True, + cfg = _transition_to_platform_transition, + ), + "platform": attr.label(mandatory = True), + "_allowlist_function_transition": attr.label( + default = "@bazel_tools//tools/allowlists/function_transition_allowlist", + ), + }, ) diff --git a/tests/wasm/BUILD.bazel b/tests/wasm/BUILD.bazel new file mode 100644 index 000000000..fcfcdd6b1 --- /dev/null +++ b/tests/wasm/BUILD.bazel @@ -0,0 +1,58 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("//:transitions.bzl", "transition_binary_to_platform") + +build_test( + name = "wasm_targets_test", + targets = [ + ":wasm32_strlen", + ":wasm32_strlen_nolibc", + ":wasm64_strlen_nolibc", + ":wasm32_wasip1_strlen", + ], +) + +cc_binary( + name = "wasm_strlen", + srcs = ["wasm_strlen.c"], + linkopts = ["-Wl,--no-entry"], + tags = ["manual"], +) + +transition_binary_to_platform( + name = "wasm32_strlen", + bin = ":wasm_strlen", + platform = "@toolchains_llvm//platforms:wasm32", +) + +cc_binary( + name = "wasm_strlen_nolibc", + srcs = ["wasm_strlen_nolibc.c"], + linkopts = ["-Wl,--no-entry"], + tags = ["manual"], +) + +transition_binary_to_platform( + name = "wasm32_strlen_nolibc", + bin = ":wasm_strlen_nolibc", + platform = "@toolchains_llvm//platforms:wasm32", +) + +transition_binary_to_platform( + name = "wasm64_strlen_nolibc", + bin = ":wasm_strlen_nolibc", + platform = "@toolchains_llvm//platforms:wasm64", +) + +cc_binary( + name = "wasm_strlen_wasi", + srcs = ["wasm_strlen_wasi.c"], + linkopts = ["-Wl,--no-entry"], + tags = ["manual"], +) + +transition_binary_to_platform( + name = "wasm32_wasip1_strlen", + bin = ":wasm_strlen_wasi", + platform = "@toolchains_llvm//platforms:wasip1-wasm32", +) diff --git a/tests/wasm/wasi_sdk.bzl b/tests/wasm/wasi_sdk.bzl new file mode 100644 index 000000000..b22856623 --- /dev/null +++ b/tests/wasm/wasi_sdk.bzl @@ -0,0 +1,54 @@ +_SYSROOT_BUILD = """ +filegroup( + name = {name}, + srcs = glob(["include/**/*", "lib/**/*", "share/**/*"], allow_empty=True), + visibility = ["//visibility:public"], +) +""" + +_WASI_SDK_ABIS = [ + "wasm32-wasi", + "wasm32-wasip1", + "wasm32-wasip1-threads", + "wasm32-wasip2", + "wasm32-wasi-threads", +] + +def _wasi_sdk_sysroots(ctx): + ctx.download_and_extract( + integrity = "sha256-NRcvfSeZSFsVpGsdh/UKWF2RXsZiCA8AXZkVOlCIjwg=", + stripPrefix = "wasi-sysroot-24.0", + url = ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-24/wasi-sysroot-24.0.tar.gz"], + ) + + ctx.file("empty/BUILD.bazel", _SYSROOT_BUILD.format( + name = repr("empty"), + )) + + for abi in _WASI_SDK_ABIS: + ctx.file("%s/BUILD.bazel" % (abi,), _SYSROOT_BUILD.format( + name = repr(abi), + )) + ctx.execute(["mv", "include/" + abi, "%s/include" % (abi,)]) + ctx.execute(["mv", "share/" + abi, "%s/share" % (abi,)]) + + # This is needed for wasm*-unknown-unknown targets + ctx.execute(["cp", "-R", "lib/" + abi, "%s/lib" % (abi,)]) + + # This is needed for wasm*-wasip1 targets + ctx.execute(["mv", "lib/" + abi, "%s/lib/%s" % (abi, abi)]) + +wasi_sdk_sysroots = repository_rule(_wasi_sdk_sysroots) + +def _libclang_rt_wasm32(ctx): + ctx.file("BUILD.bazel", """ +exports_files(glob(["*.a"])) +""") + + ctx.download_and_extract( + integrity = "sha256-fjPA33WLkEabHePKFY4tCn9xk01YhFJbpqNy3gs7Dsc=", + stripPrefix = "libclang_rt.builtins-wasm32-wasi-24.0", + url = ["https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-24/libclang_rt.builtins-wasm32-wasi-24.0.tar.gz"], + ) + +libclang_rt_wasm32 = repository_rule(_libclang_rt_wasm32) diff --git a/tests/wasm/wasm_strlen.c b/tests/wasm/wasm_strlen.c new file mode 100644 index 000000000..7ff60cc2c --- /dev/null +++ b/tests/wasm/wasm_strlen.c @@ -0,0 +1,7 @@ +#include +#include + +__attribute__((export_name("strlen"))) +uint32_t wasm_strlen(char *s) { + return strlen(s); +} diff --git a/tests/wasm/wasm_strlen_nolibc.c b/tests/wasm/wasm_strlen_nolibc.c new file mode 100644 index 000000000..00f0a8343 --- /dev/null +++ b/tests/wasm/wasm_strlen_nolibc.c @@ -0,0 +1,6 @@ +__attribute__((export_name("strlen"))) +unsigned long wasm_strlen(char *s) { + unsigned long len = 0; + for (; *s; len++) {} + return len; +} diff --git a/tests/wasm/wasm_strlen_wasi.c b/tests/wasm/wasm_strlen_wasi.c new file mode 100644 index 000000000..19d3f6f68 --- /dev/null +++ b/tests/wasm/wasm_strlen_wasi.c @@ -0,0 +1,13 @@ +#include +#include +#include + +uint32_t wasm_strlen(char *s) { + return strlen(s); +} + +int main() { + char *s = "Hello world!"; + printf("strlen(\"%s\") = %d\n", s, wasm_strlen(s)); + return 0; +} diff --git a/toolchain/BUILD.llvm_repo b/toolchain/BUILD.llvm_repo.tpl similarity index 51% rename from toolchain/BUILD.llvm_repo rename to toolchain/BUILD.llvm_repo.tpl index 94a1a9848..ab27cdfb8 100644 --- a/toolchain/BUILD.llvm_repo +++ b/toolchain/BUILD.llvm_repo.tpl @@ -15,11 +15,15 @@ package(default_visibility = ["//visibility:public"]) # Some targets may need to directly depend on these files. -exports_files(glob([ - "bin/*", - "lib/*", - "include/*", -])) +exports_files(glob( + [ + "bin/*", + "lib/**", + "include/**", + "share/clang/*", + ], + allow_empty = True, +)) ## LLVM toolchain files @@ -34,9 +38,11 @@ filegroup( filegroup( name = "ld", + # Not all distributions contain wasm-ld. srcs = [ "bin/ld.lld", - ], + "bin/ld64.lld", + ] + glob(["bin/wasm-ld"], allow_empty = True), ) filegroup( @@ -47,6 +53,29 @@ filegroup( ]), ) +filegroup( + name = "all_includes", + srcs = glob( + ["include/**"], + allow_empty = True, + ), +) + +# This filegroup should only have source directories, not individual files. +# We rely on this assumption in system_module_map.bzl. +filegroup( + name = "cxx_builtin_include", + srcs = [ + "include/c++", + "lib/clang/{LLVM_VERSION}/include", + ], +) + +filegroup( + name = "extra_config_site", + srcs = glob(["include/*/c++/v1/__config_site"], allow_empty = True) +) + filegroup( name = "bin", srcs = glob(["bin/**"]), @@ -54,22 +83,27 @@ filegroup( filegroup( name = "lib", - srcs = glob( - [ - "lib/**/lib*.a", - "lib/clang/*/lib/**/*.a", - # clang_rt.*.o supply crtbegin and crtend sections. - "lib/**/clang_rt.*.o", - ], - exclude = [ - "lib/libLLVM*.a", - "lib/libclang*.a", - "lib/liblld*.a", - ], - ), - # Do not include the .dylib files in the linker sandbox because they will - # not be available at runtime. Any library linked from the toolchain should - # be linked statically. + srcs = [ + # Include the .dylib files in the linker sandbox even though they will + # not be available at runtime to allow sanitizers to work locally. + # Any library linked from the toolchain to be released should be linked statically. + "lib/clang/{LLVM_VERSION}/lib", + ] + glob([ + "lib/**/libc++*.a", + "lib/**/libunwind.a", + ], allow_empty = True), +) + +filegroup( + name = "lib_legacy", + srcs = glob([ + # Include the .dylib files in the linker sandbox even though they will + # not be available at runtime to allow sanitizers to work locally. + # Any library linked from the toolchain to be released should be linked statically. + "lib/clang/{LLVM_VERSION}/lib/**", + "lib/**/libc++*.a", + "lib/**/libunwind.a", + ], allow_empty = True), ) filegroup( @@ -134,3 +168,24 @@ filegroup( name = "clang-tidy", srcs = ["bin/clang-tidy"], ) + +filegroup( + name = "clang-format", + srcs = ["bin/clang-format"], +) + +filegroup( + name = "git-clang-format", + srcs = ["bin/git-clang-format"], +) + +filegroup( + name = "libclang", + srcs = glob( + [ + "lib/libclang.so", + "lib/libclang.dylib", + ], + allow_empty = True, + ), +) diff --git a/toolchain/BUILD.toolchain.tpl b/toolchain/BUILD.toolchain.tpl index b41b7e643..86ff09062 100644 --- a/toolchain/BUILD.toolchain.tpl +++ b/toolchain/BUILD.toolchain.tpl @@ -15,35 +15,24 @@ package(default_visibility = ["//visibility:public"]) load("@bazel_skylib//rules:native_binary.bzl", "native_binary") -load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite") +load("@rules_cc//cc:defs.bzl", "cc_import", "cc_toolchain", "cc_toolchain_suite") +load("@toolchains_llvm//toolchain/internal:system_module_map.bzl", "system_module_map") load("%{cc_toolchain_config_bzl}", "cc_toolchain_config") -# Following filegroup targets are used when not using absolute paths and shared +# This filegroup target is used when not using absolute paths and shared # between different toolchains. -# Tools symlinked through this repo. This target is for internal use in the toolchain only. +# Tools wrapped and symlinked through this repo. This target is for internal use in the toolchain only. filegroup( - name = "internal-use-symlinked-tools", - srcs = [%{symlinked_tools} - ], - visibility = ["//visibility:private"], -) - -# Tools wrapped through this repo. This target is for internal use in the toolchain only. -filegroup( - name = "internal-use-wrapped-tools", - srcs = [ - "%{wrapper_bin_prefix}cc_wrapper.sh", - ], + name = "internal-use-tools", + srcs = ["%{tools_dir}"], visibility = ["//visibility:private"], ) -# All internal use files. filegroup( - name = "internal-use-files", - srcs = [ - ":internal-use-symlinked-tools", - ":internal-use-wrapped-tools", + name = "internal-use-tools-legacy", + srcs = [%{symlinked_tools} + "%{tools_dir}/cc_wrapper.sh", ], visibility = ["//visibility:private"], ) diff --git a/toolchain/aliases.bzl b/toolchain/aliases.bzl index 67b08a6b9..275475113 100644 --- a/toolchain/aliases.bzl +++ b/toolchain/aliases.bzl @@ -23,5 +23,8 @@ aliased_tools = [ "clang-apply-replacements", "clang-format", "clang-tidy", + "clangd", "llvm-cov", + "llvm-profdata", + "llvm-symbolizer", ] diff --git a/toolchain/cc_toolchain_config.bzl b/toolchain/cc_toolchain_config.bzl index b9db9fe14..f15ad8d74 100644 --- a/toolchain/cc_toolchain_config.bzl +++ b/toolchain/cc_toolchain_config.bzl @@ -12,18 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. +# buildifier: disable=bzl-visibility load( - "@bazel_tools//tools/cpp:unix_cc_toolchain_config.bzl", + "@rules_cc//cc/private/toolchain:unix_cc_toolchain_config.bzl", unix_cc_toolchain_config = "cc_toolchain_config", ) load( "//toolchain/internal:common.bzl", _check_os_arch_keys = "check_os_arch_keys", - _host_tools = "host_tools", _os_arch_pair = "os_arch_pair", ) -# Bazel 4.* doesn't support nested skylark functions, so we cannot simplify +# Bazel 4.* doesn't support nested starlark functions, so we cannot simplify # _fmt_flags() by defining it as a nested function. def _fmt_flags(flags, toolchain_path_prefix): return [f.format(toolchain_path_prefix = toolchain_path_prefix) for f in flags] @@ -32,27 +32,26 @@ def _fmt_flags(flags, toolchain_path_prefix): # right paths and flags for the tools. def cc_toolchain_config( name, - host_arch, - host_os, + exec_arch, + exec_os, target_arch, target_os, + target_system_name, toolchain_path_prefix, tools_path_prefix, wrapper_bin_prefix, compiler_configuration, - llvm_version, - host_tools_info = {}): - host_os_arch_key = _os_arch_pair(host_os, host_arch) + cxx_builtin_include_directories, + major_llvm_version): + exec_os_arch_key = _os_arch_pair(exec_os, exec_arch) target_os_arch_key = _os_arch_pair(target_os, target_arch) - _check_os_arch_keys([host_os_arch_key, target_os_arch_key]) + _check_os_arch_keys([exec_os_arch_key, target_os_arch_key]) # A bunch of variables that get passed straight through to # `create_cc_toolchain_config_info`. # TODO: What do these values mean, and are they actually all correct? - host_system_name = host_arch ( toolchain_identifier, - target_system_name, target_cpu, target_libc, compiler, @@ -61,7 +60,6 @@ def cc_toolchain_config( ) = { "darwin-x86_64": ( "clang-x86_64-darwin", - "x86_64-apple-macosx", "darwin", "macosx", "clang", @@ -70,7 +68,6 @@ def cc_toolchain_config( ), "darwin-aarch64": ( "clang-aarch64-darwin", - "aarch64-apple-macosx", "darwin", "macosx", "clang", @@ -79,22 +76,84 @@ def cc_toolchain_config( ), "linux-aarch64": ( "clang-aarch64-linux", - "aarch64-unknown-linux-gnu", "aarch64", "glibc_unknown", "clang", "clang", "glibc_unknown", ), + "linux-armv7": ( + "clang-armv7-linux", + "armv7", + "glibc_unknown", + "clang", + "clang", + "glibc_unknown", + ), + "linux-riscv64": ( + "clang-riscv64-linux", + "riscv64", + "glibc_unknown", + "clang", + "clang", + "glibc_unknown", + ), "linux-x86_64": ( "clang-x86_64-linux", - "x86_64-unknown-linux-gnu", "k8", "glibc_unknown", "clang", "clang", "glibc_unknown", ), + "none-riscv32": ( + "clang-riscv32-none", + "riscv32", + "unknown", + "clang", + "unknown", + "unknown", + ), + "none-x86_64": ( + "clang-x86_64-none", + "k8", + "unknown", + "clang", + "unknown", + "unknown", + ), + "wasm32": ( + "clang-wasm32", + "wasm32", + "unknown", + "clang", + "unknown", + "unknown", + ), + "wasm64": ( + "clang-wasm64", + "wasm64", + "unknown", + "clang", + "unknown", + "unknown", + ), + "wasip1-wasm32": ( + "clang-wasm32", + "wasm32", + "unknown", + "clang", + "unknown", + "unknown", + ), + "wasip1-wasm64": ( + "clang-wasm64", + "wasm64", + "unknown", + "clang", + "unknown", + "unknown", + ), }[target_os_arch_key] # Unfiltered compiler flags; these are placed at the end of the command @@ -108,11 +167,8 @@ def cc_toolchain_config( "-D__DATE__=\"redacted\"", "-D__TIMESTAMP__=\"redacted\"", "-D__TIME__=\"redacted\"", - "-fdebug-prefix-map={}=__bazel_toolchain_llvm_repo__/".format(toolchain_path_prefix), ] - is_xcompile = not (host_os == target_os and host_arch == target_arch) - # Default compiler flags: compile_flags = [ "--target=" + target_system_name, @@ -129,6 +185,8 @@ def cc_toolchain_config( dbg_compile_flags = ["-g", "-fstandalone-debug"] + fastbuild_compile_flags = [] + opt_compile_flags = [ "-g0", "-O2", @@ -140,23 +198,35 @@ def cc_toolchain_config( link_flags = [ "--target=" + target_system_name, - "-lm", "-no-canonical-prefixes", + "-fuse-ld=lld", ] + if exec_os == "darwin": + # These will get expanded by osx_cc_wrapper's `sanitize_option` + link_flags.append("--ld-path=ld64.lld" if target_os == "darwin" else "--ld-path=ld.lld") + + stdlib = compiler_configuration["stdlib"] + if stdlib != "none": + link_flags.extend([ + "-lm", + ]) + # Similar to link_flags, but placed later in the command line such that # unused symbols are not stripped. link_libs = [] + libunwind_link_flags = [] + compiler_rt_link_flags = [] + + is_darwin_exec_and_target = exec_os == "darwin" and target_os == "darwin" # Linker flags: - if host_os == "darwin" and not is_xcompile: - # lld is experimental for Mach-O, so we use the native ld64 linker. - # TODO: How do we cross-compile from Linux to Darwin? - use_lld = False + if is_darwin_exec_and_target: link_flags.extend([ "-headerpad_max_install_names", "-fobjc-link-runtime", ]) + # (david) custom changes to expose important system libs. womp womp. # TODO: clean these up if we ever find a way link_flags.extend([ @@ -169,80 +239,119 @@ def cc_toolchain_config( "-lpthread", ]) + # Use the bundled libtool (llvm-libtool-darwin). + use_libtool = True + elif target_arch in ["wasm32", "wasm64"]: + # lld is invoked as wasm-ld for WebAssembly targets. + use_libtool = False + else: - # Note that for xcompiling from darwin to linux, the native ld64 is - # not an option because it is not a cross-linker, so lld is the - # only option. - use_lld = True link_flags.extend([ - "-fuse-ld=lld", "-Wl,--build-id=md5", "-Wl,--hash-style=gnu", "-Wl,-z,relro,-z,now", - "-lgcc" + "-lgcc", + ]) + use_libtool = False + # TODO TODO i had deleted this with first pass of bzlmod... why? + # TODO: as above, so below + link_flags.extend([ + "-lxml2", + "-lcurl", + "-lm", + "-lsasl2", + "-lz", + "-ldl", + "-lpthread", + "-lzstd", + "-llz4", + "-lcrypto", + # future fun! + # i had to chase down the `libssl1.1` package from an archive + # because libssl1.0 is missing several symbols we need, and the + # default libssl3 (for ubuntu 22+) is missing *one* symbol. + # so version 1.1 is the only library we can link against, and it's + # totally gone in ubuntu 22. + # + # bonus fun: our ubuntu 20 executor doesn't seem to explicitly + # install this anywhere-- it's just there by default. + "-l:libssl.so.1.1", ]) + # Pre-installed libtool on macOS has -static as default, but llvm-libtool-darwin needs it + # explicitly. cc_common.create_link_variables does not automatically add this either if + # output_file arg to it is None. + archive_flags = ["-static"] if is_darwin_exec_and_target else [] + # Flags related to C++ standard. # The linker has no way of knowing if there are C++ objects; so we # always link C++ libraries. cxx_standard = compiler_configuration["cxx_standard"] - stdlib = compiler_configuration["stdlib"] - if stdlib == "builtin-libc++" and is_xcompile: + conly_flags = compiler_configuration["conly_flags"] + sysroot_path = compiler_configuration["sysroot_path"] + + is_xcompile = not (exec_os == target_os and exec_arch == target_arch) + + # Darwin has a universal sysroot so the builtin can compile cross-arch. + if stdlib == "builtin-libc++" and is_xcompile and not is_darwin_exec_and_target: stdlib = "stdc++" if stdlib == "builtin-libc++": cxx_flags = [ "-std=" + cxx_standard, "-stdlib=libc++", ] - if use_lld: + + if is_darwin_exec_and_target: + # Several system libraries on macOS dynamically link libc++ and + # libc++abi, so static linking them becomes a problem. We need to + # ensure that they are dynamic linked from the system sysroot and + # not static linked from the toolchain, so explicitly have the + # sysroot directory on the search path and then add the toolchain + # directory back after we are done. + link_flags.extend([ + "-L{}/usr/lib".format(sysroot_path), + "-lc++", + "-lc++abi", + "-Bdynamic", + "-L{}lib".format(toolchain_path_prefix), + ]) + libunwind_link_flags = [ + "-Bstatic", + "-lunwind", + ] + else: # For single-platform builds, we can statically link the bundled # libraries. - link_flags.extend([ + link_libs.extend([ "-l:libc++.a", "-l:libc++abi.a", + ]) + compiler_rt_link_flags = ["-rtlib=compiler-rt"] + libunwind_link_flags = [ "-l:libunwind.a", - # Compiler runtime features. - "-rtlib=compiler-rt", # To support libunwind. "-lpthread", "-ldl", - ]) - else: - # The only known mechanism to static link libraries in ld64 is to - # not have the corresponding .dylib files in the library search - # path. The link time sandbox does not include the .dylib files, so - # anything we pick up from the toolchain should be statically - # linked. However, several system libraries on macOS dynamically - # link libc++ and libc++abi, so static linking them becomes a problem. - # We need to ensure that they are dynamic linked from the system - # sysroot and not static linked from the toolchain, so explicitly - # have the sysroot directory on the search path and then add the - # toolchain directory back after we are done. - link_flags.extend([ - "-L{}/usr/lib".format(compiler_configuration["sysroot_path"]), - "-lc++", - "-lc++abi", - ]) + ] - # Let's provide the path to the toolchain library directory - # explicitly as part of the search path to make it easy for a user - # to pick up something. This also makes the behavior consistent with - # targets when a user explicitly depends on something like - # libomp.dylib, which adds this directory to the search path, and would - # (unintentionally) lead to static linking of libraries from the - # toolchain. - link_flags.extend([ - "-L{}lib".format(toolchain_path_prefix), - ]) elif stdlib == "libc++": cxx_flags = [ "-std=" + cxx_standard, "-stdlib=libc++", ] + link_libs.extend([ + "-l:libc++.a", + "-l:libc++abi.a", + ]) + elif stdlib == "dynamic-stdc++": + cxx_flags = [ + "-std=" + cxx_standard, + "-stdlib=libstdc++", + ] + link_flags.extend([ - "-l:c++.a", - "-l:c++abi.a", + "-lstdc++", ]) elif stdlib == "stdc++": cxx_flags = [ @@ -253,17 +362,31 @@ def cc_toolchain_config( link_flags.extend([ "-l:libstdc++.a", ]) + elif stdlib == "libc": + cxx_flags = [ + "-std=" + cxx_standard, + ] elif stdlib == "none": cxx_flags = [ "-nostdlib", ] - link_flags.extend([ "-nostdlib", ]) else: fail("Unknown value passed for stdlib: {stdlib}".format(stdlib = stdlib)) + if major_llvm_version >= 14: + # With C++20, Clang defaults to using C++ rather than Clang modules, + # which breaks Bazel's `use_module_maps` feature, which is used by + # `layering_check`. Since Bazel doesn't support C++ modules yet, it + # is safe to disable them globally until the toolchain shipped by + # Bazel sets this flag on `use_module_maps`. + # https://github.com/llvm/llvm-project/commit/0556138624edf48621dd49a463dbe12e7101f17d + cxx_flags.append("-Xclang") + cxx_flags.append("-fno-cxx-modules") + cxx_flags.append("-Wno-module-import-in-extern-c") + opt_link_flags = ["-Wl,--gc-sections"] if target_os == "linux" else [] # Coverage flags: @@ -273,64 +396,37 @@ def cc_toolchain_config( ## NOTE: framework paths is missing here; unix_cc_toolchain_config ## doesn't seem to have a feature for this. - # C++ built-in include directories: - cxx_builtin_include_directories = [] - if toolchain_path_prefix.startswith("/"): - cxx_builtin_include_directories.extend([ - toolchain_path_prefix + "include/c++/v1", - toolchain_path_prefix + "include/{}/c++/v1".format(target_system_name), - toolchain_path_prefix + "lib/clang/{}/include".format(llvm_version), - toolchain_path_prefix + "lib/clang/{}/share".format(llvm_version), - toolchain_path_prefix + "lib64/clang/{}/include".format(llvm_version), - ]) - - sysroot_path = compiler_configuration["sysroot_path"] - sysroot_prefix = "" - if sysroot_path: - sysroot_prefix = "%sysroot%" - if target_os == "linux": - cxx_builtin_include_directories.extend([ - sysroot_prefix + "/include", - sysroot_prefix + "/usr/include", - sysroot_prefix + "/usr/local/include", - ]) - elif target_os == "darwin": - cxx_builtin_include_directories.extend([ - sysroot_prefix + "/usr/include", - sysroot_prefix + "/System/Library/Frameworks", - ]) - else: - fail("Unreachable") - - cxx_builtin_include_directories.extend(compiler_configuration["additional_include_dirs"]) - ## NOTE: make variables are missing here; unix_cc_toolchain_config doesn't ## pass these to `create_cc_toolchain_config_info`. - # The tool names come from [here](https://github.com/bazelbuild/bazel/blob/c7e58e6ce0a78fdaff2d716b4864a5ace8917626/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java#L76-L90): + # The requirements here come from + # https://cs.opensource.google/bazel/bazel/+/master:src/main/starlark/builtins_bzl/common/cc/cc_toolchain_provider_helper.bzl;l=75;drc=f0150efd1cca473640269caaf92b5a23c288089d + # https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java;l=1257;drc=6743d76f9ecde726d592e88d8914b9db007b1c43 + # https://cs.opensource.google/bazel/bazel/+/refs/tags/7.0.0:tools/cpp/unix_cc_toolchain_config.bzl;l=192,201;drc=044a14cca2747aeff258fc71eaeb153c08cb34d5 + # https://github.com/bazelbuild/rules_cc/blob/fe41fc4ea219c9d3680ee536bba6681f3baf838e/cc/private/toolchain/unix_cc_toolchain_config.bzl#L1887 # NOTE: Ensure these are listed in toolchain_tools in toolchain/internal/common.bzl. tool_paths = { - "ar": tools_path_prefix + "llvm-ar", + "ar": tools_path_prefix + ("llvm-ar" if not use_libtool else "libtool"), "cpp": tools_path_prefix + "clang-cpp", "dwp": tools_path_prefix + "llvm-dwp", "gcc": wrapper_bin_prefix + "cc_wrapper.sh", "gcov": tools_path_prefix + "llvm-profdata", - "ld": tools_path_prefix + "ld.lld" if use_lld else _host_tools.get_and_assert(host_tools_info, "ld"), + "ld": tools_path_prefix + "ld.lld", "llvm-cov": tools_path_prefix + "llvm-cov", "llvm-profdata": tools_path_prefix + "llvm-profdata", "nm": tools_path_prefix + "llvm-nm", "objcopy": tools_path_prefix + "llvm-objcopy", "objdump": tools_path_prefix + "llvm-objdump", "strip": tools_path_prefix + "llvm-strip", + "parse_headers": wrapper_bin_prefix + "cc_wrapper.sh", } # Start-end group linker support: # This was added to `lld` in this patch: http://reviews.llvm.org/D18814 # # The oldest version of LLVM that we support is 6.0.0 which was released - # after the above patch was merged, so we just set this to `True` when - # `lld` is being used as the linker. - supports_start_end_lib = use_lld + # after the above patch was merged, so we just set this to `True`. + supports_start_end_lib = True # Replace flags with any user-provided overrides. if compiler_configuration["compile_flags"] != None: @@ -339,6 +435,8 @@ def cc_toolchain_config( cxx_flags = _fmt_flags(compiler_configuration["cxx_flags"], toolchain_path_prefix) if compiler_configuration["link_flags"] != None: link_flags = _fmt_flags(compiler_configuration["link_flags"], toolchain_path_prefix) + if compiler_configuration["archive_flags"] != None: + archive_flags = _fmt_flags(compiler_configuration["archive_flags"], toolchain_path_prefix) if compiler_configuration["link_libs"] != None: link_libs = _fmt_flags(compiler_configuration["link_libs"], toolchain_path_prefix) if compiler_configuration["opt_compile_flags"] != None: @@ -347,6 +445,8 @@ def cc_toolchain_config( opt_link_flags = _fmt_flags(compiler_configuration["opt_link_flags"], toolchain_path_prefix) if compiler_configuration["dbg_compile_flags"] != None: dbg_compile_flags = _fmt_flags(compiler_configuration["dbg_compile_flags"], toolchain_path_prefix) + if compiler_configuration["fastbuild_compile_flags"] != None: + fastbuild_compile_flags = _fmt_flags(compiler_configuration["fastbuild_compile_flags"], toolchain_path_prefix) if compiler_configuration["coverage_compile_flags"] != None: coverage_compile_flags = _fmt_flags(compiler_configuration["coverage_compile_flags"], toolchain_path_prefix) if compiler_configuration["coverage_link_flags"] != None: @@ -354,13 +454,36 @@ def cc_toolchain_config( if compiler_configuration["unfiltered_compile_flags"] != None: unfiltered_compile_flags = _fmt_flags(compiler_configuration["unfiltered_compile_flags"], toolchain_path_prefix) + if compiler_configuration["extra_compile_flags"] != None: + compile_flags.extend(_fmt_flags(compiler_configuration["extra_compile_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_cxx_flags"] != None: + cxx_flags.extend(_fmt_flags(compiler_configuration["extra_cxx_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_link_flags"] != None: + link_flags.extend(_fmt_flags(compiler_configuration["extra_link_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_archive_flags"] != None: + archive_flags.extend(_fmt_flags(compiler_configuration["extra_archive_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_link_libs"] != None: + link_libs.extend(_fmt_flags(compiler_configuration["extra_link_libs"], toolchain_path_prefix)) + if compiler_configuration["extra_opt_compile_flags"] != None: + opt_compile_flags.extend(_fmt_flags(compiler_configuration["extra_opt_compile_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_opt_link_flags"] != None: + opt_link_flags.extend(_fmt_flags(compiler_configuration["extra_opt_link_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_dbg_compile_flags"] != None: + dbg_compile_flags.extend(_fmt_flags(compiler_configuration["extra_dbg_compile_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_coverage_compile_flags"] != None: + coverage_compile_flags.extend(_fmt_flags(compiler_configuration["extra_coverage_compile_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_coverage_link_flags"] != None: + coverage_link_flags.extend(_fmt_flags(compiler_configuration["extra_coverage_link_flags"], toolchain_path_prefix)) + if compiler_configuration["extra_unfiltered_compile_flags"] != None: + unfiltered_compile_flags.extend(_fmt_flags(compiler_configuration["extra_unfiltered_compile_flags"], toolchain_path_prefix)) + # Source: https://cs.opensource.google/bazel/bazel/+/master:tools/cpp/unix_cc_toolchain_config.bzl unix_cc_toolchain_config( name = name, cpu = target_cpu, compiler = compiler, toolchain_identifier = toolchain_identifier, - host_system_name = host_system_name, + host_system_name = exec_arch, target_system_name = target_system_name, target_libc = target_libc, abi_version = abi_version, @@ -368,10 +491,14 @@ def cc_toolchain_config( cxx_builtin_include_directories = cxx_builtin_include_directories, tool_paths = tool_paths, compile_flags = compile_flags, + fastbuild_compile_flags = fastbuild_compile_flags, dbg_compile_flags = dbg_compile_flags, opt_compile_flags = opt_compile_flags, + conly_flags = conly_flags, cxx_flags = cxx_flags, - link_flags = link_flags, + link_flags = link_flags + select({str(Label("@toolchains_llvm//toolchain/config:use_libunwind")): libunwind_link_flags, "//conditions:default": []}) + + select({str(Label("@toolchains_llvm//toolchain/config:use_compiler_rt")): compiler_rt_link_flags, "//conditions:default": []}), + archive_flags = archive_flags, link_libs = link_libs, opt_link_flags = opt_link_flags, unfiltered_compile_flags = unfiltered_compile_flags, diff --git a/toolchain/cc_wrapper.sh.tpl b/toolchain/cc_wrapper.sh.tpl index 6be2fbb56..f08eef408 100644 --- a/toolchain/cc_wrapper.sh.tpl +++ b/toolchain/cc_wrapper.sh.tpl @@ -13,36 +13,138 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +# shellcheck disable=SC1083 + +set -euo pipefail + +CLEANUP_FILES=() + +function cleanup() { + if [[ ${#CLEANUP_FILES[@]} -gt 0 ]]; then + rm -f "${CLEANUP_FILES[@]}" + fi +} + +trap cleanup EXIT + +# See note in toolchain/internal/configure.bzl where we define +# `wrapper_bin_prefix` for why this wrapper is needed. + +# this script is located at either +# - /external//bin/cc_wrapper.sh +# - //bin/cc_wrapper.sh +# The clang is located at +# - /external//bin/clang +# - //bin/clang # -# OS X relpath is not really working. This is a wrapper script around gcc -# to simulate relpath behavior. -# -# This wrapper uses install_name_tool to replace all paths in the binary -# (bazel-out/.../path/to/original/library.so) by the paths relative to -# the binary. It parses the command line to behave as rpath is supposed -# to work. +# In both cases, getting to clang can be done via +# Finding the current dir of this script, +# - /external//bin/ +# - //bin/ +# going back 2 directories +# - /external +# - # -# See https://blogs.oracle.com/dipol/entry/dynamic_libraries_rpath_and_mac -# on how to set those paths for Mach-O binaries. +# Going into %{toolchain_path_prefix} without the `external/` prefix + `bin/clang` # -set -eu -# See note in toolchain/internal/configure.bzl where we define -# `wrapper_bin_prefix` for why this wrapper is needed. +dirname_shim() { + local path="$1" -# Call the C++ compiler. -if [[ -f %{toolchain_path_prefix}bin/clang ]]; then - exec %{toolchain_path_prefix}bin/clang "$@" -elif [[ "${BASH_SOURCE[0]}" == "/"* ]]; then - # Some consumers of `CcToolchainConfigInfo` (e.g. `cmake` from rules_foreign_cc) - # change CWD and call $CC (this script) with its absolute path. - # the execroot (i.e. `cmake` from `rules_foreign_cc`) and call CC . For cases like this, - # we'll try to find `clang` relative to this script. - # This script is at _execroot_/external/_repo_name_/bin/clang_wrapper.sh - execroot_path="${BASH_SOURCE[0]%/*/*/*/*}" - clang="${execroot_path}/%{toolchain_path_prefix}bin/clang" - exec "${clang}" "${@}" + # Remove trailing slashes + path="${path%/}" + + # If there's no slash, return "." + if [[ "${path}" != */* ]]; then + echo "." + return + fi + + # Remove the last component after the final slash + path="${path%/*}" + + # If it becomes empty, it means root "/" + echo "${path:-/}" +} + +if [[ "${BASH_SOURCE[0]}" == "/"* ]]; then + bash_source_abs="$(realpath "${BASH_SOURCE[0]}")" + pwd_abs="$(realpath ".")" + bash_source_rel=${bash_source_abs#"${pwd_abs}/"} else - >&2 echo "ERROR: could not find clang; PWD=\"$(pwd)\"; PATH=\"${PATH}\"." + bash_source_rel="${BASH_SOURCE[0]}" +fi +script_dir=$(dirname_shim "${bash_source_rel}") +toolchain_path_prefix="%{toolchain_path_prefix}" + +# Sometimes this path may be an absolute path in which case we dont do anything because +# This is using the host toolchain to build. +if [[ ${toolchain_path_prefix} != /* ]]; then + # shellcheck disable=SC2312 + toolchain_path_prefix="$(dirname_shim "$(dirname_shim "${script_dir}")")/${toolchain_path_prefix#external/}" +fi + +if [[ ! -f ${toolchain_path_prefix}bin/clang ]]; then + echo >&2 "ERROR: could not find clang; PWD=\"${PWD}\"; PATH=\"${PATH}\"; toolchain_path_prefix=${toolchain_path_prefix}." exit 5 fi + +OUTPUT= + +function parse_option() { + local -r opt="$1" + if [[ "${OUTPUT}" = "1" ]]; then + OUTPUT=${opt} + elif [[ "${opt}" = "-o" ]]; then + # output is coming + OUTPUT=1 + fi +} + +function sanitize_option() { + local -r opt=$1 + if [[ ${opt} == */cc_wrapper.sh ]]; then + printf "%s" "${toolchain_path_prefix}bin/clang" + elif [[ ${opt} =~ ^-fsanitize-(ignore|black)list=[^/] ]] && [[ ${script_dir} == /* ]]; then + # shellcheck disable=SC2206 + parts=(${opt/=/ }) # Split flag name and value into array. + # shellcheck disable=SC2312 + printf "%s" "${parts[0]}=$(dirname_shim "$(dirname_shim "$(dirname_shim "${script_dir}")")")/${parts[1]}" + else + printf "%s" "${opt}" + fi +} + +cmd=() +for ((i = 0; i <= $#; i++)); do + if [[ ${!i} == @* && -r "${i:1}" ]]; then + # Create a new, sanitized file. + tmpfile=$(mktemp) + CLEANUP_FILES+=("${tmpfile}") + while IFS= read -r opt; do + opt="$( + set -e + sanitize_option "${opt}" + )" + parse_option "${opt}" + echo "${opt}" >>"${tmpfile}" + done <"${!i:1}" + cmd+=("@${tmpfile}") + else + opt="$( + set -e + sanitize_option "${!i}" + )" + parse_option "${opt}" + cmd+=("${opt}") + fi +done + +# Call the C++ compiler. +"${cmd[@]}" + +# Generate an empty file if header processing succeeded. +if [[ "${OUTPUT}" == *.h.processed ]]; then + echo -n >"${OUTPUT}" +fi diff --git a/toolchain/config/BUILD.bazel b/toolchain/config/BUILD.bazel new file mode 100644 index 000000000..2b663b7d7 --- /dev/null +++ b/toolchain/config/BUILD.bazel @@ -0,0 +1,39 @@ +# Copyright 2021 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") + +bool_flag( + name = "libunwind", + build_setting_default = True, + visibility = ["//visibility:public"], +) + +bool_flag( + name = "compiler-rt", + build_setting_default = True, + visibility = ["//visibility:public"], +) + +config_setting( + name = "use_libunwind", + flag_values = {":libunwind": "True"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "use_compiler_rt", + flag_values = {":compiler-rt": "True"}, + visibility = ["//visibility:public"], +) diff --git a/toolchain/deps.bzl b/toolchain/deps.bzl index bbe66b2a9..d94757ca0 100644 --- a/toolchain/deps.bzl +++ b/toolchain/deps.bzl @@ -19,9 +19,9 @@ def bazel_toolchain_dependencies(): if not native.existing_rule("rules_cc"): http_archive( name = "rules_cc", - sha256 = "b6f34b3261ec02f85dbc5a8bdc9414ce548e1f5f67e000d7069571799cb88b25", - strip_prefix = "rules_cc-726dd8157557f1456b3656e26ab21a1646653405", - urls = ["https://github.com/bazelbuild/rules_cc/archive/726dd8157557f1456b3656e26ab21a1646653405.tar.gz"], + urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.2.16/rules_cc-0.2.16.tar.gz"], + sha256 = "458b658277ba51b4730ea7a2020efdf1c6dcadf7d30de72e37f4308277fa8c01", + strip_prefix = "rules_cc-0.2.16", ) # Load bazel_skylib if the user has not defined them. @@ -29,10 +29,26 @@ def bazel_toolchain_dependencies(): http_archive( name = "bazel_skylib", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.3.0/bazel-skylib-1.3.0.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.9.0/bazel-skylib-1.9.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.9.0/bazel-skylib-1.9.0.tar.gz", ], - sha256 = "74d544d96f4a5bb630d465ca8bbcfe231e3594e5aae57e1edbf17a6eb3ca2506", + sha256 = "3b5b49006181f5f8ff626ef8ddceaa95e9bb8ad294f7b5d7b11ea9f7ddaf8c59", ) - # Skip bazel_skylib_workspace because we are not using lib/unittest.bzl + # Load bazel_features if the user has not defined them. + if not native.existing_rule("bazel_features"): + http_archive( + name = "bazel_features", + sha256 = "966c211ec42c4deb2af4c6dd6948408100b752f61753c97055bdac9bfb5cc0c7", + strip_prefix = "bazel_features-1.41.0", + url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.41.0/bazel_features-v1.41.0.tar.gz", + ) + + # Load helly25_bzl for version comparisons. + if not native.existing_rule("helly25_bzl"): + http_archive( + name = "helly25_bzl", + strip_prefix = "bzl-0.3.1", + url = "https://github.com/helly25/bzl/releases/download/0.3.1/bzl-0.3.1.tar.gz", + sha256 = "c8e28a3cb7e465b4b71f5d4d366c5796cc0ae822fa510a8adf12cf39a9709902", + ) diff --git a/tests/rust/BUILD.bazel b/toolchain/extensions/BUILD.bazel similarity index 100% rename from tests/rust/BUILD.bazel rename to toolchain/extensions/BUILD.bazel diff --git a/toolchain/extensions/llvm.bzl b/toolchain/extensions/llvm.bzl new file mode 100644 index 000000000..1cb01ec0a --- /dev/null +++ b/toolchain/extensions/llvm.bzl @@ -0,0 +1,141 @@ +"""LLVM extension for use with bzlmod""" + +load("@bazel_features//:features.bzl", "bazel_features") +load("@toolchains_llvm//toolchain:rules.bzl", "llvm_toolchain") +load( + "@toolchains_llvm//toolchain/internal:repo.bzl", + _llvm_config_attrs = "llvm_config_attrs", + _llvm_repo_attrs = "llvm_repo_attrs", +) +load( + "//toolchain/internal:common.bzl", + _is_absolute_path = "is_absolute_path", +) + +def _root_dict(roots, cls, name, strip_target): + res = {} + for root in roots: + targets = list(root.targets) + if not targets: + targets = [""] + for target in targets: + if res.get(target): + fail("duplicate target '%s' found for %s with name '%s'" % (target, cls, name)) + if bool(root.path) == (root.label): + fail("target '%s' for %s with name '%s' must have either path or label, but not both" % (target, cls, name)) + if root.path: + if not _is_absolute_path(root.path): + fail("target '%s' for %s with name '%s' must have an absolute path value" % (target, cls, name)) + res.update([(target, root.path)]) + continue + label_str = str(root.label) + if strip_target: + label_str = label_str.split(":")[0] + res.update([(target, label_str)]) + + return res + +def _constraint_dict(tags, name): + constraints = {} + + # Gather all the additional constraints for each target + for tag in tags: + targets = list(tag.targets) + if not targets: + targets = [""] + for target in targets: + constraints_for_target = constraints.setdefault(target, []) + constraints_for_target.extend([str(c) for c in tag.constraints]) + + return constraints + +def _llvm_impl_(module_ctx): + for mod in module_ctx.modules: + if not mod.is_root: + fail("Only the root module can use the 'llvm' extension") + toolchain_names = [] + for toolchain_attr in mod.tags.toolchain: + name = toolchain_attr.name + toolchain_names.append(name) + attrs = { + key: getattr(toolchain_attr, key) + for key in dir(toolchain_attr) + if not key.startswith("_") + } + attrs["toolchain_roots"] = _root_dict([root for root in mod.tags.toolchain_root if root.name == name], "toolchain_root", name, True) + attrs["sysroot"] = _root_dict([sysroot for sysroot in mod.tags.sysroot if sysroot.name == name], "sysroot", name, False) + attrs["extra_exec_compatible_with"] = _constraint_dict( + [tag for tag in mod.tags.extra_exec_compatible_with if tag.name == name], + name, + ) + attrs["extra_target_compatible_with"] = _constraint_dict( + [tag for tag in mod.tags.extra_target_compatible_with if tag.name == name], + name, + ) + + llvm_toolchain( + **attrs + ) + + # Check that every defined toolchain_root or sysroot has a corresponding toolchain. + for root in mod.tags.toolchain_root: + if root.name not in toolchain_names: + fail("toolchain_root '%s' does not have a corresponding toolchain" % root.name) + for root in mod.tags.sysroot: + if root.name not in toolchain_names: + fail("sysroot '%s' does not have a corresponding toolchain" % root.name) + + if bazel_features.external_deps.extension_metadata_has_reproducible: + return module_ctx.extension_metadata(reproducible = True) + else: + return None + +_attrs = { + "name": attr.string(doc = """\ + Base name for the generated repositories, allowing more than one LLVM toolchain to be registered. + """, default = "llvm_toolchain"), +} +_attrs.update(_llvm_config_attrs) +_attrs.update(_llvm_repo_attrs) + +_attrs.pop("toolchain_roots", None) +_attrs.pop("sysroot", None) + +llvm = module_extension( + implementation = _llvm_impl_, + tag_classes = { + "toolchain": tag_class( + attrs = _attrs, + ), + "toolchain_root": tag_class( + attrs = { + "name": attr.string(doc = "Same name as the toolchain tag.", default = "llvm_toolchain"), + "targets": attr.string_list(doc = "Specific targets, if any; empty list means this applies to all."), + "label": attr.label(doc = "Dummy label whose package path is the toolchain root package."), + "path": attr.string(doc = "Absolute path to the toolchain root."), + }, + ), + "sysroot": tag_class( + attrs = { + "name": attr.string(doc = "Same name as the toolchain tag.", default = "llvm_toolchain"), + "targets": attr.string_list(doc = "Specific targets, if any; empty list means this applies to all."), + "label": attr.label(doc = "Label containing the files with its package path as the sysroot path."), + "path": attr.string(doc = "Absolute path to the sysroot."), + }, + ), + "extra_exec_compatible_with": tag_class( + attrs = { + "name": attr.string(doc = "Same name as the toolchain tag.", default = "llvm_toolchain"), + "targets": attr.string_list(doc = "Specific targets, if any; empty list means this applies to all."), + "constraints": attr.label_list(doc = "List of extra constraints to add to exec_compatible_with for the generated toolchains."), + }, + ), + "extra_target_compatible_with": tag_class( + attrs = { + "name": attr.string(doc = "Same name as the toolchain tag.", default = "llvm_toolchain"), + "targets": attr.string_list(doc = "Specific targets, if any; empty list means this applies to all."), + "constraints": attr.label_list(doc = "List of extra constraints to add to target_compatible_with for the generated toolchains."), + }, + ), + }, +) diff --git a/toolchain/internal/BUILD.bazel b/toolchain/internal/BUILD.bazel index 622eeb9b5..be8b93c14 100644 --- a/toolchain/internal/BUILD.bazel +++ b/toolchain/internal/BUILD.bazel @@ -11,3 +11,41 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +load("@bazel_skylib//rules:diff_test.bzl", "diff_test") +load("llvm_distributions.bzl", "distributions_test_writer", "requirements_test_writer") + +exports_files(["template.modulemap"]) + +distributions_test_writer( + name = "llvm_distributions", + testonly = True, + output = "llvm_distributions.out.txt", + select = "llvm_distributions.sel.txt", + visibility = ["//visibility:private"], +) + +diff_test( + name = "llvm_distributions_output_test", + file1 = "llvm_distributions.golden.out.txt", + file2 = "llvm_distributions.out.txt", +) + +diff_test( + name = "llvm_distributions_select_test", + file1 = "llvm_distributions.golden.sel.txt", + file2 = "llvm_distributions.sel.txt", +) + +requirements_test_writer( + name = "llvm_requirements_test_output", + testonly = True, + result = "llvm_requirements_test.output.txt", + visibility = ["//visibility:private"], +) + +diff_test( + name = "llvm_requirements_test", + file1 = "llvm_requirements_test.golden.txt", + file2 = "llvm_requirements_test.output.txt", +) diff --git a/toolchain/internal/common.bzl b/toolchain/internal/common.bzl index 1d2f0dda3..5355d90b7 100644 --- a/toolchain/internal/common.bzl +++ b/toolchain/internal/common.bzl @@ -12,42 +12,93 @@ # See the License for the specific language governing permissions and # limitations under the License. -SUPPORTED_TARGETS = [("linux", "x86_64"), ("linux", "aarch64"), ("darwin", "x86_64"), ("darwin", "aarch64")] - -toolchain_tools = [ - "clang-cpp", - "ld.lld", - "llvm-ar", - "llvm-dwp", - "llvm-profdata", - "llvm-cov", - "llvm-nm", - "llvm-objcopy", - "llvm-objdump", - "llvm-strip", +SUPPORTED_TARGETS = [ + ("linux", "x86_64"), + ("linux", "aarch64"), + ("linux", "armv7"), + ("linux", "riscv64"), + ("darwin", "x86_64"), + ("darwin", "aarch64"), + ("none", "riscv32"), + ("none", "wasm32"), + ("none", "wasm64"), + ("none", "x86_64"), + ("wasip1", "wasm32"), + ("wasip1", "wasm64"), ] -def host_os_key(rctx): - (os, version, arch) = os_version_arch(rctx) - if version == "": - return "%s-%s" % (os, arch) - else: - return "%s-%s-%s" % (os, version, arch) +# These are targets that can build without a sysroot. +SUPPORTED_NO_SYSROOT_TARGETS = [ + ("none", "riscv32"), + ("none", "x86_64"), +] -_known_distros = ["freebsd", "suse", "ubuntu", "arch", "manjaro", "debian", "fedora", "centos", "amzn", "raspbian", "pop", "rhel"] +# Map of tool name to its symlinked name in the tools directory. +# See tool_paths in toolchain/cc_toolchain_config.bzl. +_toolchain_tools = { + name: name + for name in [ + "clang-cpp", + "clang-format", + "clang-tidy", + "clangd", + "ld.lld", + "llvm-ar", + "llvm-dwp", + "llvm-profdata", + "llvm-cov", + "llvm-nm", + "llvm-objcopy", + "llvm-objdump", + "llvm-strip", + ] +} + +# Extra tools for Darwin. +_toolchain_tools_darwin = { + # rules_foreign_cc relies on the filename of the linker to set flags. + # Also see archive_flags in cc_toolchain_config.bzl. + # https://github.com/bazelbuild/rules_foreign_cc/blob/5547abc63b12c521113208eea0c5d7f66ba494d4/foreign_cc/built_tools/make_build.bzl#L71 + # https://github.com/bazelbuild/rules_foreign_cc/blob/5547abc63b12c521113208eea0c5d7f66ba494d4/foreign_cc/private/cmake_script.bzl#L319 + "llvm-libtool-darwin": "libtool", +} + +def exec_os_key(rctx): + info = host_info(rctx) + if info.dist.version == "": + return "%s-%s" % (info.os, info.arch) + else: + return "%s-%s-%s" % (info.dist.name, info.dist.version, info.arch) + +_known_distros = [ + # keep sorted + "almalinux", + "amzn", + "arch", + "centos", + "debian", + "fedora", + "freebsd", + "manjaro", + "ol", + "pop", + "raspbian", + "rhel", + "suse", + "ubuntu", +] def _linux_dist(rctx): - res = rctx.execute(["cat", "/etc/os-release"]) - if res.return_code: - fail("Failed to detect machine architecture: \n%s\n%s" % (res.stdout, res.stderr)) info = {} - for l in res.stdout.splitlines(): - parts = l.split("=", 1) + for line in rctx.read("/etc/os-release").splitlines(): + parts = line.split("=", 1) + if len(parts) == 1: + continue info[parts[0]] = parts[1] distname = info["ID"].strip('\"') - if distname not in _known_distros: + if distname not in _known_distros and "ID_LIKE" in info: for distro in info["ID_LIKE"].strip('\"').split(" "): if distro in _known_distros: distname = distro @@ -56,22 +107,41 @@ def _linux_dist(rctx): version = "" if "VERSION_ID" in info: version = info["VERSION_ID"].strip('"') + elif "VERSION_CODENAME" in info: + version = info["VERSION_CODENAME"].strip('"') return distname, version -def os_version_arch(rctx): +def host_info(rctx): _os = os(rctx) _arch = arch(rctx) - if _os == "linux": - (distname, version) = _linux_dist(rctx) - return distname, version, _arch - - return _os, "", _arch + if _os == "linux" and not rctx.attr.exec_os: + dist_name, dist_version = _linux_dist(rctx) + else: + dist_name = _os + dist_version = "" + return struct( + arch = _arch, + dist = struct( + name = dist_name, + version = dist_version, + ), + os = _os, + ) def os(rctx): # Less granular host OS name, e.g. linux. + name = rctx.attr.exec_os + if name: + if name in ("linux", "darwin", "none"): + return name + else: + fail("Unsupported value for exec_os: %s" % name) + return os_from_rctx(rctx) + +def os_from_rctx(rctx): name = rctx.os.name if name == "linux": return "linux" @@ -83,9 +153,20 @@ def os(rctx): def os_bzl(os): # Return the OS string as used in bazel platform constraints. - return {"darwin": "osx", "linux": "linux"}[os] + return {"darwin": "osx", "linux": "linux", "none": "none", "wasip1": "wasi"}[os] def arch(rctx): + arch = rctx.attr.exec_arch + if arch: + if arch in ("arm64", "aarch64"): + return "aarch64" + elif arch in ("amd64", "x86_64"): + return "x86_64" + else: + fail("Unsupported value for exec_arch: %s" % arch) + return arch_from_rctx(rctx) + +def arch_from_rctx(rctx): arch = rctx.os.arch if arch == "arm64": return "aarch64" @@ -93,7 +174,12 @@ def arch(rctx): return "x86_64" return arch +def is_standalone_arch(os, arch): + return os == "none" and arch in ["wasm32", "wasm64"] + def os_arch_pair(os, arch): + if is_standalone_arch(os, arch): + return arch return "{}-{}".format(os, arch) _supported_os_arch = [os_arch_pair(os, arch) for (os, arch) in SUPPORTED_TARGETS] @@ -109,25 +195,25 @@ def check_os_arch_keys(keys): keys = ", ".join(_supported_os_arch), )) -def host_os_arch_dict_value(rctx, attr_name, debug = False): +def exec_os_arch_dict_value(rctx, attr_name, debug = False): # Gets a value from a dictionary keyed by host OS and arch. # Checks for the more specific key, then the less specific, # and finally the empty key as fallback. # Returns a tuple of the matching key and value. d = getattr(rctx.attr, attr_name) - key1 = host_os_key(rctx) + key1 = exec_os_key(rctx) if key1 in d: return (key1, d.get(key1)) key2 = os_arch_pair(os(rctx), arch(rctx)) if debug: - print("`%s` attribute missing for key '%s' in repository '%s'; checking with key '%s'" % (attr_name, key1, rctx.name, key2)) + print("`%s` attribute missing for key '%s' in repository '%s'; checking with key '%s'" % (attr_name, key1, rctx.name, key2)) # buildifier: disable=print if key2 in d: return (key2, d.get(key2)) if debug: - print("`%s` attribute missing for key '%s' in repository '%s'; checking with key ''" % (attr_name, key2, rctx.name)) + print("`%s` attribute missing for key '%s' in repository '%s'; checking with key ''" % (attr_name, key2, rctx.name)) # buildifier: disable=print return ("", d.get("")) # Fallback to empty key. def canonical_dir_path(path): @@ -135,11 +221,12 @@ def canonical_dir_path(path): return path + "/" return path +def is_absolute_path(val): + return val and val[0] == "/" and (len(val) == 1 or val[1] != "/") + def pkg_name_from_label(label): - if label.workspace_name: - return "@" + label.workspace_name + "//" + label.package - else: - return label.package + s = str(label) + return s[:s.index(":")] def pkg_path_from_label(label): if label.workspace_root: @@ -147,10 +234,10 @@ def pkg_path_from_label(label): else: return label.package -def list_to_string(l): - if l == None: +def list_to_string(ls): + if ls == None: return "None" - return "[{}]".format(", ".join(["\"{}\"".format(d) for d in l])) + return "[{}]".format(", ".join(["\"{}\"".format(d) for d in ls])) def attr_dict(attr): # Returns a mutable dict of attr values from the struct. This is useful to @@ -161,6 +248,9 @@ def attr_dict(attr): for key in dir(attr): if not hasattr(attr, key): fail("key %s not found in attributes" % key) + if key[0] == "_": + # Don't update private attrs. + continue val = getattr(attr, key) # Make mutable copies of frozen types. @@ -177,31 +267,8 @@ def attr_dict(attr): return dict(tuples) -def _get_host_tool_info(rctx, tool_path, tool_key = None): - if tool_key == None: - tool_key = tool_path - - if tool_path == None or not rctx.path(tool_path).exists: - return {} - - return { - tool_key: struct( - path = tool_path, - features = [], - ), - } - -def _extract_tool_path(tool_info): - # Have to support structs or dicts: - return tool_info.path if type(tool_info) == "struct" else tool_info["path"] - -def _get_host_tool(host_tool_info, tool_key): - if tool_key in host_tool_info: - return _extract_tool_path(host_tool_info[tool_key]) - else: - return None - -host_tools = struct( - get_tool_info = _get_host_tool_info, - get_and_assert = _get_host_tool, -) +def toolchain_tools(os): + tools = dict(_toolchain_tools) + if os == "darwin": + tools.update(_toolchain_tools_darwin) + return tools diff --git a/toolchain/internal/configure.bzl b/toolchain/internal/configure.bzl index 8f4f797a7..8ba8cf4ef 100644 --- a/toolchain/internal/configure.bzl +++ b/toolchain/internal/configure.bzl @@ -12,61 +12,89 @@ # See the License for the specific language governing permissions and # limitations under the License. +load("@bazel_features//:features.bzl", "bazel_features") +load("@bazel_skylib//lib:paths.bzl", "paths") +load( + "//toolchain:aliases.bzl", + _aliased_libs = "aliased_libs", + _aliased_tools = "aliased_tools", +) load( "//toolchain/internal:common.bzl", _arch = "arch", + _arch_from_rctx = "arch_from_rctx", _canonical_dir_path = "canonical_dir_path", _check_os_arch_keys = "check_os_arch_keys", - _host_os_arch_dict_value = "host_os_arch_dict_value", - _host_tools = "host_tools", + _exec_os_arch_dict_value = "exec_os_arch_dict_value", + _is_absolute_path = "is_absolute_path", + _is_standalone_arch = "is_standalone_arch", _list_to_string = "list_to_string", _os = "os", _os_arch_pair = "os_arch_pair", _os_bzl = "os_bzl", + _os_from_rctx = "os_from_rctx", _pkg_path_from_label = "pkg_path_from_label", + _supported_no_sysroot_targets = "SUPPORTED_NO_SYSROOT_TARGETS", _supported_targets = "SUPPORTED_TARGETS", _toolchain_tools = "toolchain_tools", ) +load( + "//toolchain/internal:llvm_distributions.bzl", + _required_llvm_version_rctx = "required_llvm_version_rctx", +) load( "//toolchain/internal:sysroot.bzl", _default_sysroot_path = "default_sysroot_path", _sysroot_paths_dict = "sysroot_paths_dict", ) -load( - "//toolchain:aliases.bzl", - _aliased_libs = "aliased_libs", - _aliased_tools = "aliased_tools", -) + +# When bzlmod is enabled, canonical repos names have @@ in them, while under +# workspace builds, there is never a @@ in labels. +BZLMOD_ENABLED = "@@" in str(Label("//:unused")) + +def _empty_repository(rctx): + rctx.file("BUILD.bazel") + rctx.file("toolchains.bzl", """\ +def llvm_register_toolchains(): + pass +""") + +def _join(path1, path2): + if path1: + return paths.join(path1, path2.lstrip("/")) + else: + return path2 def llvm_config_impl(rctx): _check_os_arch_keys(rctx.attr.sysroot) _check_os_arch_keys(rctx.attr.cxx_builtin_include_directories) + _check_os_arch_keys(rctx.attr.extra_exec_compatible_with) + _check_os_arch_keys(rctx.attr.extra_target_compatible_with) os = _os(rctx) if os == "windows": - rctx.file("BUILD.bazel") - rctx.file("toolchains.bzl", """\ -def llvm_register_toolchains(): - pass -""") - return + _empty_repository(rctx) + return None arch = _arch(rctx) - (key, toolchain_root) = _host_os_arch_dict_value(rctx, "toolchain_roots") + if not rctx.attr.toolchain_roots: + toolchain_root = ("@" if BZLMOD_ENABLED else "") + "@%s_llvm//" % rctx.attr.name + else: + _, toolchain_root = _exec_os_arch_dict_value(rctx, "toolchain_roots") + if not toolchain_root: - fail("LLVM toolchain root missing for ({}, {})", os, arch) - (key, llvm_version) = _host_os_arch_dict_value(rctx, "llvm_versions") + fail("LLVM toolchain root missing for ({}, {})".format(os, arch)) + llvm_version = _required_llvm_version_rctx(rctx) if not llvm_version: - fail("LLVM version string missing for ({}, {})", os, arch) - - config_repo_path = "external/%s/" % rctx.name - + # LLVM version missing for (os, arch) + _empty_repository(rctx) + return None use_absolute_paths_llvm = rctx.attr.absolute_paths use_absolute_paths_sysroot = use_absolute_paths_llvm # Check if the toolchain root is a system path. system_llvm = False - if toolchain_root[0] == "/" and (len(toolchain_root) == 1 or toolchain_root[1] != "/"): + if _is_absolute_path(toolchain_root): use_absolute_paths_llvm = True system_llvm = True @@ -99,11 +127,12 @@ def llvm_register_toolchains(): # symlinked path from the wrapper. wrapper_bin_prefix = "bin/" tools_path_prefix = "bin/" - for tool_name in _toolchain_tools: - rctx.symlink(llvm_dist_rel_path + "bin/" + tool_name, tools_path_prefix + tool_name) + tools = _toolchain_tools(os) + for tool_name, symlink_name in tools.items(): + rctx.symlink(llvm_dist_rel_path + "bin/" + tool_name, tools_path_prefix + symlink_name) symlinked_tools_str = "".join([ - "\n" + (" " * 8) + "\"" + tools_path_prefix + name + "\"," - for name in _toolchain_tools + "\n" + (" " * 8) + "\"" + tools_path_prefix + symlink_name + "\"," + for symlink_name in tools.values() ]) else: llvm_dist_rel_path = llvm_dist_path_prefix @@ -120,7 +149,6 @@ def llvm_register_toolchains(): rctx.attr.sysroot, use_absolute_paths_sysroot, ) - default_sysroot_path = _default_sysroot_path(rctx, os) workspace_name = rctx.name toolchain_info = struct( @@ -132,15 +160,17 @@ def llvm_register_toolchains(): wrapper_bin_prefix = wrapper_bin_prefix, sysroot_paths_dict = sysroot_paths_dict, sysroot_labels_dict = sysroot_labels_dict, - default_sysroot_path = default_sysroot_path, target_settings_dict = rctx.attr.target_settings, additional_include_dirs_dict = rctx.attr.cxx_builtin_include_directories, stdlib_dict = rctx.attr.stdlib, cxx_standard_dict = rctx.attr.cxx_standard, compile_flags_dict = rctx.attr.compile_flags, + conly_flags_dict = rctx.attr.conly_flags, cxx_flags_dict = rctx.attr.cxx_flags, link_flags_dict = rctx.attr.link_flags, + archive_flags_dict = rctx.attr.archive_flags, link_libs_dict = rctx.attr.link_libs, + fastbuild_compile_flags_dict = rctx.attr.fastbuild_compile_flags, opt_compile_flags_dict = rctx.attr.opt_compile_flags, opt_link_flags_dict = rctx.attr.opt_link_flags, dbg_compile_flags_dict = rctx.attr.dbg_compile_flags, @@ -148,22 +178,27 @@ def llvm_register_toolchains(): coverage_link_flags_dict = rctx.attr.coverage_link_flags, unfiltered_compile_flags_dict = rctx.attr.unfiltered_compile_flags, llvm_version = llvm_version, + extra_compiler_files = rctx.attr.extra_compiler_files, + extra_exec_compatible_with = rctx.attr.extra_exec_compatible_with, + extra_target_compatible_with = rctx.attr.extra_target_compatible_with, + extra_compile_flags_dict = rctx.attr.extra_compile_flags, + extra_cxx_flags_dict = rctx.attr.extra_cxx_flags, + extra_link_flags_dict = rctx.attr.extra_link_flags, + extra_archive_flags_dict = rctx.attr.extra_archive_flags, + extra_link_libs_dict = rctx.attr.extra_link_libs, + extra_opt_compile_flags_dict = rctx.attr.extra_opt_compile_flags, + extra_opt_link_flags_dict = rctx.attr.extra_opt_link_flags, + extra_dbg_compile_flags_dict = rctx.attr.extra_dbg_compile_flags, + extra_coverage_compile_flags_dict = rctx.attr.extra_coverage_compile_flags, + extra_coverage_link_flags_dict = rctx.attr.extra_coverage_link_flags, + extra_unfiltered_compile_flags_dict = rctx.attr.extra_unfiltered_compile_flags, ) - host_dl_ext = "dylib" if os == "darwin" else "so" - host_tools_info = dict([ - pair - for (key, tool_path) in [ - # This is used when lld doesn't support the target platform (i.e. - # Mach-O for macOS): - ("ld", "/usr/bin/ld"), - ] - for pair in _host_tools.get_tool_info(rctx, tool_path, key).items() - ]) + exec_dl_ext = "dylib" if os == "darwin" else "so" cc_toolchains_str, toolchain_labels_str = _cc_toolchains_str( + rctx, workspace_name, toolchain_info, use_absolute_paths_llvm, - host_tools_info, ) convenience_targets_str = _convenience_targets_str( @@ -171,7 +206,7 @@ def llvm_register_toolchains(): use_absolute_paths_llvm, llvm_dist_rel_path, llvm_dist_label_prefix, - host_dl_ext, + exec_dl_ext, ) # Convenience macro to register all generated toolchains. @@ -191,7 +226,7 @@ def llvm_register_toolchains(): "%{cc_toolchain_config_bzl}": str(rctx.attr._cc_toolchain_config_bzl), "%{cc_toolchains}": cc_toolchains_str, "%{symlinked_tools}": symlinked_tools_str, - "%{wrapper_bin_prefix}": wrapper_bin_prefix, + "%{tools_dir}": wrapper_bin_prefix.removesuffix("/"), "%{convenience_targets}": convenience_targets_str, }, ) @@ -209,11 +244,16 @@ def llvm_register_toolchains(): }, ) + if hasattr(rctx, "repo_metadata"): + return rctx.repo_metadata(reproducible = True) + else: + return None + def _cc_toolchains_str( + rctx, workspace_name, toolchain_info, - use_absolute_paths_llvm, - host_tools_info): + use_absolute_paths_llvm): # Since all the toolchains rely on downloading the right LLVM toolchain for # the host architecture, we don't need to explicitly specify # `exec_compatible_with` attribute. If the host and execution platform are @@ -230,14 +270,17 @@ def _cc_toolchains_str( cc_toolchains_str = "" toolchain_names = [] for (target_os, target_arch) in _supported_targets: - suffix = "{}-{}".format(target_arch, target_os) + if _is_standalone_arch(target_os, target_arch): + suffix = target_arch + else: + suffix = "{}-{}".format(target_arch, target_os) cc_toolchain_str = _cc_toolchain_str( + rctx, suffix, target_os, target_arch, toolchain_info, use_absolute_paths_llvm, - host_tools_info, ) if cc_toolchain_str: cc_toolchains_str = cc_toolchains_str + cc_toolchain_str @@ -249,22 +292,22 @@ def _cc_toolchains_str( return cc_toolchains_str, toolchain_labels_str # Gets a value from the dict for the target pair, falling back to an empty -# key, if present. Bazel 4.* doesn't support nested skylark functions, so +# key, if present. Bazel 4.* doesn't support nested starlark functions, so # we cannot simplify _dict_value() by defining it as a nested function. def _dict_value(d, target_pair, default = None): return d.get(target_pair, d.get("", default)) def _cc_toolchain_str( + rctx, suffix, target_os, target_arch, toolchain_info, - use_absolute_paths_llvm, - host_tools_info): - host_os = toolchain_info.os - host_arch = toolchain_info.arch + use_absolute_paths_llvm): + exec_os = toolchain_info.os + exec_arch = toolchain_info.arch - host_os_bzl = _os_bzl(host_os) + exec_os_bzl = _os_bzl(exec_os) target_os_bzl = _os_bzl(target_os) target_pair = _os_arch_pair(target_os, target_arch) @@ -272,67 +315,145 @@ def _cc_toolchain_str( sysroot_path = toolchain_info.sysroot_paths_dict.get(target_pair) sysroot_label = toolchain_info.sysroot_labels_dict.get(target_pair) if sysroot_label: - sysroot_label_str = "\"%s\"" % str(sysroot_label) + sysroot_label_str = repr(str(sysroot_label)) else: sysroot_label_str = "" if not sysroot_path: - if host_os == target_os and host_arch == target_arch: + if exec_os == target_os and exec_arch == target_arch: # For darwin -> darwin, we can use the macOS SDK path. - sysroot_path = toolchain_info.default_sysroot_path + sysroot_path = _default_sysroot_path(rctx, exec_os) + elif (target_os, target_arch) in _supported_no_sysroot_targets: + sysroot_path = "" else: # We are trying to cross-compile without a sysroot, let's bail. - # TODO: Are there situations where we can continue? + # TODO: Are there other situations where we can continue? return "" - extra_files_str = "\":internal-use-files\"" + extra_files_str = repr(":internal-use-tools" if bazel_features.rules.merkle_cache_v2 else ":internal-use-tools-legacy") + + # C++ built-in include directories. + # This contains both the includes shipped with the compiler as well as the sysroot (or host) + # include directories. While Bazel's default undeclared inclusions check does not seem to be + # triggered by header files under the execroot, we still include those paths here as they are + # visible via the "built_in_include_directories" attribute of CcToolchainInfo as well as to keep + # them in sync with the directories included in the system module map generated for the stricter + # "layering_check" feature. + toolchain_path_prefix = "%workspace%/" + toolchain_info.llvm_dist_path_prefix + llvm_version = toolchain_info.llvm_version + major_llvm_version = int(llvm_version.split(".")[0]) + target_system_name = { + "darwin-x86_64": "x86_64-apple-macosx", + "darwin-aarch64": "aarch64-apple-macosx", + "linux-aarch64": "aarch64-unknown-linux-gnu", + "linux-armv7": "armv7-unknown-linux-gnueabihf", + "linux-x86_64": "x86_64-unknown-linux-gnu", + "linux-riscv64": "riscv64-unknown-linux-gnu", + "none-riscv32": "riscv32-unknown-none-elf", + "none-x86_64": "x86_64-unknown-none", + "wasm32": "wasm32-unknown-unknown", + "wasm64": "wasm64-unknown-unknown", + "wasip1-wasm32": "wasm32-wasip1", + "wasip1-wasm64": "wasm64-wasip1", + }[target_pair] + + cxx_builtin_include_directories = [ + toolchain_path_prefix + "include/c++/v1", + toolchain_path_prefix + "lib/clang/{}/include".format( + major_llvm_version if major_llvm_version >= 16 else llvm_version, + ), + # Note(zbarsky): We could avoid this path if we renamed `include/{target_system_name}/c++/v1/__config_site` to `include/c++/v1/__config_site` in the LLVM repo. + # However, that would preclude sharing it across multiple toolchain definitions. + toolchain_path_prefix + "include/{}/c++/v1".format(target_system_name), + ] + + # TODO(zbarsky): Not sure if these lib64 paths are actually needed for system toolchains? + if use_absolute_paths_llvm: + cxx_builtin_include_directories.extend([ + toolchain_path_prefix + "lib64/clang/{}/include".format(llvm_version), + toolchain_path_prefix + "lib64/clang/{}/include".format(major_llvm_version), + ]) - # `struct` isn't allowed in `BUILD` files so we JSON encode + decode to turn - # them into `dict`s. - host_tools_info = json.decode(json.encode(host_tools_info)) + sysroot_prefix = "" + if sysroot_path: + sysroot_prefix = "%sysroot%" + if target_os == "linux": + cxx_builtin_include_directories.extend([ + _join(sysroot_prefix, "/include"), + _join(sysroot_prefix, "/usr/include"), + _join(sysroot_prefix, "/usr/local/include"), + ]) + elif target_os == "darwin": + cxx_builtin_include_directories.extend([ + _join(sysroot_prefix, "/usr/include"), + _join(sysroot_prefix, "/System/Library/Frameworks"), + ]) + elif target_os == "none" or target_os == "wasip1": + if sysroot_prefix: + cxx_builtin_include_directories.extend([ + _join(sysroot_prefix, "/include"), + ]) + else: + fail("Unreachable") + + cxx_builtin_include_directories.extend(toolchain_info.additional_include_dirs_dict.get(target_pair, [])) template = """ # CC toolchain for cc-clang-{suffix}. cc_toolchain_config( name = "local-{suffix}", - host_arch = "{host_arch}", - host_os = "{host_os}", + exec_arch = "{exec_arch}", + exec_os = "{exec_os}", target_arch = "{target_arch}", target_os = "{target_os}", + target_system_name = "{target_system_name}", toolchain_path_prefix = "{llvm_dist_path_prefix}", tools_path_prefix = "{tools_path_prefix}", wrapper_bin_prefix = "{wrapper_bin_prefix}", compiler_configuration = {{ - "additional_include_dirs": {additional_include_dirs}, "sysroot_path": "{sysroot_path}", "stdlib": "{stdlib}", "cxx_standard": "{cxx_standard}", "compile_flags": {compile_flags}, + "conly_flags": {conly_flags}, "cxx_flags": {cxx_flags}, "link_flags": {link_flags}, + "archive_flags": {archive_flags}, "link_libs": {link_libs}, + "fastbuild_compile_flags": {fastbuild_compile_flags}, "opt_compile_flags": {opt_compile_flags}, "opt_link_flags": {opt_link_flags}, "dbg_compile_flags": {dbg_compile_flags}, "coverage_compile_flags": {coverage_compile_flags}, "coverage_link_flags": {coverage_link_flags}, "unfiltered_compile_flags": {unfiltered_compile_flags}, + "extra_compile_flags": {extra_compile_flags}, + "extra_cxx_flags": {extra_cxx_flags}, + "extra_link_flags": {extra_link_flags}, + "extra_archive_flags": {extra_archive_flags}, + "extra_link_libs": {extra_link_libs}, + "extra_opt_compile_flags": {extra_opt_compile_flags}, + "extra_opt_link_flags": {extra_opt_link_flags}, + "extra_dbg_compile_flags": {extra_dbg_compile_flags}, + "extra_coverage_compile_flags": {extra_coverage_compile_flags}, + "extra_coverage_link_flags": {extra_coverage_link_flags}, + "extra_unfiltered_compile_flags": {extra_unfiltered_compile_flags}, }}, - llvm_version = "{llvm_version}", - host_tools_info = {host_tools_info}, + cxx_builtin_include_directories = {cxx_builtin_include_directories}, + major_llvm_version = {major_llvm_version}, ) toolchain( name = "cc-toolchain-{suffix}", exec_compatible_with = [ - "@platforms//cpu:{host_arch}", - "@platforms//os:{host_os_bzl}", - ], + "@platforms//cpu:{exec_arch}", + "@platforms//os:{exec_os_bzl}", + ] + {extra_exec_compatible_with_specific} + {extra_exec_compatible_with_all_targets}, target_compatible_with = [ "@platforms//cpu:{target_arch}", "@platforms//os:{target_os_bzl}", - ], + ] + {extra_target_compatible_with_specific} + {extra_target_compatible_with_all_targets}, target_settings = {target_settings}, toolchain = ":cc-clang-{suffix}", toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", @@ -348,9 +469,17 @@ filegroup( if use_absolute_paths_llvm: template = template + """ +filegroup( + name = "cxx_builtin_include_files-{suffix}", + srcs = [], +) + filegroup( name = "compiler-components-{suffix}", - srcs = [":sysroot-components-{suffix}"], + srcs = [ + ":sysroot-components-{suffix}", + {extra_compiler_files} + ], ) filegroup( @@ -377,12 +506,19 @@ filegroup(name = "strip-files-{suffix}", srcs = [{extra_files_str}]) """ else: template = template + """ +filegroup( + name = "cxx_builtin_include_files-{suffix}", + srcs = ["{llvm_dist_label_prefix}{cxx_builtin_include_label}"], +) + filegroup( name = "compiler-components-{suffix}", srcs = [ - "{llvm_dist_label_prefix}clang", - "{llvm_dist_label_prefix}include", + ":cxx_builtin_include_files-{suffix}", ":sysroot-components-{suffix}", + "{llvm_dist_label_prefix}extra_config_site", + "{llvm_dist_label_prefix}clang", + {extra_compiler_files} ], ) @@ -392,7 +528,7 @@ filegroup( "{llvm_dist_label_prefix}clang", "{llvm_dist_label_prefix}ld", "{llvm_dist_label_prefix}ar", - "{llvm_dist_label_prefix}lib", + "{llvm_dist_label_prefix}{lib_label}", ":sysroot-components-{suffix}", ], ) @@ -417,6 +553,14 @@ filegroup(name = "strip-files-{suffix}", srcs = ["{llvm_dist_label_prefix}strip" """ template = template + """ +system_module_map( + name = "module-{suffix}", + cxx_builtin_include_files = ":cxx_builtin_include_files-{suffix}", + cxx_builtin_include_directories = {cxx_builtin_include_directories}, + sysroot_files = ":sysroot-components-{suffix}", + sysroot_path = "{sysroot_path}", +) + cc_toolchain( name = "cc-clang-{suffix}", all_files = "all-files-{suffix}", @@ -428,48 +572,84 @@ cc_toolchain( objcopy_files = "objcopy-files-{suffix}", strip_files = "strip-files-{suffix}", toolchain_config = "local-{suffix}", + module_map = "module-{suffix}", + supports_header_parsing = True, ) """ + # Filter out non-existing directories with absolute paths as they + # result in a -Wincomplete-umbrella warning when mentioned in the + # system module map. Note that this filtering is skipped for remote + # execution because it is not possible to check directory existence. + filtered_cxx_builtin_include_directories = cxx_builtin_include_directories if _is_remote(rctx, exec_os, exec_arch) else [ + dir + for dir in cxx_builtin_include_directories + if _is_hermetic_or_exists(rctx, dir, sysroot_path) + ] + return template.format( suffix = suffix, target_os = target_os, target_arch = target_arch, - host_os = host_os, - host_arch = host_arch, + exec_os = exec_os, + exec_arch = exec_arch, target_settings = _list_to_string(_dict_value(toolchain_info.target_settings_dict, target_pair)), target_os_bzl = target_os_bzl, - host_os_bzl = host_os_bzl, + target_system_name = target_system_name, + exec_os_bzl = exec_os_bzl, llvm_dist_label_prefix = toolchain_info.llvm_dist_label_prefix, llvm_dist_path_prefix = toolchain_info.llvm_dist_path_prefix, tools_path_prefix = toolchain_info.tools_path_prefix, wrapper_bin_prefix = toolchain_info.wrapper_bin_prefix, sysroot_label_str = sysroot_label_str, sysroot_path = sysroot_path, - additional_include_dirs = _list_to_string(toolchain_info.additional_include_dirs_dict.get(target_pair, [])), stdlib = _dict_value(toolchain_info.stdlib_dict, target_pair, "builtin-libc++"), cxx_standard = _dict_value(toolchain_info.cxx_standard_dict, target_pair, "c++17"), compile_flags = _list_to_string(_dict_value(toolchain_info.compile_flags_dict, target_pair)), + conly_flags = _list_to_string(toolchain_info.conly_flags_dict.get(target_pair, [])), cxx_flags = _list_to_string(_dict_value(toolchain_info.cxx_flags_dict, target_pair)), link_flags = _list_to_string(_dict_value(toolchain_info.link_flags_dict, target_pair)), + archive_flags = _list_to_string(_dict_value(toolchain_info.archive_flags_dict, target_pair)), link_libs = _list_to_string(_dict_value(toolchain_info.link_libs_dict, target_pair)), + fastbuild_compile_flags = _list_to_string(_dict_value(toolchain_info.fastbuild_compile_flags_dict, target_pair)), opt_compile_flags = _list_to_string(_dict_value(toolchain_info.opt_compile_flags_dict, target_pair)), opt_link_flags = _list_to_string(_dict_value(toolchain_info.opt_link_flags_dict, target_pair)), dbg_compile_flags = _list_to_string(_dict_value(toolchain_info.dbg_compile_flags_dict, target_pair)), coverage_compile_flags = _list_to_string(_dict_value(toolchain_info.coverage_compile_flags_dict, target_pair)), coverage_link_flags = _list_to_string(_dict_value(toolchain_info.coverage_link_flags_dict, target_pair)), unfiltered_compile_flags = _list_to_string(_dict_value(toolchain_info.unfiltered_compile_flags_dict, target_pair)), - llvm_version = toolchain_info.llvm_version, + extra_compile_flags = _list_to_string(_dict_value(toolchain_info.extra_compile_flags_dict, target_pair)), + extra_cxx_flags = _list_to_string(_dict_value(toolchain_info.extra_cxx_flags_dict, target_pair)), + extra_link_flags = _list_to_string(_dict_value(toolchain_info.extra_link_flags_dict, target_pair)), + extra_archive_flags = _list_to_string(_dict_value(toolchain_info.extra_archive_flags_dict, target_pair)), + extra_link_libs = _list_to_string(_dict_value(toolchain_info.extra_link_libs_dict, target_pair)), + extra_opt_compile_flags = _list_to_string(_dict_value(toolchain_info.extra_opt_compile_flags_dict, target_pair)), + extra_opt_link_flags = _list_to_string(_dict_value(toolchain_info.extra_opt_link_flags_dict, target_pair)), + extra_dbg_compile_flags = _list_to_string(_dict_value(toolchain_info.extra_dbg_compile_flags_dict, target_pair)), + extra_coverage_compile_flags = _list_to_string(_dict_value(toolchain_info.extra_coverage_compile_flags_dict, target_pair)), + extra_coverage_link_flags = _list_to_string(_dict_value(toolchain_info.extra_coverage_link_flags_dict, target_pair)), + extra_unfiltered_compile_flags = _list_to_string(_dict_value(toolchain_info.extra_unfiltered_compile_flags_dict, target_pair)), extra_files_str = extra_files_str, - host_tools_info = host_tools_info, + cxx_builtin_include_directories = _list_to_string(filtered_cxx_builtin_include_directories), + cxx_builtin_include_label = "cxx_builtin_include" if bazel_features.rules.merkle_cache_v2 else "include", + lib_label = "lib" if bazel_features.rules.merkle_cache_v2 else "lib_legacy", + extra_compiler_files = ("\"%s\"," % str(toolchain_info.extra_compiler_files)) if toolchain_info.extra_compiler_files else "", + major_llvm_version = major_llvm_version, + extra_exec_compatible_with_specific = toolchain_info.extra_exec_compatible_with.get(target_pair, []), + extra_target_compatible_with_specific = toolchain_info.extra_target_compatible_with.get(target_pair, []), + extra_exec_compatible_with_all_targets = toolchain_info.extra_exec_compatible_with.get("", []), + extra_target_compatible_with_all_targets = toolchain_info.extra_target_compatible_with.get("", []), ) -def _convenience_targets_str(rctx, use_absolute_paths, llvm_dist_rel_path, llvm_dist_label_prefix, host_dl_ext): +def _is_remote(rctx, exec_os, exec_arch): + return not (_os_from_rctx(rctx) == exec_os and _arch_from_rctx(rctx) == exec_arch) + +def _convenience_targets_str(rctx, use_absolute_paths, llvm_dist_rel_path, llvm_dist_label_prefix, exec_dl_ext): if use_absolute_paths: llvm_dist_label_prefix = ":" filenames = [] for libname in _aliased_libs: - filename = "lib/{}.{}".format(libname, host_dl_ext) + filename = "lib/{}.{}".format(libname, exec_dl_ext) filenames.append(filename) for toolname in _aliased_tools: filename = "bin/{}".format(toolname) @@ -483,7 +663,7 @@ def _convenience_targets_str(rctx, use_absolute_paths, llvm_dist_rel_path, llvm_ template = """ cc_import( name = "{name}", - shared_library = "{{llvm_dist_label_prefix}}lib/lib{name}.{{host_dl_ext}}", + shared_library = "{{llvm_dist_label_prefix}}lib/lib{name}.{{exec_dl_ext}}", )""".format(name = name) lib_target_strs.append(template) @@ -499,5 +679,11 @@ native_binary( return "\n".join(lib_target_strs + tool_target_strs).format( llvm_dist_label_prefix = llvm_dist_label_prefix, - host_dl_ext = host_dl_ext, + exec_dl_ext = exec_dl_ext, ) + +def _is_hermetic_or_exists(rctx, path, sysroot_path): + path = path.replace("%sysroot%", sysroot_path).replace("//", "/") + if not path.startswith("/"): + return True + return rctx.path(path).exists diff --git a/toolchain/internal/llvm_distributions.bzl b/toolchain/internal/llvm_distributions.bzl index bd92b7763..6aded998c 100644 --- a/toolchain/internal/llvm_distributions.bzl +++ b/toolchain/internal/llvm_distributions.bzl @@ -13,11 +13,17 @@ # limitations under the License. load("@bazel_tools//tools/build_defs/repo:utils.bzl", "read_netrc", "use_netrc") -load("//toolchain/internal:common.bzl", _arch = "arch", _attr_dict = "attr_dict", _host_os_arch_dict_value = "host_os_arch_dict_value", _os = "os") -load("//toolchain/internal:release_name.bzl", _llvm_release_name = "llvm_release_name") +load("@helly25_bzl//bzl/versions:versions.bzl", "versions") +load( + "//toolchain/internal:common.bzl", + "attr_dict", + "exec_os_arch_dict_value", + "host_info", +) # If a new LLVM version is missing from this list, please add the shasums here -# and send a PR on github. To compute the shasum block, you can run (for example): +# and the new version in toolchain/internal/llvm_distributions.golden.txt. +# Then send a PR on github. To compute the shasum block, you can run (for example): # utils/llvm_checksums.sh -g -v 15.0.6 # # To find all available release versions, search for "tag_name" in @@ -213,6 +219,67 @@ _llvm_distributions = { "clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz": "61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5", "clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz": "78f70cc94c3b6f562455b15cebb63e75571d50c3d488d53d9aa4cd9dded30627", + # 14.0.1 + "clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz": "0f1fe0c927ebc2fc9e7d55188b80cd4982e49ae2a667bff1199435fb21159f52", + "clang+llvm-14.0.1-amd64-pc-solaris2.11.tar.xz": "220c3f690a6e7ca2fb180594071d39556a4ea0951672397c9f5946656f088956", + "clang+llvm-14.0.1-amd64-unknown-freebsd12.tar.xz": "755023705bb7caa9db3f06c02908f840612a1497da4da617d1022522a978f4de", + "clang+llvm-14.0.1-amd64-unknown-freebsd13.tar.xz": "657497b3525b9ae115a019bb5ea401f198e087761f17155f4335a5df1f6994df", + "clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz": "be17b515b4a7938959ada101ca72fd9f59faf605e5838211e8915a36bf68f0d5", + "clang+llvm-14.0.1-powerpc64-ibm-aix-7.2.tar.xz": "0426b0b87c6275436f8285f4998f5588139405d61a3d5edc64c88119b57f4ebf", + "clang+llvm-14.0.1-powerpc64le-linux-rhel-8.4.tar.xz": "222238faa88a46b65a0610923bb27ab357e7eb1ac3f894c89c0b474b516da4bf", + "clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz": "761e8a3ce4efa6ee4e98f777b34a5fd7db64a1e0baf8c6eab51c078d646e567f", + "clang+llvm-14.0.1-sparcv9-sun-solaris2.11.tar.xz": "ba2e06fda8e0c5eb7daec3159b43ac1b41a9ef6a576cab772b0bc5bfc3ba5851", + "clang+llvm-14.0.1-x86_64-apple-darwin.tar.xz": "43149390e95b1cdbf1d4ef2e9d214bbb6d35858ceb2df27245868e06bc4fc44c", + + # 14.0.2 + "clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz": "ad6d065a2cf1c67698cc7f368722b1adc3fa2d7c9401446f0046612b6c90edc4", + "clang+llvm-14.0.2-amd64-unknown-freebsd12.tar.xz": "1df946b25963e941253e2aad31c92979630af9b12fc8be2538e191013a151bb1", + "clang+llvm-14.0.2-amd64-unknown-freebsd13.tar.xz": "0acab62c60dfb7449cd635000300feeff19717a14056d33a90c0b33fd0ffcb01", + "clang+llvm-14.0.2-powerpc64-ibm-aix-7.2.tar.xz": "837482b5ca8f144365bd1810910cbce39d0d3c4c97a8aa4ac8612d0ffb248407", + "clang+llvm-14.0.2-x86_64-apple-darwin.tar.xz": "7037efca192eb04a569a7422bd5d974a0af315b979252b6d956d2657ac33d672", + + # 14.0.3 + "clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz": "36958cf3f1be9e91f33b0ce86afe049c2cf89c320996f963ee232c2405a811ec", + "clang+llvm-14.0.3-amd64-unknown-freebsd12.tar.xz": "62737fb1da58af725c0c93015c5d8250a723d976e8d7ef26b6445f8cb23c4f91", + "clang+llvm-14.0.3-amd64-unknown-freebsd13.tar.xz": "2c8d9537af54626395a3dbd0aa7ccd2c76aab567507a8293ab75967ab784162d", + "clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz": "2279cd46a7b619a0cb66d54012917c889e37c56f718ab92813dc13131f2fd805", + "clang+llvm-14.0.3-powerpc64-ibm-aix-7.2.tar.xz": "2afa547a182248a36815f31a427faced639286881bc975804563994e6c962552", + "clang+llvm-14.0.3-powerpc64le-linux-rhel-8.4.tar.xz": "6c2d79cebec1a0ba96c13bca613b01b7ebf194fcbd0ecf4d3432d4a7804e71ff", + "clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz": "5ae686c74ab0b9b2930861c0d2875fcd4db22a9c6bdd9c9507120a0f808c17c8", + "clang+llvm-14.0.3-x86_64-apple-darwin.tar.xz": "90e07966dbaf87de0cbb206ab763023f9c559612c91d43a1711af7dc026cfb81", + + # 14.0.4 + "clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz": "0c960d50c83360d81e698120f131cf004676cbe5ac6db6fbe67a0950f3cde2d1", + "clang+llvm-14.0.4-amd64-unknown-freebsd12.tar.xz": "80814b7a7a56151b204aa8cb621df22c645f41c834920c3818d6b6eadb175a79", + "clang+llvm-14.0.4-amd64-unknown-freebsd13.tar.xz": "282696627bb3f2d07dd38d7c67ecff97877f2b984d712dbcb506e3f0a63ad1f8", + "clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz": "09bb79557235aee16badc4e3db86a121b0b3c7af226e093c908a1c66c5a0c4c4", + "clang+llvm-14.0.4-powerpc64-ibm-aix-7.2.tar.xz": "2af35c3e1b60f68551cd92a31b66c6ad9b2986e9cb3f2aa924e225ae254d1a46", + "clang+llvm-14.0.4-powerpc64le-linux-rhel-8.4.tar.xz": "0c35b2ebd22c081d19679889e4afedf2060f1649d1060d45e0fa00f61dfba542", + "clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "5736642965dca707282e22d084e3ec621f0fc8db8779e82f8d667942112bdac6", + "clang+llvm-14.0.4-x86_64-apple-darwin.tar.xz": "f6d9801b0bd78479229d21e2d5650c5a61f9ab1b6f80bad0dccf4b7a7eb30abf", + + # 14.0.5 + "clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz": "e8138f24d716ef9714e259ab276e6ef74c8adcf9af0270464a8a01c24a583ea8", + "clang+llvm-14.0.5-amd64-unknown-freebsd12.tar.xz": "1edee096aa23e2c0b75352953c4f04a105fd9521de6742d4652b44ab9009636c", + "clang+llvm-14.0.5-amd64-unknown-freebsd13.tar.xz": "52c62e29f2cd8d72d592cded337e47bb8cb0998f7ee5f3c1b168790bdce154e7", + "clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz": "f80dbd2684f8fe13ce675236e5ef0235fdf5239d442c21f066245d7fb98ba11c", + "clang+llvm-14.0.5-powerpc64-ibm-aix-7.2.tar.xz": "8b2dd8fb508d295cf72be84a592a3592824fd4d881a9fcd6c2a64ba4954fe944", + "clang+llvm-14.0.5-powerpc64le-linux-rhel-8.4.tar.xz": "003314da4c23996f4fb40590e152ec2f42cd2c9ad71d70be68fcc76a746cb093", + "clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "8d4bfe5cd53515adde095f07395356d71287a6ff27fa3e2219850b865f19d113", + "clang+llvm-14.0.5-x86_64-apple-darwin.tar.xz": "66cf1b8e00289a567b2f5f740f068b7682e27ccf048647b836d3624376a64705", + + # 14.0.6 + "clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz": "1a81fda984f5e607584916fdf69cf41e5385b219b983544d2c1a14950d5a65cf", + "clang+llvm-14.0.6-amd64-unknown-freebsd12.tar.xz": "b0a7b86dacb12afb8dd2ca99ea1b894d9cce84aab7711cb1964b3005dfb09af3", + "clang+llvm-14.0.6-amd64-unknown-freebsd13.tar.xz": "503e806ae67323c4f790ea2b1fe21e52809814d6a51263e2618f0c22ec47f6ff", + "clang+llvm-14.0.6-arm64-apple-darwin22.3.0.tar.xz": "82f4f7607a16c9aaf7314b945bde6a4639836ec9d2b474ebb3a31dee33e3c15a", + "clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz": "e50243c191334b80faa0bb18bbadb8afa35cd3d19cb521353c666c1a7ef20173", + "clang+llvm-14.0.6-powerpc64-ibm-aix-7.2.tar.xz": "38af6625848a8343dc834c2a272ba88028efab575681d913a39a3c6eaa3c11dc", + "clang+llvm-14.0.6-powerpc64le-linux-rhel-8.4.tar.xz": "4ef7c608ac026bca64149e59fb3abfe0f5212f2be0af12fe6e52c9413b1f7c4a", + "clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "5eaff8c40a94d36336221f31b413fba500ec240403fa12e99dd49b56b736eeb3", + "clang+llvm-14.0.6-x86_64-apple-darwin.tar.xz": "e6cc6b8279661fd4452c2847cb8e55ce1e54e1faf4ab497b37c85ffdb6685e7c", + "clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz": "7412026be8bb8f6b4c25ef58c7a1f78ed5ea039d94f0fa633a386de9c60a6942", + # 15.0.0 "clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz": "527ed550784681f95ec7a1be8fbf5a24bd03d7da9bf31afb6523996f45670be3", "clang+llvm-15.0.0-amd64-pc-solaris2.11.tar.xz": "5b9fd6a30ce6941adf74667d2076a49aa047fa040e3690f7af26c264d4ce58e7", @@ -224,6 +291,50 @@ _llvm_distributions = { "clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz": "b5a8108040d5d5d69d6106fa89a6cffc71a16a3583b74c1f15c42f392a47a3d9", "clang+llvm-15.0.0-sparcv9-sun-solaris2.11.tar.xz": "4354854976355ca6f4ac90231a97121844c4fc9f998c9850527390120c62f01f", "clang+llvm-15.0.0-x86_64-apple-darwin.tar.xz": "8fb11e6ada98b901398b2e7b0378a3a59e88c88c754e95d8f6b54613254d7d65", + "clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz": "20b17fabc97b93791098e771adf18013c50eae2e45407f8bfa772883b6027d30", + + # 15.0.1 + "clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz": "201b2f5e537ec88937e0e1b30512453076e73a06ca75edf9939dc0e61b5ccbd1", + "clang+llvm-15.0.1-arm64-apple-darwin21.0.tar.xz": "858f86d96b5e4880f69f7a583daddbf97ee94e7cffce0d53aa05cba6967f13b8", + "clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz": "d145a2458a11b3977e48b3fbce66a70d88acd148a44fbf22c0c7a53fb27218bb", + "clang+llvm-15.0.1-powerpc64-ibm-aix-7.2.tar.xz": "0ee72558ba052815f64f112bdebc6b1684c3cf868ed588936e23ef3bdc52d216", + "clang+llvm-15.0.1-powerpc64le-linux-rhel-8.4.tar.xz": "30895fae1cdf5cb11ce5fa14fb2e2c16476f1f94c731bf3de398c79be64fed70", + "clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "e7c427e0590e8c362d0766f9125674e847be9d30986c3d6928be960b30c87e63", + "clang+llvm-15.0.1-x86_64-apple-darwin.tar.xz": "0b2f1a811e68d011344103274733b7670c15bbe08b2a3a5140ccad8e19d9311e", + + # 15.0.2 + "clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz": "3d0c2b28b0c06ebb9e0ce75e337680403771b28a4b8f065ce608cf2386f97a73", + "clang+llvm-15.0.2-arm64-apple-darwin21.0.tar.xz": "8c33f807bca56568b7060d0474daf63c8c10ec521d8188ac76362354d313ec58", + "clang+llvm-15.0.2-powerpc64-ibm-aix-7.2.tar.xz": "7c040d47745923fd8d7fffdd0d37587b021165f1fcc76015e56adbd2f427b251", + "clang+llvm-15.0.2-powerpc64le-linux-rhel-8.4.tar.xz": "c35d4a36baf1fe2ba790c5813e7d9efa60f892e08f5778d8ba2a1b0092fb9c1c", + "clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "eeef0714f4ef208f45c757514d1b40114c2ac54bb5885d96b306d50f7725f1cf", + "clang+llvm-15.0.2-x86_64-apple-darwin.tar.xz": "a37ec6204f555605fa11e9c0e139a251402590ead6e227fc72da193e03883882", + "clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz": "f48f479e91ee7297ed8306c9d4495015691237cd91cc5330d3e1ee057b0548bd", + "clang+llvm-15.0.2-x86_64-unknown-linux-gnu-sles15.tar.xz": "8af00fb689459cb6b9af2a427af9d7d99da8f77e1da161fa1dc58164832b3b21", + + # 15.0.3 + "clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz": "fa59fad997025da49b5001d6dc193bb7899e59de6268406b76c4fdbe2b56b7fd", + "clang+llvm-15.0.3-arm64-apple-darwin21.0.tar.xz": "83603b1258995f2659c3a87f7f62ee9b9c9775d7c7cde92a375c635f7bf73c28", + "clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz": "6de24c0f778d14228fe15908c687dc7caba280c688d61cc55cbb8d74551385de", + "clang+llvm-15.0.3-powerpc64-ibm-aix-7.2.tar.xz": "b4fed7e95d33922140e2e080a4b41a7b69b4a7bbcbaa5d896b578d57013639f0", + "clang+llvm-15.0.3-powerpc64le-linux-rhel-8.4.tar.xz": "5f26ddae25d8d742fc33c85393e4890df37aa16d25d174708de94555b93e3ab3", + "clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "a5b558266eb0ad11c7db1358763e2ad7194dd7403919a76b444d7a6619ede86a", + "clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz": "ac668586b2b3d068f1e43520a3ef0b1592e5dc3eff1a4a4b772e29803b428a69", + + # 15.0.4 + "clang+llvm-15.0.4-arm64-apple-darwin21.0.tar.xz": "70e7a6d98fc42d4c36aca1a5b666c57e83ae474df5920382853b9209c829938a", + "clang+llvm-15.0.4-powerpc64-ibm-aix-7.2.tar.xz": "c0aa0323c0705b93b89667aa8f34ae46e40a6da092295d21895fd7b866ce7f5d", + "clang+llvm-15.0.4-powerpc64le-linux-rhel-8.4.tar.xz": "4209982861e11852d2248daba76239182d82d1e2165927da12cdbd603d0ec421", + "clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "0f90e85c21c54d482d3c0ecd073671938d209e5fe8392bb72668cca179b92fd6", + "clang+llvm-15.0.4-x86_64-apple-darwin.tar.xz": "4c98d891c07c8f6661b233bf6652981f28432cfdbd6f07181114195c3536544b", + "clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz": "2672e88fc9c79ff287a0d0e6dbbaf77fbbea3c12dab39fd733ae9432fbcb7e9e", + + # 15.0.5 + "clang+llvm-15.0.5-arm64-apple-darwin21.0.tar.xz": "0fda3ef24071dffb0c95378be7ed4114999a5a169cd61015e489fd6ee8406809", + "clang+llvm-15.0.5-powerpc64-ibm-aix-7.2.tar.xz": "eeb3efa22e0bede117474700fd72cf4e4aa0b221401e42e172773740d56635b2", + "clang+llvm-15.0.5-powerpc64le-linux-rhel-8.4.tar.xz": "b27ec77eea47c1403e66726c97fa2f3c9dd19d40606aa195ff2382f09959253b", + "clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz": "760ab1e879438659abeecfed2f08701e996ea02bcdb83d618ccf9390f59f6882", + "clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz": "15018e4f45889450b62367acbdc7628556ceba92bd9f6b0544145334d1311cbc", # 15.0.6 "clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz": "8ca4d68cf103da8331ca3f35fe23d940c1b78fb7f0d4763c1c059e352f5d1bec", @@ -277,14 +388,356 @@ _llvm_distributions = { "clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "638d32fd0032f99bafaab3bae63a406adb771825a02b6b7da119ee7e71af26c6", # 16.0.4 + "clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz": "2e0b5b20d21ff80dea9f31d3f7636e458028ad0d5ee0bda42608fa8744ea3a12", "clang+llvm-16.0.4-amd64-unknown-freebsd13.tar.xz": "cf9d73bcf05b8749c7f3efbe86654b8fe0209f28993eafe26c27eb85885593f7", "clang+llvm-16.0.4-arm64-apple-darwin22.0.tar.xz": "429b8061d620108fee636313df55a0602ea0d14458c6d3873989e6b130a074bd", + "clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz": "e3fafbb5813650cdbfb191005fa8a7b1f036fbadff171e05b32d06015e1feb46", + "clang+llvm-16.0.4-powerpc64-ibm-aix-7.2.tar.xz": "af8691731ddd4142c53d9aeb2ad2c4281f4ca9819c5630e7ccade40f39dc4ee5", + "clang+llvm-16.0.4-powerpc64le-linux-rhel-8.4.tar.xz": "fe99951300ae7f1877f00531dc5a2f5f00572fa236be6d1323902ea6aeb0a496", "clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "fd464333bd55b482eb7385f2f4e18248eb43129a3cda4c0920ad9ac3c12bdacf", + + # 16.0.5 + "clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz": "c427d4fa5cd21a11d9fea55ae60ad2e7230ad8411f7a0dea867273f2a1b74891", + "clang+llvm-16.0.5-amd64-unknown-freebsd13.tar.xz": "c52d693584d4f86d972acb52be5d14d13ccd815c68ca22114e46829219da3734", + "clang+llvm-16.0.5-arm64-apple-darwin22.0.tar.xz": "1aed0787417dd915f0101503ce1d2719c8820a2c92d4a517bfc4044f72035bcc", + "clang+llvm-16.0.5-powerpc64-ibm-aix-7.2.tar.xz": "5649575b499deff1470dd1f3baacbee445bf2789de266135d81024572efc54f0", + "clang+llvm-16.0.5-powerpc64le-linux-rhel-8.7.tar.xz": "8f2588dabcc2515e860733c2001fb81774aa2d2bccad153f064cfb886df2d065", + + # 16.0.6 + "clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz": "283e904048425f05798a98f1b288ae0d28ce75eb1049e0837f959e911369945b", + "clang+llvm-16.0.6-powerpc64le-linux-rhel-8.7.tar.xz": "1f8d73c342efc82618bd8d58fa8855bc7e70bd2a6ed9646065aabfa4b468e82d", + + # 17.0.1 + "clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz": "d2eaca72ce3aab0b343e01b2233303628ff43a43a6107dca1aa8d3039da847f5", + "clang+llvm-17.0.1-amd64-pc-solaris2.11.tar.xz": "153b8b650705390cc3b4ff739b061f5bff87542531c002c039d52c00781559f7", + "clang+llvm-17.0.1-arm64-apple-darwin22.0.tar.xz": "d5678bc475c42c3ab7c0ee35ebd95534d81b6816507cfc9e42d86136d8315ebc", + "clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz": "1ca3b7adeee14c656e0689c76cea962a644fb6dba9ecda894505506f837f9d69", + "clang+llvm-17.0.1-final_powerpc64-ibm-aix-7.2.tar.xz": "f5d9bf5822a775d4b10e7af035076e1779983dee1b05b3f57af2674231bcf678", + "clang+llvm-17.0.1-powerpc64le-linux-rhel-8.8.tar.xz": "937394cd44c5eb81aae8d1c66b6d3b930ebd2b013ac6493d17f33f5083281d37", + "clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz": "0ab5f6a9b19ec968628d987d9430a033801c78bee65fbf40c72da660ff401f4d", + "clang+llvm-17.0.1-sparcv9-sun-solaris2.11.tar.xz": "a69d47bb1397766a87fcdef28260fc664fdf9b6e1f7c56792939baf8513c1694", + + # 17.0.2 + "clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz": "b08480f2a77167556907869065b0e0e30f4d6cb64ecc625d523b61c22ff0200f", + "clang+llvm-17.0.2-amd64-pc-solaris2.11.tar.xz": "8e98c6015202575407f5580bed9a9b58d3bdc3e5d64e39289189b491949b957f", + "clang+llvm-17.0.2-arm64-apple-darwin22.0.tar.xz": "dfb3226b3e16f5b8d3882f3ff0e8ebf40b26dd1e97d879197430b930d773ea84", + "clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz": "2204da50c85db65def57b11bd0d96abdc96808cf410403daf7aa9c86f2b9e732", + "clang+llvm-17.0.2-powerpc64-ibm-aix-7.2.tar.xz": "c0175b48bf72c621316f3fc7ec4662163d4e17718b179f967d75149d7cfeee80", + "clang+llvm-17.0.2-powerpc64le-linux-rhel-8.8.tar.xz": "ef19116996a1966a4fa6e261c86eef7b807e5f39a963dc914b5547976336ab1b", + "clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz": "950d1ef440f17e29c4201450ad619d3b4a37a0bbf15f19ce03195e0b4da7d73f", + "clang+llvm-17.0.2-sparcv9-sun-solaris2.11.tar.xz": "3702914668b5758817374271fa8a41fe67c77b2e86f17706c9d6906f250de6ae", + "clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "df297df804766f8fb18f10a188af78e55d82bb8881751408c2fa694ca19163a8", + + # 17.0.3 + "clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz": "289da98e4cbc157153e987ff24ce835717a36cfab03ecd03bf359378ee4ae9d7", + "clang+llvm-17.0.3-arm64-apple-darwin22.0.tar.xz": "da452a1aa33954c123d5264bd849ebc572a28e8511b868b43e82d6960fda60d7", + "clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz": "5da6f3a350a34f8401125d31aeef85bc2deda04601b9b703f62356e81516e73c", + "clang+llvm-17.0.3-powerpc64-ibm-aix-7.2.tar.xz": "86b05883c17ddb4b7e9ad6a6a88e78311c117fdc03415fa47293e12e6e2810ff", + "clang+llvm-17.0.3-powerpc64le-linux-rhel-8.8.tar.xz": "fcba4ac2a717762ff1b5fe482a811648837d7dc7bf7b654702c80f2fa044d07d", + + # 17.0.4 + "clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz": "18b326b3e17168fc423726b5059b4d55b6070d49408e51440ad3fca2ebb37779", + "clang+llvm-17.0.4-arm64-apple-darwin22.0.tar.xz": "5d514fa64a290dca53288ce859e6ec59a0b48198b3a5b27ca53b6fe80a977b8d", + "clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz": "6da0b41a942bd5020966511722e8917260349628b6a77aab916ca2c244cecafd", + "clang+llvm-17.0.4-powerpc64-ibm-aix-7.2.tar.xz": "54d4d6b91624597e0c0b15264c4c8e57092f521247b87ba6f1297db339ac6e2b", + "clang+llvm-17.0.4-powerpc64le-linux-rhel-8.8.tar.xz": "2e3ac8b7288ed5d5c3549e457332bbf3c913022fdd7cfbe13fde46448f76d136", + "clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "6b45be6c0483b7ee3f63981678093b731fd9f4ea6987b4ceb6efde21890ffca7", + + # 17.0.5 + "clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz": "ee12126c404d42a0723ff3a4449470b5570fe5ce610be9d9baee88a6d27701d2", + "clang+llvm-17.0.5-arm64-apple-darwin22.0.tar.xz": "6c9aa227800d30d39c28dadbd72c15442e0d9b6813efb2aaa66a478630b7f0c6", + "clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz": "b7978d073e250ed66d5e8a5136026460200db1951ce75d402976fde4c2f0c3d8", + "clang+llvm-17.0.5-powerpc64-ibm-aix-7.2.tar.xz": "b5da095901fe604f562363cf9611d6ca73e13d81831a96518823d690babc608f", + "clang+llvm-17.0.5-powerpc64le-linux-rhel-8.8.tar.xz": "11aace89d7881b694a05d1e93de3c78a31e141d0df1401491d67f73020bc3df2", + "clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "5a3cedecd8e2e8663e84bec2f8e5522b8ea097f4a8b32637386f27ac1ca01818", + + # 17.0.6 + "clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz": "6dd62762285326f223f40b8e4f2864b5c372de3f7de0731cb7cd55ca5287b75a", + "clang+llvm-17.0.6-amd64-pc-solaris2.11.tar.xz": "8feb660750a4d24b18d8e894fbccf26bd0dfbc92581d202ec9057f00f3fbf232", + "clang+llvm-17.0.6-arm64-apple-darwin22.0.tar.xz": "1264eb3c2a4a6d5e9354c3e5dc5cb6c6481e678f6456f36d2e0e566e9400fcad", + "clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz": "7a51ea063f74fb1b7c0389455916cec52c98d1b51da44d6ebc8232014d7af3d1", + "clang+llvm-17.0.6-powerpc64-ibm-aix-7.2.tar.xz": "3aeda4bb5808db2e47bde60cc49b15b869114e3681092413f7b297345d2e13ce", + "clang+llvm-17.0.6-powerpc64le-linux-rhel-8.8.tar.xz": "04e18072797920c2b5e9bdf0c3ee9e5a61adf76bd5ffeb438fafd9e32fc48b62", + "clang+llvm-17.0.6-sparcv9-sun-solaris2.11.tar.xz": "b7df7b383679af98640640f88114f461f38a6efdfe7c369692b0675751ac2773", + "clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "884ee67d647d77e58740c1e645649e29ae9e8a6fe87c1376be0f3a30f3cc9ab3", + + # 18.1.0 + "clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz": "32faaad5b6e072d763a603f7c51e4ee63e2d82c16e945524a539df84e3f2b058", + "clang+llvm-18.1.0-amd64-pc-solaris2.11.tar.xz": "c352b81dd6add029e3def54a7b90387bb1df15f76497adac0b9f305694eb2d8c", + "clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz": "bfbd3bb71f4a1aaf8f1e13cf681e16a54f1029e7f5c85492812bf93a1d893dc8", + "clang+llvm-18.1.0-powerpc64-ibm-aix-7.2.tar.xz": "cc9bcf2b2132c158a71f7f3971d105454131701c25767f97e977c568418aff89", + "clang+llvm-18.1.0-powerpc64le-linux-rhel-8.8.tar.xz": "730c40a0c79d89ca8875c2004fd49180e9b65585b24f68728232b06b3d8bda32", + "clang+llvm-18.1.0-sparcv9-sun-solaris2.11.tar.xz": "e871f472ceafbe0197cff81d7240552e45e55ead00fe82f4fb326af32bbfb657", + "clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz": "0f6d94d9e3eccb5596def41e48b3f8a400f27edc2374e6fc53d0b6baea0d79b3", + "clang+llvm-18.1.0-x86_64-pc-windows-msvc.tar.xz": "d128c0f5f7831c77d549296a910fc9972407ff028b720fb628ffa837ed7ff04e", + + # 18.1.1 + "clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz": "6815ef3c314566605f90cff7922ff3ef5a6eaaf854604e4add6a170e6e98389f", + "clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz": "c87928c9d9d9c4c0eedfed1fb49216b9c52c377ccdd0242f7145401b9aea51f7", + "clang+llvm-18.1.1-powerpc64-ibm-aix-7.2.tar.xz": "c900418e781d0de1f316fcce50ffeca903fa15d97df0dd90f6ac4bd2b43105d4", + "clang+llvm-18.1.1-powerpc64le-linux-rhel-8.8.tar.xz": "7415429a0c0eceeacedc00b3f99f9a869909682fab130c2e514f240379539741", + "clang+llvm-18.1.1-x86_64-pc-windows-msvc.tar.xz": "79ea242c0fbd66c632ed3aaebf6f821c1e4c03140497c67ea750443eb36bfc5d", + + # 18.1.2 + "clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz": "aa9d6c6e70cbe2344be1f4b780525a9a4feb70a6e4fa46ea67822f0e7f839c21", + "clang+llvm-18.1.2-amd64-pc-solaris2.11.tar.xz": "83ca7644b5eebf5ac55014e628d0bbe685a79416d70a0d80d24ece0ddfc05c6d", + "clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz": "5260702615952f25bc715c4aaa286c85d44c20a9a662357a7774841539560fe3", + "clang+llvm-18.1.2-powerpc64-ibm-aix-7.2.tar.xz": "ad7351206905f61933be5937017fc454995d287346f7f0325c48c4552803af87", + "clang+llvm-18.1.2-powerpc64le-linux-rhel-8.8.tar.xz": "0dc4831dab74f47691dab934a52a055ea8fae6bfeec2ed5261991146b38f1cf3", + "clang+llvm-18.1.2-sparcv9-sun-solaris2.11.tar.xz": "b719027e8423296f06375ee151652623b0a1df46848dac0bb2614210e5bd233e", + "clang+llvm-18.1.2-x86_64-pc-windows-msvc.tar.xz": "0f3df344d9342905ba5ee6b6f669468d9c105a5812b794e7898d7b39780ce3ad", + + # 18.1.3 + "clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz": "249418a3b85326ef144349491cbcaf5bf60966d99e9fabbcd1b79edd27d9a722", + "clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz": "130f878a3e58bf8d46ddaf70b35502176df381ba467db8bbd14fb0b7184ff3c8", + "clang+llvm-18.1.3-powerpc64-ibm-aix-7.2.tar.xz": "5123eaa520061794566325e65778e54d8dff47075e859486b8cf860a62e9da62", + "clang+llvm-18.1.3-powerpc64le-linux-rhel-8.8.tar.xz": "a89b38c9cb0fa94873322ddbf57049f3e2615a6fb0ce2769d53ead4806c80797", + + # 18.1.4 + "clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz": "8c2f4d1606d24dc197a590acce39453abe7a302b9b92e762108f9b5a9701b1df", + "clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz": "f7b32c8e02e5821ed6d0062f3b35920796127759d3a14b32928227b7270ce85f", + "clang+llvm-18.1.4-powerpc64-ibm-aix-7.2.tar.xz": "92fe70e845c8d9a881151d33ac3fbab5918a4bd5f9a49605c8e39ef3e66ce32b", + "clang+llvm-18.1.4-powerpc64le-linux-rhel-8.8.tar.xz": "1ebc36b1bc5c6d7238b33bd60d6d6bf6f7880241481ceb54ebf5df44419ce176", + "clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz": "1607375b4aa2aec490b6db51846a04b265675a87e925bcf5825966401ff9b0b1", + "clang+llvm-18.1.4-x86_64-pc-windows-msvc.tar.xz": "4eb5b0c724e79ad7cf4cdc289d5be633d46963b67efce212c75f3742ce0e345e", + + # 18.1.5 + "clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz": "d597fa5f49c6d9f102f042a3ad83e2b5fd1d0597948012a668f902164db9546c", + "clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz": "8defe9bb0212069e4dbb67fb5f48967b33e6bba0a918f08df28dcaf20b507f28", + "clang+llvm-18.1.5-powerpc64-ibm-aix-7.2.tar.xz": "9560cefa86fbf473c1c0fcf4f4d1894733135e241ff3114421b00cee4fc1bfbf", + "clang+llvm-18.1.5-powerpc64le-linux-rhel-8.8.tar.xz": "10c85b809bcf75656ccbd264def39868d08aa30d58ec5b9b463aefed4127f660", + "clang+llvm-18.1.5-x86_64-pc-windows-msvc.tar.xz": "7027f03bcab87d8a72fee35a82163b0730a9c92f5160373597de95010f722935", + + # 18.1.6 + "clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz": "bcb3d53d3bd1027bc7f26544dff8cdc5ff74776add6eb994047326b284147a90", + "clang+llvm-18.1.6-amd64-pc-solaris2.11.tar.xz": "abdf9e930c0069b97cff69156c62e97056f8f9ec24d15cdea743ac555887436e", + "clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz": "30264de61eaed2f860217a71e701d2ce3d1821acea0e0239bc6a8457ff4586f2", + "clang+llvm-18.1.6-powerpc64le-linux-rhel-8.8.tar.xz": "201c8d784acf9e3553a00078bd2e4007134957bd4541706fafe9c7c0583c3cd6", + "clang+llvm-18.1.6-sparcv9-sun-solaris2.11.tar.xz": "da65c1abea553c17fd22ae3de51c70f4ff0789e95019fb4d95f05371b830e090", + "clang+llvm-18.1.6-x86_64-pc-windows-msvc.tar.xz": "479e9e77b9d114721a7168718c894343ac01c397db3499e8a3002ee7a3903d54", + + # 18.1.7 + "clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz": "f0df4a38d4e205ee9dea23fdbe1b3acb0d3174d1366ef1488f1ea619cd6e6c0e", + "clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz": "ed5fb7aa5b66696e4a11a44531c94c2274cbfd92584dac50cbbbc4ed386594c4", + "clang+llvm-18.1.7-powerpc64-ibm-aix-7.2.tar.xz": "a4317fe5bfc5579093f02bc6b63de3d1fa545ebca471405b70ff213d400e8da3", + "clang+llvm-18.1.7-powerpc64le-linux-rhel-8.8.tar.xz": "8889adb5b6a6deffeaffd8c6dc0d2388c26660cb2c357df66b27561c7932ed66", + "clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz": "9aae4d652c438d8c44aaea480e52c7fd9b92f88f1c90673144165c7c8cbf9d28", + "clang+llvm-18.1.7-x86_64-pc-windows-msvc.tar.xz": "be0e2c80de7e5c58d25ca068ddaa41abdabd6edad7ecf899552a97bcd13828ba", + + # 18.1.8 + "clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz": "dcaa1bebbfbb86953fdfbdc7f938800229f75ad26c5c9375ef242edad737d999", + "clang+llvm-18.1.8-arm64-apple-macos11.tar.xz": "4573b7f25f46d2a9c8882993f091c52f416c83271db6f5b213c93f0bd0346a10", + "clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz": "a4fc669dd54030f27e422fa67751509fa14bb90fbef32c2bd24c7f395c93c47c", + "clang+llvm-18.1.8-powerpc64-ibm-aix-7.2.tar.xz": "0bf2df8cc823e1b76b2c42f5e8ac3ef1076865eee87a7098deb227d0f66b7e7c", + "clang+llvm-18.1.8-powerpc64le-linux-rhel-8.8.tar.xz": "b3df0c1607bfb04fe268c2e80542aba6e63ef0766a0bc4100ccf6a1ea99a0a1b", + "clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz": "54ec30358afcc9fb8aa74307db3046f5187f9fb89fb37064cdde906e062ebf36", + "clang+llvm-18.1.8-x86_64-pc-windows-msvc.tar.xz": "22c5907db053026cc2a8ff96d21c0f642a90d24d66c23c6d28ee7b1d572b82e8", + + # 19.1.0 + "LLVM-19.1.0-Linux-X64.tar.xz": "cee77d641690466a193d9b88c89705de1c02bbad46bde6a3b126793c0a0f2923", + "LLVM-19.1.0-Windows-X64.tar.xz": "a132377865d72bc7452343d59d05da63266ffc928b4072d63fb854fd42097dc4", + "LLVM-19.1.0-macOS-ARM64.tar.xz": "9da86f64a99f5ce9b679caf54e938736ca269c5e069d0c94ad08b995c5f25c16", + "LLVM-19.1.0-macOS-X64.tar.xz": "264f2f1e8b67f066749349ae8b4943d346cd44e099464164ef21b42a57663540", + "clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz": "7bb54afd330fe1a1c2d4c593fa1e2dbe2abd9bf34fb3597994ff41e443cf144b", + "clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz": "d2f9f7fe803b38dc2fa64a1b2d1d3356f230f9ba402c321d8615ba3598f5cb66", + "clang+llvm-19.1.0-x86_64-pc-windows-msvc.tar.xz": "de3199fcace428386878e5a98c2be35576459f140f405eddc8b1f8e91f5dae64", + + # 19.1.1 + "LLVM-19.1.1-Linux-X64.tar.xz": "8204de000b6a6921f0572e038336601e3225898e9a253c8aaa43b0a5fae8a4ce", + "LLVM-19.1.1-Windows-X64.tar.xz": "dafd21646d10b7a59cf755002b608a657173c22daf63d99663eb193aedde48c1", + "LLVM-19.1.1-macOS-ARM64.tar.xz": "e00def99a6b32de61fffabd4bb85290589731f3f5cb9836fd51770256cd694dd", + "clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz": "414d2ebef10c5035e9df10a224e81b484dbe17d319373050d0c1b3b1467040d2", + "clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz": "bf63f9092d1cd4c63d1858182ffa2a1713d4f00bc637d4169717bd5c9c905be3", + "clang+llvm-19.1.1-x86_64-pc-windows-msvc.tar.xz": "621fc299fceb1bbdae927e355d1073034c9a1bbdda5a46a27e217c56af72f72a", + + # 19.1.2 + "LLVM-19.1.2-Linux-X64.tar.xz": "5b7fe5b2dbbacadd0fee17ac45103c0393bc4b5a9096506a865aa2fbcba976a7", + "LLVM-19.1.2-Windows-X64.tar.xz": "3aa49c72622c14caabb63f80cc156ce1d6806e12af554754ae1084bd7bc8f6ba", + "LLVM-19.1.2-macOS-ARM64.tar.xz": "62eb2d8e9f610595fc53db020e26e4576c57c5853a55981292f17730916e676d", + "clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz": "eb9ab2b24f4b75f8010feed4a43d5a4ebf3c7e1ccff881e1cdf12a122748e7c4", + "clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz": "5a86ae82efca724882af265e3a8d7a37f09cf217483604882365b6ecb4195f00", + "clang+llvm-19.1.2-x86_64-pc-windows-msvc.tar.xz": "14e764eb79e4ed58da1b88320e33e5eb6c6064103446b47c4439b14292b99d12", + + # 19.1.3 + "LLVM-19.1.3-Linux-X64.tar.xz": "052a5ee117782aab5893dba2cdf2cb97c3d873f7a50ba6b1690594161c75c519", + "LLVM-19.1.3-Windows-X64.tar.xz": "1077267ca353a1e236055ed4b57d6a404d09c40b01bd27dc882870395cdc1aae", + "LLVM-19.1.3-macOS-ARM64.tar.xz": "80a54a467e9e770a76ba9670e89a235224ec47578cc4d4dbd928592813732518", + "LLVM-19.1.3-macOS-X64.tar.xz": "52ea30f3089af4e086a98638a16167c5a20d253d43f7146c058e3e9e6d33274f", + "clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz": "a730175e58233f20a99ecab0015d8cd0f1af5d92411ca1f9e3e472645d889bcd", + "clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz": "b602416a0ea588da73d535050a7efc2b89bc58c69556cd2d828d413c258ba215", + "clang+llvm-19.1.3-x86_64-pc-windows-msvc.tar.xz": "84789dc852e67f8507861a5dea9ed41f11ad7a6c9d3db6d52f04d72b3e4e29d3", + + # 19.1.4 + "LLVM-19.1.4-Linux-X64.tar.xz": "da7e0f571b440e5ef9ae6e061ae6afc1071179e18f86f77cf630dabbed11a5f6", + "LLVM-19.1.4-macOS-ARM64.tar.xz": "52245bc374fdb9f3665046fe7319b5b8165ca2732053c74f06ba1e90e142ed8e", + "LLVM-19.1.4-macOS-X64.tar.xz": "eedb896c193cc3bad35a9f132d91e16cf73d33723f35d63dcaae4755872674c2", + "clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz": "c42ea92e7a4cfad96b2b0d6c7872c6e9a9960a1d8a56c1847eca45d79cd67533", + "clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz": "1725f51a2be83feb9e7d2c393e179fa646f85eb80d17dca8b1c65bcee43455a4", + "clang+llvm-19.1.4-x86_64-pc-windows-msvc.tar.xz": "5e965a1281c9df1fda8eddab3752ee6a3139e36ce469537f216cd938c498e6c3", + + # 19.1.5 + "LLVM-19.1.5-Linux-X64.tar.xz": "13e9975b026d431c945927960e5f8c0a47a155a2f600f57e85f4d1482620c65f", + "LLVM-19.1.5-macOS-X64.tar.xz": "f593d45992807d03c2aeb4c968c5cab9e78403430caea21dca4b787cbca3b9f4", + "clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz": "1bdc342b7d03cbcfafb2ffb8659eb0e4d5c6ddef6f56e0cad0e0c09c52577a4f", + "clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz": "f0058f9fc80dd939609a1ac2cbf791bbaf3e66ee56eb320b93f1494f3478cb57", + "clang+llvm-19.1.5-x86_64-pc-windows-msvc.tar.xz": "467d1a73ca938f47734af3baac2e78c5e730285469096ee088bb5c9590cabd70", + + # 19.1.6 + "LLVM-19.1.6-Linux-X64.tar.xz": "d55dcbb309de7ade4e3073ec3ac3fac4d3ff236d54df3c4de04464fe68bec531", + "LLVM-19.1.6-macOS-ARM64.tar.xz": "2c28bcd132ce3db367354c892839a962aa01b7b850a25e61316178f2ac72ecac", + "LLVM-19.1.6-macOS-X64.tar.xz": "58ce29a2adb82872b6de49018091c6d844ca555a9b017faa698f6df409b25281", + "clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz": "f6fd8cf8bb12f507c4a55609ef6a435b3c59bc658008b712b80ec1cdc1ee9325", + "clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz": "3ce188e3394c2bf2d2f2ec1c63f4e450e10092d642953d1b73940cfe9213f9ba", + "clang+llvm-19.1.6-x86_64-pc-windows-msvc.tar.xz": "d2e64d4d6eca9199ea5b8ac018e626fe2f2814ab90247c335fc9fd7448681bb3", + + # 19.1.7 + "LLVM-19.1.7-Linux-X64.tar.xz": "4a5ec53951a584ed36f80240f6fbf8fdd46b4cf6c7ee87cc2d5018dc37caf679", + "LLVM-19.1.7-macOS-ARM64.tar.xz": "d93bf12952d89fe4ec7501c40475718b722407da6a8d651f05c995863468e570", + "LLVM-19.1.7-macOS-X64.tar.xz": "49405e75fbe7ad6f8139a33f59ec8c5112b75b3027405c7b92d19f4c6f02c78a", + "clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz": "a73d9326e5d756e3937df6a9f621664d76403b59119f741901106b387e53a6ae", + "clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz": "dedde2acbc164649b77d6f6635e8551218c9aed5a6df4c09b2614aaccc0c05b2", + "clang+llvm-19.1.7-x86_64-pc-windows-msvc.tar.xz": "b4557b4f012161f56a2f5d9e877ab9635cafd7a08f7affe14829bd60c9d357f0", + + # 20.1.0 + "LLVM-20.1.0-Linux-ARM64.tar.xz": "9d1bbf3f6d4d011e3b8b4b585f686bc968474917f37d3b82b4a534f456168c67", + "LLVM-20.1.0-Linux-X64.tar.xz": "954ac51498519f6ed9540714fb04bc401f70039b296a8160dd1559be380788d7", + "LLVM-20.1.0-macOS-ARM64.tar.xz": "2c42ec26ec50c4bf8b95585f762b9d2f5b385d170dee772d9c1d6c9a7190dcef", + "clang+llvm-20.1.0-aarch64-pc-windows-msvc.tar.xz": "f52e40d68843ed6205858e817ed791295ef51e526037186352a1aeac4a59e51a", + "clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz": "487d38a49bd64ef03b46ce1dc6f32645052ded09f96ada847e4f46e69c799d01", + "clang+llvm-20.1.0-x86_64-pc-windows-msvc.tar.xz": "91e29416f4a0c188368f0540a5538efc0d8a9f7134afba7a2160296472ce84eb", + + # 20.1.1 + "LLVM-20.1.1-Linux-ARM64.tar.xz": "09f5a08ef6c96a7c6c11258b3053ae5ed11a6717ffd9fd01bbebd75d8038a0fc", + "LLVM-20.1.1-Linux-X64.tar.xz": "b1f40360adbf31934d5d3d999c5f91f7e52e089ae984d237565cc4c23bbfa283", + "LLVM-20.1.1-macOS-ARM64.tar.xz": "ae52012b28bb43e1aa698aa347e37d06edb4643895b8bb189ed275025cd349ed", + "clang+llvm-20.1.1-aarch64-pc-windows-msvc.tar.xz": "6ee4c1a8c51cf081e19a7225d802d160cc888cdc3a8da07dcbdb5768e3160244", + "clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz": "c443e13fc8293f688acdd1d715cb56cd36c763a0525b86265417d57cdfa42994", + "clang+llvm-20.1.1-x86_64-pc-windows-msvc.tar.xz": "f8114cb674317e8a303731b1f9d22bf37b8c571b64f600abe528e92275ed4ace", + + # 20.1.2 + "LLVM-20.1.2-Linux-ARM64.tar.xz": "41a6a2892cf66cd7c275753f2d1afe0e33b26c9674eff7d114fb36a52253436a", + "LLVM-20.1.2-Linux-X64.tar.xz": "3a392f151375eeed4fd50c6b6f7c7203da37b373a57f220ae58ef62b8aade3cc", + "LLVM-20.1.2-macOS-ARM64.tar.xz": "e502de0ccaa12dec9b7499c9e15e896006feda438078aba8b97894ae3218d4e3", + "clang+llvm-20.1.2-aarch64-pc-windows-msvc.tar.xz": "cb82f730a7d0d70866d4228fedafb8aca36d7dc3fd8a74a570f72ed95a52d5ed", + "clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz": "79ea2536f45a9f4c3fa89c3c03dae29be2e5fcd1bea2e163939ba527aa913219", + "clang+llvm-20.1.2-x86_64-pc-windows-msvc.tar.xz": "8e771a685cd718303ea0d632a8a95ad7b3cb17068f3952fbefa64a77290324d8", + + # 20.1.3 + "LLVM-20.1.3-Linux-ARM64.tar.xz": "a9030b70bd8e1d8fe1e48d7b32c8328f2861f00e8474b22105037235a5774bcf", + "LLVM-20.1.3-Linux-X64.tar.xz": "c75103f520626cd2137a7e907998f12fff64136514ade1bb0a259995ae2de80e", + "LLVM-20.1.3-macOS-ARM64.tar.xz": "70cd48fcd6b838690149bd00a85270d054c1c410d430f7c51f6d6e9019790d62", + "LLVM-20.1.3-macOS-X64.tar.xz": "c3043862e4715ed3dc9f2c83e2a600e75ffecc005b977a391af50664a63fed2b", + "clang+llvm-20.1.3-aarch64-pc-windows-msvc.tar.xz": "fcbbd259fc4430f96f4a1ee51bc41038cd1e93138675d2f46baa2d479f0eb306", + "clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz": "fc6ebfbabbbfea74f164f7c19ae953bcf066d34d348c6ef758d32fb87872b9e3", + "clang+llvm-20.1.3-x86_64-pc-windows-msvc.tar.xz": "3831e10ca8409e2288d70491c2fd925f5d5f9b644abf4553552887ff9ce32798", + + # 20.1.4 + "LLVM-20.1.4-Linux-ARM64.tar.xz": "4de80a332eecb06bf55097fd3280e1c69ed80f222e5bdd556221a6ceee02721a", + "LLVM-20.1.4-Linux-X64.tar.xz": "113b54c397adb2039fa45e38dc8107b9ec5a0baead3a3bac8ccfbb65b2340caa", + "LLVM-20.1.4-macOS-ARM64.tar.xz": "debb43b7b364c5cf864260d84ba1b201d49b6460fe84b76eaa65688dfadf19d2", + "clang+llvm-20.1.4-aarch64-pc-windows-msvc.tar.xz": "5ebb023bd1470333ef4292b712bd35eed12a93ac5a81cec2e6718d0dc7142a70", + "clang+llvm-20.1.4-armv7a-linux-gnueabihf.tar.gz": "0ddd789fba0e2de8b22ba07a62293140c0232e90aa2e809731e951d7cf3cbc3c", + "clang+llvm-20.1.4-x86_64-pc-windows-msvc.tar.xz": "2b12ac1a0689e29a38a7c98c409cbfa83f390aea30c60b7a06e4ed73f82d2457", + + # 20.1.5 + "LLVM-20.1.5-Linux-ARM64.tar.xz": "a6b8679be46bdaa383e0c7f13a473ca8f7a4f87233f2cc0e0a7ab19e1b6265e7", + "LLVM-20.1.5-Linux-X64.tar.xz": "0a764a8ca521606532ca9ec4e5745c933b16b7d30f4701a47ee851d448fcdb74", + "clang+llvm-20.1.5-aarch64-pc-windows-msvc.tar.xz": "5916d93bf80e3ae504022cdd8cb8887be001f9b68a7a08bd268727e8d858afa4", + "clang+llvm-20.1.5-armv7a-linux-gnueabihf.tar.gz": "80d4b593ecc32bb4289ce75e2b4572c0b6f27e1ceba8ce362c37469c480d3140", + "clang+llvm-20.1.5-x86_64-pc-windows-msvc.tar.xz": "b8e566c0ccf948a5e5946bc0c9d16110b937991816c8f46b9c8b3d1cd9ac7c9a", + + # 20.1.6 + "LLVM-20.1.6-Linux-ARM64.tar.xz": "f7c2851771cf26af3e2196e3be060cdafe7ea2e04db24bbd736aea0d2c95e3e9", + "LLVM-20.1.6-Linux-X64.tar.xz": "8ecc9878e3d99c8f1db25e5564d12900b4a1fc947f62b8cd01135fd0b15220e4", + "clang+llvm-20.1.6-aarch64-pc-windows-msvc.tar.xz": "f33460a63ed868374b1a207bcc2d4d3eb0753b77c12aa0b138886c2376f3c894", + "clang+llvm-20.1.6-armv7a-linux-gnueabihf.tar.gz": "c811bb8c63af8884ee5be27516fbb1733b14634ed71617abf9761ddbab08a3fe", + "clang+llvm-20.1.6-x86_64-pc-windows-msvc.tar.xz": "86345035d5ecc482ff391c3270fe37ba9f53e241e7c419f0d7bab9b7c7c57df0", + + # 20.1.7 + "LLVM-20.1.7-Linux-ARM64.tar.xz": "832f2802a29457dc758f56e26e98558c6cd0e45fcd07186f540cb6e7f4e59385", + "LLVM-20.1.7-Linux-X64.tar.xz": "8494c98a774051a40bfe1187a2d6442f4bc107598998bbe1673d9bb1572cfd6f", + "LLVM-20.1.7-macOS-ARM64.tar.xz": "6aa75de00575ad0663183b00f00f39992ded611b5136e57649ace1e6a53c0d16", + "LLVM-20.1.7-macOS-X64.tar.xz": "ccf82ffe7e136ee49659cb57157856a7963d0950fac3d05aabba0db75bfba26f", + "clang+llvm-20.1.7-aarch64-pc-windows-msvc.tar.xz": "4fac201fc680a1a9b4a21cf0f3be522dc31951d39d709a62a2827347ecffc72e", + "clang+llvm-20.1.7-armv7a-linux-gnueabihf.tar.gz": "c69e642b93f7dff28ab5278b1d32e1ac1ce51ffc32f264ef4962c749c41424af", + "clang+llvm-20.1.7-x86_64-pc-windows-msvc.tar.xz": "34a66bb4891584b32d32bbe5f129e345899b255593dab2c359b730b92e304b3e", + + # 20.1.8 + "LLVM-20.1.8-Linux-ARM64.tar.xz": "b855cc17d935fdd83da82206b7a7cfc680095efd1e9e8182c4a05e761958bef8", + "LLVM-20.1.8-Linux-X64.tar.xz": "1ead36b3dfcb774b57be530df42bec70ab2d239fbce9889447c7a29a4ddc1ae6", + "LLVM-20.1.8-macOS-ARM64.tar.xz": "a9a22f450d35f1f73cd61ab6a17c6f27d8f6051d56197395c1eb397f0c9bbec4", + "clang+llvm-20.1.8-aarch64-pc-windows-msvc.tar.xz": "0df3e81e8fe26370dd2b60b9e009d81cd130d3fdc41b257434aa663c5d9f0c13", + "clang+llvm-20.1.8-armv7a-linux-gnueabihf.tar.gz": "d2060f7a2259d95d121e6a2ceaa948b7d724c497e6e0b752e39086eaaf1675c6", + "clang+llvm-20.1.8-x86_64-pc-windows-msvc.tar.xz": "f229769f11d6a6edc8ada599c0cda964b7dee6ab1a08c6cf9dd7f513e85b107f", + + # 21.1.0 + "LLVM-21.1.0-Linux-ARM64.tar.xz": "ffd51d9a583c1f662abc101f3a125d7303b21ad7d4e15773c8ad2c14cf621d5e", + "LLVM-21.1.0-Linux-X64.tar.xz": "4a8c4b07646a4a2eb76ccf1d73522c3e13519745b72ef09d631c09b7577b0ed2", + "clang+llvm-21.1.0-aarch64-pc-windows-msvc.tar.xz": "c2869e4173ed18185fa599174faeedab3fdaaf1fd86926d4b62df9bf137bef53", + "clang+llvm-21.1.0-armv7a-linux-gnueabihf.tar.gz": "41fcc7c995b1aa1ba4e9d771796a5997d9582a710fc15e86cc8a881323d8eca8", + "clang+llvm-21.1.0-x86_64-pc-windows-msvc.tar.xz": "751aab63f074f041883a5317ad100dbe1e60794693f896df83958824cbc4962a", + + # 21.1.1 + "LLVM-21.1.1-Linux-ARM64.tar.xz": "2764bb49ad4dab93226328d6374ca4466799bdc18372c544d8f6ebc1aa0c28a9", + "LLVM-21.1.1-Linux-X64.tar.xz": "fe9886992273e469fbd664851cbee2f125b383664694684923a41af1c71b9632", + "clang+llvm-21.1.1-aarch64-pc-windows-msvc.tar.xz": "93c0b2e9db00343f991cbcae11072165f19c8729440f32f8ad43f130aa96dd39", + "clang+llvm-21.1.1-armv7a-linux-gnueabihf.tar.gz": "f4f96938e2610fb4c810c81c7c128c64e82cccbc59839166af0bb5d976b595d5", + "clang+llvm-21.1.1-x86_64-pc-windows-msvc.tar.xz": "2a5b94a59270d6c60128d5cac244dc898fcf061a72de1633554e98881f8ade55", + + # 21.1.2 + "LLVM-21.1.2-Linux-ARM64.tar.xz": "b16c36731eabdc3cbe7f265e241efdb9aa6ab7c4be4114763c356da1392aac73", + "LLVM-21.1.2-Linux-X64.tar.xz": "38dc1e278b8d688d9f4f1077da1dcda623d9e0dd89ffcf03bc18d3492bbd9cb6", + "clang+llvm-21.1.2-aarch64-pc-windows-msvc.tar.xz": "6b8e9f70ed82fe13116eda6e370ac3fab88989bceec19eb53060239f8366bea0", + "clang+llvm-21.1.2-armv7a-linux-gnueabihf.tar.gz": "1d006e4fd478c35c46482cf2105a0c8c5239660bb7bbc42bcd653294c1770638", + "clang+llvm-21.1.2-x86_64-pc-windows-msvc.tar.xz": "929c60a1342ced5641ddbef709d3e5a0fbe291686800e9f5b543aa88b8d43019", + + # 21.1.3 + "LLVM-21.1.3-Linux-ARM64.tar.xz": "563be4f9f9186c909e5de937b2097338132422957c7919a29d8ff524a32213c0", + "LLVM-21.1.3-Linux-X64.tar.xz": "52866dc560a4c00c12fed63a006d629108117e2282fd37875887961dd7b5f6f8", + "clang+llvm-21.1.3-aarch64-pc-windows-msvc.tar.xz": "92a31b521daf34c7f80a808cf023ab6bd9dfe1e81b05b25920dd5812c5d371ad", + "clang+llvm-21.1.3-armv7a-linux-gnueabihf.tar.gz": "cf14b3c5fa7d310a1b1a1efacc21f65cb50721713a8751d77906e40f0b339462", + "clang+llvm-21.1.3-x86_64-pc-windows-msvc.tar.xz": "95dc158e0b9dbeb32833096bec05040b5c847b4cb71bf0a304e51832a5fe5ff3", + + # 21.1.4 + "LLVM-21.1.4-Linux-ARM64.tar.xz": "b1cdf40de4dc53fc090684fb6a160c0c9348242d85d2321441a9873cb116ea18", + "LLVM-21.1.4-Linux-X64.tar.xz": "53c8d9a173c39c952ae367974b0b9c1dcfddeb81341c3d0553748e8407abe9f8", + "clang+llvm-21.1.4-aarch64-pc-windows-msvc.tar.xz": "ee0f0517e2ceeb6f45221841ab43ab875e29d086dfb8ecb2f8e5c27667cb588d", + "clang+llvm-21.1.4-armv7a-linux-gnueabihf.tar.gz": "5921213cd8f9acce09305e2143edc066051afd2ebc31be3bfcf07d276d777678", + "clang+llvm-21.1.4-x86_64-pc-windows-msvc.tar.xz": "511e4e7e0a43156cb1410578285f1db246ebb400db0018cd304c84a369562b6d", + + # 21.1.5 + "clang+llvm-21.1.5-aarch64-pc-windows-msvc.tar.xz": "sha256:dcc7a6f9e3ff02f5b49b23e6f91abe2f9431972d72ab59f7b7d9f8b436ea1ca3", + "clang+llvm-21.1.5-armv7a-linux-gnueabihf.tar.gz": "sha256:42a964c0ea68764ef8e222f5f979a400a803a912e5df273358652d4017ca3411", + "clang+llvm-21.1.5-x86_64-pc-windows-msvc.tar.xz": "sha256:eba824f1379fdb1a385f6dff8d19275a57348f621c752ce93b6d11256741e349", + "LLVM-21.1.5-Linux-ARM64.tar.xz": "sha256:c9a1ee5d1a1698a8eb0abda1c1e44c812378aec32f89cc4fbbb41865237359a9", + "LLVM-21.1.5-Linux-X64.tar.xz": "sha256:6279d78feeeb8e839a397f0bca7b1c0594972224d59525496416653d9b9c077f", + + # 21.1.6 + "clang+llvm-21.1.6-x86_64-pc-windows-msvc.tar.xz": "sha256:6fd57e4461f4f30913c6a345dd093d71df963aaf94f1ec80bb5cfb24ebb047a1", + "LLVM-21.1.6-Linux-ARM64.tar.xz": "sha256:1d8a9e05007b8b9005c63f90d7646b2b6263451d605cca070418d0a71e669377", + "LLVM-21.1.6-Linux-X64.tar.xz": "sha256:8ac1aadfa96b87b8747f7383d06ed9579f9d5c32a1af7af947b0cfe29d88ac87", + "LLVM-21.1.6-macOS-ARM64.tar.xz": "sha256:bdf036e9987b8706471b565f50178a34218909b1858a82c426269da49780b6ba", + + # 21.1.7 + "clang+llvm-21.1.7-aarch64-pc-windows-msvc.tar.xz": "sha256:4b752962007c26565f86598d963b464c90b31a0ac758f73676f143b03f77d578", + "clang+llvm-21.1.7-armv7a-linux-gnueabihf.tar.gz": "sha256:b1a89d5832ae330e1cc2a60e6f93015fdd3eb0da70342f4c4213176993ecaa80", + "clang+llvm-21.1.7-x86_64-pc-windows-msvc.tar.xz": "sha256:70a2b73f2f14f787557f90abf380e7170b54e97b893218999144de5284b4f8f8", + "LLVM-21.1.7-Linux-ARM64.tar.xz": "sha256:aa85ddc8ba95ac5f2febddb51a6891ee0e57ac058c6455395d5a4bfa5650d44b", + "LLVM-21.1.7-Linux-X64.tar.xz": "sha256:621ab8424178ffc28db0facc5aefd3fc11f5dea339aac171b36fa0b8d4b368cb", + + # 21.1.8 + "LLVM-21.1.8-Linux-ARM64.tar.xz": "sha256:65ce0b329514e5643407db2d02a5bd34bf33d159055dafa82825c8385bd01993", + "LLVM-21.1.8-Linux-X64.tar.xz": "sha256:b3b7f2801d15d50736acea3c73982994d025b01c2f035b91ae3b49d1b575732b", + "LLVM-21.1.8-macOS-ARM64.tar.xz": "sha256:b95bdd32a33a81ee4d40363aaeb26728a26783fcef26a4d80f65457433ea4669", + + # Refer to variable declaration on how to update! + # Example update (without download): utils/llvm_checksums.sh -D -g -t /tmp/llvm -v 21.1.5 } # Note: Unlike the user-specified llvm_mirror attribute, the URL prefixes in # this map are not immediately appended with "/". This is because LLVM prebuilt # URLs changed when they switched to hosting the files on GitHub as of 10.0.0. +_llvm_distributions_base_url_default = "https://github.com/llvm/llvm-project/releases/download/llvmorg-" _llvm_distributions_base_url = { "6.0.0": "https://releases.llvm.org/", "6.0.1": "https://releases.llvm.org/", @@ -292,26 +745,27 @@ _llvm_distributions_base_url = { "8.0.0": "https://releases.llvm.org/", "8.0.1": "https://releases.llvm.org/", "9.0.0": "https://releases.llvm.org/", - "10.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "10.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "11.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "11.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "11.1.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "12.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "12.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "13.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "13.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "14.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "15.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "15.0.6": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "15.0.7": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "16.0.0": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "16.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "16.0.2": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "16.0.3": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", - "16.0.4": "https://github.com/llvm/llvm-project/releases/download/llvmorg-", } +def _parse_version(v): + return tuple([int(s) for s in v.split(".")]) + +def _version_string(version): + return ".".join([str(v) for v in version]) + +def _distribution_basename(distribution): + return distribution.split("?", 1)[0].split("#", 1)[0].split("/")[-1].split("\\")[-1].replace("%2B", "+") + +def _distribution_version_string(distribution): + # We assume here that the `distribution` contains a basename of the forms: + # - `LLVM--...`, or + # - `clang+llvm--...`. + return _distribution_basename(distribution).split("-", 2)[1] + +def _distribution_version(distribution): + # Return the version string of a distribution. + return _parse_version(_distribution_version_string(distribution)) + def _get_auth(ctx, urls): """ Given the list of URLs obtain the correct auth dict. @@ -334,8 +788,30 @@ def _get_auth(ctx, urls): return {} +def _strip_prefix(*, basename, strip_suffix = ""): + for suffix in [".exe", ".tar.gz", ".tar.xz", ".tar.zst"]: + if basename.endswith(suffix): + return basename.removesuffix(suffix).rstrip(strip_suffix) + fail("Unknown URL file extension {url}", url = basename) + +def _full_url(url): + if url.startswith("/"): + return "file://" + url + return url + +def _normalize_and_check_sha256(sha256): + if sha256: + sha256 = sha256.removeprefix("sha256:") + if len(sha256) != 64: + return None, "Attribute sha256 needs exactly 64 hex characters." + return sha256, None + def download_llvm(rctx): + """Download the LLVM distribution for the given context.""" urls = [] + sha256 = None + strip_prefix = None + key = None update_sha256 = False if rctx.attr.urls: urls, sha256, strip_prefix, key = _urls(rctx) @@ -344,26 +820,40 @@ def download_llvm(rctx): if not urls: urls, sha256, strip_prefix = _distribution_urls(rctx) + sha256, shaerr = _normalize_and_check_sha256(sha256) + if shaerr: + fail("ERROR: " + shaerr) + res = rctx.download_and_extract( - urls, + [_full_url(url) for url in urls], sha256 = sha256, stripPrefix = strip_prefix, auth = _get_auth(rctx, urls), ) - updated_attrs = _attr_dict(rctx.attr) + if rctx.attr.libclang_rt: + clang_versions = rctx.path("lib/clang").readdir() + for libclang_rt, lib_name in rctx.attr.libclang_rt.items(): + libclang_rt_content = rctx.read(libclang_rt) + for clang_version in clang_versions: + lib_path = clang_version.get_child("lib", lib_name) + rctx.file(lib_path, libclang_rt_content, legacy_utf8 = False) + + updated_attrs = attr_dict(rctx.attr) if update_sha256: updated_attrs["sha256"].update([(key, res.sha256)]) return updated_attrs -def _urls(rctx): - (key, urls) = _host_os_arch_dict_value(rctx, "urls", debug = True) - if not urls: - print("LLVM archive URLs missing and no default fallback provided; will try 'distribution' attribute") - +def _key_attrs(rctx): + key, urls = exec_os_arch_dict_value(rctx, "urls", debug = False) sha256 = rctx.attr.sha256.get(key, default = "") strip_prefix = rctx.attr.strip_prefix.get(key, default = "") + return urls, sha256, strip_prefix, key +def _urls(rctx): + urls, sha256, strip_prefix, key = _key_attrs(rctx) + if not urls: + print("LLVM archive URLs missing and no default fallback provided; will try 'distribution' attribute") # buildifier: disable=print return urls, sha256, strip_prefix, key def _get_llvm_version(rctx): @@ -371,21 +861,481 @@ def _get_llvm_version(rctx): return rctx.attr.llvm_version if not rctx.attr.llvm_versions: fail("Neither 'llvm_version' nor 'llvm_versions' given.") - (key, llvm_version) = _host_os_arch_dict_value(rctx, "llvm_versions") + (_, llvm_version) = exec_os_arch_dict_value(rctx, "llvm_versions") if not llvm_version: - fail("LLVM version string missing for ({os}, {arch})", os=_os(rctx), arch=_arch(rctx)) + info = host_info(rctx) + fail( + "LLVM version string missing for ({os}/{dist_name}/{dist_verison}, {arch})", + os = info.os, + dist_name = info.dist.name, + dist_version = info.dist.version, + arch = info.arch, + ) return llvm_version +def _get_all_llvm_distributions(*, llvm_distributions, extra_llvm_distributions, parsed_llvm_version): + distributions = {} + for dist, sha256 in llvm_distributions.items() + (extra_llvm_distributions.items() if extra_llvm_distributions else []): + basename = _distribution_basename(dist) + version = _distribution_version(basename) + if parsed_llvm_version and parsed_llvm_version != version: + continue + distributions[basename] = struct( + distribution = basename, + sha256 = sha256, + version = version, + ) + return distributions + +_UBUNTU_NAMES = [ + "arch", + "chainguard", + "linuxmint", + "manjaro", + "nixos", + "pop", + "ubuntu", + "wolfi", +] + +_UBUNTU_VERSIONS = [ + "linux-ubuntu-20.04", + "linux-ubuntu-18.04", + "linux-ubuntu-18.04.6", + "linux-ubuntu-18.04.5", + "linux-ubuntu-16.04", + "linux-gnu-ubuntu-22.04", + "linux-gnu-ubuntu-20.10", + "linux-gnu-ubuntu-20.04", + "linux-gnu-ubuntu-18.04", + "linux-gnu-ubuntu-16.04", + "linux-gnu-ubuntu-14.04", + "linux-ubuntu-", # Version prefix to catch other versions. + "linux-gnu-ubuntu-", # Version prefix to catch other versions. + "linux-gnu", + "unknown-linux-gnu", + "unknown-linux-gnu-rhel86", +] + +def _is_linux_dist(dist): + # Note: Both Ibm-AIX and Solaris have compatibility functionality that may + # make them accept linux code. For Solaris that stopped in newer versions. + # For Ibm-AIX that seems uncommon, so we ask to manually specify instead of + # manual identifying. + if "ibm-aix" in dist.name: + return False + if "solaris" in dist.name: + return False + return True + +def _dist_to_os_names(dist, default_os_names = []): + if not _is_linux_dist(dist): + return [dist.name] + if dist.name in ["amzn", "suse"]: + # For "amzn" based on the ID_LIKE field, sles seems like the closest + # available distro for which LLVM releases are widely available. + return [ + # The order is important here as we want to find the best match + # without implmenting complex version comparisons. + "linux-sles" + dist.version, + "linux-sles12.4", + "linux-sles12.3", + "linux-sles12.2", + "linux-sles11.3", + "linux-sles", + # The below rhel/ubuntu selection implements backwards compatibility + # with the old predictions. However suse is not close to either. So + # We are not using `_UBUNTU_VERSIONS` here. + "unknown-linux-gnu-rhel86", + "linux-gnu-ubuntu-24.04", + "linux-gnu-ubuntu-22.04", + "linux-gnu-ubuntu-20.04", + "linux-gnu-ubuntu-18.04", + "linux-gnu-ubuntu-16.04", + "linux-gnu-ubuntu-", + ] + if dist.name == "centos": + return [ + "linux-gnu", + "unknown-linux-gnu", + # The below ubuntu selection implements backwards compatibility + # with the old predictions. However suse is not close to either. So + # We are not using `_UBUNTU_VERSIONS` here. + "linux-gnu-ubuntu-22.04", + "linux-gnu-ubuntu-20.04", + "linux-gnu-ubuntu-18.04", + "linux-gnu-ubuntu-16.04", + ] + if dist.name == "fedora": + return [ + "linux-gnu-Fedora27", + "unknown-linux-gnu-rhel86", + "linux-gnu", + "unknown-linux-gnu", + ] + _UBUNTU_VERSIONS + if dist.name == "freebsd": + return ["unknown-freebsd", "unknown-freebsd-"] + if dist.name == "raspbian": + return ["linux-gnueabihf", "linux-gnu"] + if dist.name in ["rhel", "ol", "almalinux"]: + return [ + "linux-rhel-", + "linux-gnu-rhel-", + ] + _UBUNTU_VERSIONS + if dist.name == "debian": + return [ + "linux-gnu-debian8", + ] + _UBUNTU_VERSIONS + if dist.name in _UBUNTU_NAMES: + return [ + "linux-gnu-ubuntu-" + dist.version, + "linux-ubuntu-" + dist.version, + ] + _UBUNTU_VERSIONS + return default_os_names + +def _find_llvm_basenames_by_stem(*, prefixes, all_llvm_distributions, is_prefix = False, return_first_match = False): + basenames = [] + for prefix in prefixes: + for suffix in [".tar.gz", ".tar.xz"]: + basename = prefix + suffix + if basename in all_llvm_distributions: + return [basename] + if not is_prefix: + continue + for basename in all_llvm_distributions.keys(): + if not basename.startswith(prefix): + continue + for suffix in [".tar.gz", ".tar.xz"]: + if basename.endswith(suffix) and basename not in basenames: + basenames.append(basename) + if return_first_match: + return basenames + return basenames + +def _find_llvm_basename_list(llvm_version, all_llvm_distributions, host_info): + """Lookup (llvm_version, host_info) in `all_llvm_distributions.`""" + arch = host_info.arch + os = host_info.os + dist = host_info.dist + + # Prefer new LLVM distributions if available + if os != "linux" or _is_linux_dist(dist): + basenames = _find_llvm_basenames_by_stem( + prefixes = [ + "LLVM-{llvm_version}-{os}-{arch}".format( + llvm_version = llvm_version, + arch = { + "aarch64": "ARM64", + "x86_64": "X64", + }.get(arch, arch), + os = { + "darwin": "macOS", + "linux": "Linux", + "windows": "Windows", + }.get(os, os), + ), + ], + all_llvm_distributions = all_llvm_distributions, + ) + if basenames: + return basenames + + # First by 'os'', then by 'dist', then the remaining Linux variants'... + if os == "darwin": + return _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{os}".format( + llvm_version = llvm_version, + arch = { + "aarch64": "arm64", + }.get(arch, arch), + os = select_os, + ) + for select_os in ["apple-darwin", "apple-macos", "darwin-apple"] + ], + all_llvm_distributions = all_llvm_distributions, + is_prefix = True, + ) + elif os == "windows": + return _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{os}".format( + llvm_version = llvm_version, + arch = arch, + os = "pc-windows-msvc", + ), + ], + all_llvm_distributions = all_llvm_distributions, + ) + elif dist.name == "raspbian": + return _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{os}".format( + llvm_version = llvm_version, + arch = arch, + os = select_os, + ) + for select_os in _dist_to_os_names(dist) + ], + all_llvm_distributions = all_llvm_distributions, + ) + elif os == "linux": + if arch in ["aarch64", "armv7a", "mips", "mipsel", "sparc64", "sparcv9"]: + arch_alias_list = { + "sparc64": ["sparc64", "sparcv9"], + "sparcv9": ["sparcv9", "sparc64"], + }.get(arch, [arch]) + os_name_list = _dist_to_os_names(dist) + os_name_extra_list = [] + if _is_linux_dist(dist) and [os for os in os_name_list if "linux" in os]: + os_name_extra_list = ["linux-gnu", "unknown-linux-gnu"] + basenames = _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{os}".format( + llvm_version = llvm_version, + arch = arch_alias, + os = os_name, + ) + for arch_alias in arch_alias_list + for os_name in os_name_list + os_name_extra_list + ], + all_llvm_distributions = all_llvm_distributions, + ) + if basenames or not os_name_list: + return basenames + return _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{os}".format( + llvm_version = llvm_version, + arch = arch_alias, + os = os_name, + ) + for arch_alias in arch_alias_list + for os_name in os_name_list + ], + all_llvm_distributions = all_llvm_distributions, + is_prefix = True, + ) + + arch_alias_list = { + "x86_32": ["x86_32", "i386", "i686"], + "x86_64": ["x86_64", "amd64"], + "powerpc64": ["powerpc64", "final_powerpc64"], + }.get(arch, [arch]) + + prefixes = [] + for dist_name in _dist_to_os_names(dist, [dist.name]): + for arch_alias in arch_alias_list: + basenames = _find_llvm_basenames_by_stem( + prefixes = [ + "clang+llvm-{llvm_version}-{arch}-{dist_name}{dist_version}".format( + llvm_version = llvm_version, + arch = arch_alias, + dist_name = dist_name, + dist_version = dist.version, + ), + ], + all_llvm_distributions = all_llvm_distributions, + ) + if basenames: + return basenames + if dist.name not in ["freebsd"]: + prefixes.append("clang+llvm-{llvm_version}-{arch}-{dist_name}".format( + llvm_version = llvm_version, + arch = arch_alias, + dist_name = dist_name, + )) + return _find_llvm_basenames_by_stem(prefixes = prefixes, all_llvm_distributions = all_llvm_distributions, is_prefix = True, return_first_match = True) + return [] + +def _find_llvm_basename_or_error(llvm_version, all_llvm_distributions, host_info): + all_llvm_distributions = _filter_llvm_distributions( + llvm_version = llvm_version, + all_llvm_distributions = all_llvm_distributions, + ) + basenames = _find_llvm_basename_list(llvm_version, all_llvm_distributions, host_info) + if len(basenames) > 1: + return None, "ERROR: Multiple configurations found for version {llvm_version} on {os}/{dist_name}/{dist_version} with arch {arch}: [{basenames}].".format( + llvm_version = llvm_version, + os = host_info.os, + dist_name = host_info.dist.name, + dist_version = host_info.dist.version, + arch = host_info.arch, + basenames = ", ".join(basenames), + ) + if not basenames: + return None, "ERROR: No matching config could be found for version {llvm_version} on {os}/{dist_name}/{dist_version} with arch {arch}.".format( + llvm_version = llvm_version, + os = host_info.os, + dist_name = host_info.dist.name, + dist_version = host_info.dist.version, + arch = host_info.arch, + ) + + # Use the following for debugging: + # print("Found LLVM: " + basenames[0]) # buildifier: disable=print + if basenames[0] not in all_llvm_distributions: + return None, "ERROR: Unknown LLVM release: %s\nPlease ensure file name is correct." % basenames[0] + + return basenames[0], None + +def _is_requirement(version_or_requirements): + """Return whether `version_or_requirements` is likely a requirement (True) or should be a version.""" + if not version_or_requirements: + return False + if version_or_requirements.startswith("getenv("): + return True + for prefix in ["first:", "latest:"]: + if version_or_requirements.startswith(prefix) or version_or_requirements == prefix[:-1]: + return True + return False + +def _parse_version_or_requirements(version_or_requirements): + for prefix in ["latest:", "first:"]: + if version_or_requirements.startswith(prefix): + return versions.parse_requirements(version_or_requirements.removeprefix(prefix)) + if version_or_requirements in ["latest", "first"]: + return None + if not _is_requirement(version_or_requirements): + return None + fail("ERROR: Invalid version requirements: '{version_or_requirements}'.".format( + version_or_requirements = version_or_requirements, + )) + +def _get_version_from_distribution(distribution): + # We assume here that the `distribution` is a basename of the form `LLVM--...` or + # `clang+llvm--...`. + return distribution.split("-")[1] + +def _get_llvm_versions(*, version_or_requirements, all_llvm_distributions): + llvm_version_dict = {} + for distribution in all_llvm_distributions.keys(): + version = _get_version_from_distribution(distribution) + llvm_version_dict[_parse_version(version)] = version + + return [v for k, v in sorted(llvm_version_dict.items(), reverse = version_or_requirements.startswith("latest"))] + +def _required_llvm_release_name(*, version_or_requirements, all_llvm_distributions, host_info): + llvm_versions = _get_llvm_versions(version_or_requirements = version_or_requirements, all_llvm_distributions = all_llvm_distributions) + requirements = _parse_version_or_requirements(version_or_requirements) + for llvm_version in llvm_versions: + if requirements and not versions.check_all_requirements(llvm_version, requirements): + continue + basenames = _find_llvm_basename_list(llvm_version, all_llvm_distributions, host_info) + if len(basenames) == 1: + return llvm_version, basenames[0], None + return None, None, "ERROR: No matching distribution found." + +def _resolve_llvm_version_rctx_env(rctx, llvm_version): + if llvm_version.startswith("getenv(") and llvm_version.endswith(")"): + env_var = llvm_version[len("getenv("):-1] + if env_var.find(",") >= 0: + env_name, env_default = env_var.split(",", 1) + else: + env_name = env_var + env_default = None + + env_name = env_name.strip(" ") + if not env_var: + fail("ERROR: Bad getenv parameter '{env_var}'.".format( + env_var = env_var, + )) + + # We prefer 'repository_ctx.getenv' if it is available (~7.1+) and default + # to accessing the environment directly. The latter breaks "hermeticity". + if hasattr(rctx, "getenv"): + llvm_version = rctx.getenv(env_name, env_default) + elif env_name in rctx.os.environ: + llvm_version = rctx.os.environ[env_name] + else: + llvm_version = env_default + + if not llvm_version: + fail("ERROR: Empty getenv lookup for '{env_var}'.".format( + env_var = env_var, + )) + + return llvm_version + +def _required_llvm_release_name_rctx(rctx, llvm_version): + llvm_version = _resolve_llvm_version_rctx_env(rctx, llvm_version) + all_llvm_distributions = _get_all_llvm_distributions( + llvm_distributions = _llvm_distributions, + extra_llvm_distributions = rctx.attr.extra_llvm_distributions, + parsed_llvm_version = _parse_version(llvm_version) if not _is_requirement(llvm_version) else None, + ) + return _required_llvm_release_name( + version_or_requirements = llvm_version, + all_llvm_distributions = all_llvm_distributions, + host_info = host_info(rctx), + ) + +def required_llvm_version_rctx(rctx): + _, llvm_version = exec_os_arch_dict_value(rctx, "llvm_versions") + if _is_requirement(llvm_version): + llvm_version, distribution, error = _required_llvm_release_name_rctx(rctx, llvm_version) + if error: + fail(error) + if llvm_version: + print("\nINFO: Resolved latest LLVM version for {name} to {llvm_version}: {distribution}".format( + name = rctx.attr.name, + distribution = distribution, + llvm_version = llvm_version, + )) # buildifier: disable=print + return llvm_version + +def _filter_llvm_distributions(*, llvm_version, all_llvm_distributions): + """Return (distribution: sha) entries from `all_llvm_distributions` that match `llvm_version`.""" + result = {} + for k, v in all_llvm_distributions.items(): + if _get_version_from_distribution(k) == llvm_version: + result[k] = v + return result + def _distribution_urls(rctx): + """Return LLVM `urls`, `sha256` and `strip_prefix` for the given context.""" llvm_version = _get_llvm_version(rctx) + all_llvm_distributions = _get_all_llvm_distributions( + llvm_distributions = _llvm_distributions, + extra_llvm_distributions = rctx.attr.extra_llvm_distributions, + parsed_llvm_version = _parse_version(llvm_version) if not _is_requirement(llvm_version) else None, + ) + _, sha256, strip_prefix, _ = _key_attrs(rctx) if rctx.attr.distribution == "auto": - basename = _llvm_release_name(rctx, llvm_version) + rctx_host_info = host_info(rctx) + llvm_version = _resolve_llvm_version_rctx_env(rctx, llvm_version) + if _is_requirement(llvm_version): + llvm_version, basename, error = _required_llvm_release_name( + version_or_requirements = llvm_version, + all_llvm_distributions = all_llvm_distributions, + host_info = rctx_host_info, + ) + else: + basename, error = _find_llvm_basename_or_error(llvm_version, all_llvm_distributions, rctx_host_info) + if error: + fail(error) + dist_info = all_llvm_distributions[basename] + if sha256 and sha256 != dist_info.sha256: + fail("ERROR: Attribute sha256 provided a different SHA256 than the stored one.") + sha256 = dist_info.sha256 + distribution = dist_info.distribution else: - basename = rctx.attr.distribution + distribution = rctx.attr.distribution + basename = _distribution_basename(distribution) + dist_info = all_llvm_distributions.get(basename, None) + if sha256: + if dist_info and sha256 != dist_info.sha256: + fail("ERROR: Attribute sha256 provided a different SHA than the stored one.") + elif dist_info: + sha256 = dist_info.sha256 + else: + fail("ERROR: Unknown LLVM release: %s\nPlease ensure file name is correct." % distribution) - if basename not in _llvm_distributions: - fail("Unknown LLVM release: %s\nPlease ensure file name is correct." % basename) + if not strip_prefix: + strip_prefix = _strip_prefix(basename = basename, strip_suffix = "-rhel86") + if basename != distribution: + return [distribution], sha256, strip_prefix urls = [] url_suffix = "{0}/{1}".format(llvm_version, basename).replace("+", "%2B") @@ -394,10 +1344,318 @@ def _distribution_urls(rctx): if rctx.attr.alternative_llvm_sources: for pattern in rctx.attr.alternative_llvm_sources: urls.append(pattern.format(llvm_version = llvm_version, basename = basename)) - urls.append("{0}{1}".format(_llvm_distributions_base_url[llvm_version], url_suffix)) + url_base = _llvm_distributions_base_url.get(llvm_version, _llvm_distributions_base_url_default) + urls.append(url_base + url_suffix) - sha256 = _llvm_distributions[basename] + return urls, sha256, strip_prefix - strip_prefix = basename[:(len(basename) - len(".tar.xz"))] +def _distributions_test_writer_impl(ctx): + """Analyze the configured versions and write to a file for test consumption. - return urls, sha256, strip_prefix + The test generated file '.out' contains the following lines: + - a 'del:' line denotes a llvm distribution basename that was not found. + - a 'add:' line denotes a version that was predicted but does not exist. + + Lines of type `add:` should never occur as the algorithm is supposed to + verify that predicted distributions have been configured. Otherwise the + algorithm could not know the hash value. + """ + use_llvm_distributions = _llvm_distributions + + # Inject version '0.0.0' that verifies additional behavior using `extra_llvm_distributions`. + extra_llvm_distributions = { + "LLVM-0.0.0-Linux-ARM64.tar.xz": "a6b8679be46bdaa383e0c7f13a473ca8f7a4f87233f2cc0e0a7ab19e1b6265e7", + "/foo/bar/LLVM-0.0.0-Linux-X64.tar.xz?xyz": "0a764a8ca521606532ca9ec4e5745c933b16b7d30f4701a47ee851d448fcdb74", + "http://server/foo/bar/LLVM-0.0.0-macOS-ARM64.tar.xz#xyz": "9da86f64a99f5ce9b679caf54e938736ca269c5e069d0c94ad08b995c5f25c16", + "http://server/foo/bar/LLVM-0.0.0-macOS-X64.tar.xz": "264f2f1e8b67f066749349ae8b4943d346cd44e099464164ef21b42a57663540", + "http://server/clang%2Bllvm-0.0.0-aarch64-pc-windows-msvc.tar.xz": "5916d93bf80e3ae504022cdd8cb8887be001f9b68a7a08bd268727e8d858afa4", + "http://server/path-to-file/clang%2Bllvm-0.0.0-x86_64-pc-windows-msvc.tar.xz#bla": "5916d93bf80e3ae504022cdd8cb8887be001f9b68a7a08bd268727e8d858afa4", + } + + arch_list = [ + "aarch64", + "armv7a", + "mips", + "mipsel", + "powerpc64", + "powerpc64le", + "sparc64", + "sparcv9", + "x86_32", + "x86_64", + ] + arch_alias_dict = { + "sparc64": ["sparc64", "sparcv9"], + "sparcv9": ["sparcv9", "sparc64"], + } + os_list = [ + "darwin", + "linux", + "windows", + ] + ANY_VERSION = "0" # Version does not matter, but must be a valid integer + dist_dict_list = { + "linux": [ + # keep sorted + struct(name = "amzn", version = ANY_VERSION), + struct(name = "arch", version = ANY_VERSION), + struct(name = "centos", version = "6"), + struct(name = "centos", version = "7"), + struct(name = "chainguard", version = ANY_VERSION), + struct(name = "debian", version = "0"), + struct(name = "debian", version = "8"), + struct(name = "debian", version = "9"), + struct(name = "fedora", version = "26"), + struct(name = "fedora", version = "27"), + struct(name = "fedora", version = "42"), + struct(name = "freebsd", version = "10"), + struct(name = "freebsd", version = "11"), + struct(name = "freebsd", version = "12"), + struct(name = "freebsd", version = "13"), + struct(name = "ibm-aix", version = "7.2"), + struct(name = "linuxmint", version = "18"), + struct(name = "linuxmint", version = "19"), + struct(name = "pc-solaris", version = "2.11"), + struct(name = "raspbian", version = ANY_VERSION), + struct(name = "rhel", version = ANY_VERSION), + struct(name = "sun-solaris", version = "2.11"), + struct(name = "suse", version = "11.3"), + struct(name = "suse", version = "12.2"), + struct(name = "suse", version = "12.3"), + struct(name = "suse", version = "12.4"), + struct(name = "suse", version = "15.5"), + struct(name = "suse", version = "16.0"), + struct(name = "suse", version = "17.0"), + struct(name = "ubuntu", version = "14.04"), + struct(name = "ubuntu", version = "16.04"), + struct(name = "ubuntu", version = "18.04.5"), + struct(name = "ubuntu", version = "18.04.6"), + struct(name = "ubuntu", version = "18.04"), + struct(name = "ubuntu", version = "20.04"), + struct(name = "ubuntu", version = "20.10"), + struct(name = "ubuntu", version = "22.04"), + struct(name = "ubuntu", version = "24.04"), + struct(name = "wolfi", version = ANY_VERSION), + ], + } + + # Define the min real version. For earlier injected versions we do no perform dist testing. + MIN_VERSION = _parse_version("6.0.0") + + # Additional output will be generated for versions up to and including `MAX_VERSION` + MAX_VERSION = _parse_version("20.1.3") + version_dict = { + _distribution_version(basename): None + for basename in use_llvm_distributions.keys() + extra_llvm_distributions.keys() + } | { + _parse_version(v): None + for v in _llvm_distributions_base_url.keys() + } + versions = sorted(version_dict.keys()) + + # Write versions to output to check which versions we take into account. + output = [] + select = [] + for version in versions: + output.append("version: " + _version_string(version)) + + # We keep track of versions in `not_found` and remove the ones we found. + # So at the end all version that were not found remain, hence the name. + not_found = { + _distribution_basename(distribution): None + for distribution in use_llvm_distributions.keys() + extra_llvm_distributions.keys() + } + + # While computing we add predicted versions that are not configured as True. + # At the end we add the not-found versions as False. + result = {} + + # Collect cases that produce duplicates (or multiple) basenames. + dupes = [] + + # For all versions X arch X os check if we can compute the distribution. + for version in versions: + all_llvm_distributions = _get_all_llvm_distributions( + llvm_distributions = use_llvm_distributions, + extra_llvm_distributions = extra_llvm_distributions, + parsed_llvm_version = version, + ) + for basename, distribution in all_llvm_distributions.items(): + _, shaerr = _normalize_and_check_sha256(distribution.sha256) + if shaerr: + output.append("err: {basename}: bad sha256: {shaerr}".format( + basename = basename, + shaerr = shaerr, + )) + for arch in arch_list: + for os in os_list: + if version < MIN_VERSION: + # Limit the injected version checks + if arch not in ["aarch64", "x86_64"]: + break + dist_list = [struct(name = os, version = "")] + else: + dist_list = dist_dict_list.get(os, [struct(name = os, version = "")]) + for dist in dist_list: + if arch == "sparc64" and dist.name != "sun-solaris": + # Sparc64 and SparcV9 are handled in the same way, just different precedence. + # One is the architecture th other the ISA. Restrict to one to limit output. + continue + host_info = struct( + arch = arch, + os = os, + dist = dist, + ) + basenames = _find_llvm_basename_list(_version_string(version), all_llvm_distributions, host_info) + if version <= MAX_VERSION: + predicted, error = _find_llvm_basename_or_error( + _version_string(version), + all_llvm_distributions, + host_info, + ) + skip_output = False + if error: + if error.startswith("ERROR: No matching config could be found for version"): + skip_output = True + else: + if predicted.endswith(".exe"): + error = "ERROR: Windows .exe is not supported: " + predicted + elif predicted not in all_llvm_distributions: + error = "ERROR: Unavailable prediction: " + predicted + elif len(basenames) == 0: + skip_output = True + elif len(basenames) == 1: + predicted = basenames[0] + else: + error = "ERROR: Multiple selections" + if not error: + arch_found = [arch for arch in arch_list if arch in predicted] + if len(arch_found) == 1 and arch_found[0] not in arch_alias_dict.get(arch, [arch]): + error = "ERROR: Bad arch selection: " + predicted + if not skip_output: + select.append("{version}-{arch}-{os}/{dist_name}/{dist_version} -> {basename}".format( + version = _version_string(version), + arch = arch, + os = os, + dist_name = dist.name, + dist_version = dist.version, + basename = error or predicted, + )) + if len(basenames) != 1: + if basenames: + dupes.append("dup: {version}-{arch}-{os}-{dist_name}-{dist_version} -> {count}".format( + version = _version_string(version), + arch = arch, + os = os, + dist_name = dist.name, + dist_version = dist.version, + count = len(basenames), + )) + dupes.extend([" : " + basename for basename in basenames]) + continue + basename = basenames[0] + if basename in all_llvm_distributions: + if basename in not_found: + not_found.pop(basename) + else: + result[basename] = True + + # Build result + for dist in not_found: + result[dist] = False + output += [("add: " if found else "del: ") + dist for dist, found in result.items()] + output += dupes + ctx.actions.write(ctx.outputs.output, "\n".join(output) + "\n") + ctx.actions.write(ctx.outputs.select, "\n".join(select) + "\n") + +distributions_test_writer = rule( + implementation = _distributions_test_writer_impl, + attrs = { + "output": attr.output(mandatory = True), + "select": attr.output(mandatory = True), + }, +) + +def _requirements_test_writer_impl(ctx): + """Analyze the configured versions and write to a file for test consumption. + The test generated file '.out' contains the following lines: + [,,]: + """ + all_llvm_distributions = { + # In order to prevent new distributions to interfere we cut at 20.1.3. + k: v + for k, v in _llvm_distributions.items() + if _parse_version(_get_version_from_distribution(k)) <= (20, 1, 3) + } + requirement_list = [ + "latest:<=20.1.0", + "latest:<=20.1.0,>17.0.4,!=19.1.7", + "latest:<20.1.0,>17.0.4,!=19.1.7", + "latest:<20.1.0,>17.0.4", + "latest:>=15.0.6,<16", + "first:>=15.0.6,<16", + "latest", + "first", + ] + arch_list = [ + "aarch64", + "armv7a", + "x86_64", + ] + os_list = [ + "darwin", + "linux", + "windows", + ] + ANY_VERSION = "0" # Version does not matter, but must be a valid integer + dist_dict_list = { + "linux": [ + # keep sorted + struct(name = "ubuntu", version = ANY_VERSION), + struct(name = "raspbian", version = ANY_VERSION), + struct(name = "rhel", version = ANY_VERSION), + ], + } + result = [] + for arch in arch_list: + for os in os_list: + dist_list = dist_dict_list.get(os, [struct(name = os, version = "")]) + for dist in dist_list: + for requirement in requirement_list: + host_info = struct( + arch = arch, + os = os, + dist = dist, + ) + llvm_version, basename, error = _required_llvm_release_name( + version_or_requirements = requirement, + all_llvm_distributions = all_llvm_distributions, + host_info = host_info, + ) + if llvm_version and basename: + result.append("[{arch},{os}{dist_name}{dist_version},'{requirement}']: {llvm_version} = {basename}".format( + arch = arch, + os = os, + dist_name = "," + dist.name if os == "linux" else "", + dist_version = "," + dist.version if os == "linux" else "", + requirement = requirement, + llvm_version = llvm_version, + basename = basename, + )) + else: + result.append("[{arch},{os},\"{requirement}\"]: {error}".format( + arch = arch, + os = os, + requirement = requirement, + llvm_version = llvm_version, + basename = basename, + error = error or "ERROR: N/A", + )) + ctx.actions.write(ctx.outputs.result, "\n".join(result) + "\n") + +requirements_test_writer = rule( + implementation = _requirements_test_writer_impl, + attrs = { + "result": attr.output(mandatory = True), + }, +) diff --git a/toolchain/internal/llvm_distributions.golden.out.txt b/toolchain/internal/llvm_distributions.golden.out.txt new file mode 100644 index 000000000..2fa5b6ce6 --- /dev/null +++ b/toolchain/internal/llvm_distributions.golden.out.txt @@ -0,0 +1,85 @@ +version: 0.0.0 +version: 6.0.0 +version: 6.0.1 +version: 7.0.0 +version: 8.0.0 +version: 8.0.1 +version: 9.0.0 +version: 10.0.0 +version: 10.0.1 +version: 11.0.0 +version: 11.0.1 +version: 11.1.0 +version: 12.0.0 +version: 12.0.1 +version: 13.0.0 +version: 13.0.1 +version: 14.0.0 +version: 14.0.1 +version: 14.0.2 +version: 14.0.3 +version: 14.0.4 +version: 14.0.5 +version: 14.0.6 +version: 15.0.0 +version: 15.0.1 +version: 15.0.2 +version: 15.0.3 +version: 15.0.4 +version: 15.0.5 +version: 15.0.6 +version: 15.0.7 +version: 16.0.0 +version: 16.0.1 +version: 16.0.2 +version: 16.0.3 +version: 16.0.4 +version: 16.0.5 +version: 16.0.6 +version: 17.0.1 +version: 17.0.2 +version: 17.0.3 +version: 17.0.4 +version: 17.0.5 +version: 17.0.6 +version: 18.1.0 +version: 18.1.1 +version: 18.1.2 +version: 18.1.3 +version: 18.1.4 +version: 18.1.5 +version: 18.1.6 +version: 18.1.7 +version: 18.1.8 +version: 19.1.0 +version: 19.1.1 +version: 19.1.2 +version: 19.1.3 +version: 19.1.4 +version: 19.1.5 +version: 19.1.6 +version: 19.1.7 +version: 20.1.0 +version: 20.1.1 +version: 20.1.2 +version: 20.1.3 +version: 20.1.4 +version: 20.1.5 +version: 20.1.6 +version: 20.1.7 +version: 20.1.8 +version: 21.1.0 +version: 21.1.1 +version: 21.1.2 +version: 21.1.3 +version: 21.1.4 +version: 21.1.5 +version: 21.1.6 +version: 21.1.7 +version: 21.1.8 +del: clang+llvm-9.0.0-x86_64-pc-linux-gnu.tar.xz +del: clang+llvm-15.0.2-x86_64-unknown-linux-gnu-sles15.tar.xz +del: clang+llvm-19.1.0-x86_64-pc-windows-msvc.tar.xz +del: clang+llvm-19.1.1-x86_64-pc-windows-msvc.tar.xz +del: clang+llvm-19.1.2-x86_64-pc-windows-msvc.tar.xz +del: clang+llvm-19.1.3-x86_64-pc-windows-msvc.tar.xz diff --git a/toolchain/internal/llvm_distributions.golden.sel.txt b/toolchain/internal/llvm_distributions.golden.sel.txt new file mode 100644 index 000000000..9bdc9ae33 --- /dev/null +++ b/toolchain/internal/llvm_distributions.golden.sel.txt @@ -0,0 +1,5462 @@ +0.0.0-aarch64-darwin/darwin/ -> LLVM-0.0.0-macOS-ARM64.tar.xz +0.0.0-aarch64-linux/linux/ -> LLVM-0.0.0-Linux-ARM64.tar.xz +0.0.0-aarch64-windows/windows/ -> clang+llvm-0.0.0-aarch64-pc-windows-msvc.tar.xz +0.0.0-x86_64-darwin/darwin/ -> LLVM-0.0.0-macOS-X64.tar.xz +0.0.0-x86_64-linux/linux/ -> LLVM-0.0.0-Linux-X64.tar.xz +0.0.0-x86_64-windows/windows/ -> clang+llvm-0.0.0-x86_64-pc-windows-msvc.tar.xz +6.0.0-aarch64-linux/amzn/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/arch/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/centos/6 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/centos/7 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/chainguard/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/debian/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/debian/8 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/debian/9 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/fedora/26 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/fedora/27 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/fedora/42 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/raspbian/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/rhel/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/11.3 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/12.2 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/12.3 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/12.4 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/15.5 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/16.0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/suse/17.0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-aarch64-linux/wolfi/0 -> clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +6.0.0-armv7a-linux/arch/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/centos/6 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/centos/7 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/chainguard/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/debian/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/debian/8 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/debian/9 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/fedora/26 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/fedora/27 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/fedora/42 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/raspbian/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/rhel/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-armv7a-linux/wolfi/0 -> clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +6.0.0-mips-linux/amzn/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/arch/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/centos/6 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/centos/7 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/chainguard/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/debian/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/debian/8 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/debian/9 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/fedora/26 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/fedora/27 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/fedora/42 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/linuxmint/18 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/linuxmint/19 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/raspbian/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/rhel/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/11.3 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/12.2 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/12.3 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/12.4 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/15.5 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/16.0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/suse/17.0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/14.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/16.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/18.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/20.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/20.10 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/22.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/ubuntu/24.04 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mips-linux/wolfi/0 -> clang+llvm-6.0.0-mips-linux-gnu.tar.xz +6.0.0-mipsel-linux/amzn/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/arch/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/centos/6 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/centos/7 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/chainguard/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/debian/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/debian/8 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/debian/9 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/fedora/26 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/fedora/27 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/fedora/42 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/linuxmint/18 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/linuxmint/19 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/raspbian/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/rhel/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/11.3 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/12.2 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/12.3 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/12.4 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/15.5 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/16.0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/suse/17.0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/14.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/16.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/18.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/20.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/20.10 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/22.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/ubuntu/24.04 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-mipsel-linux/wolfi/0 -> clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +6.0.0-x86_32-linux/arch/0 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/centos/6 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/centos/7 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/chainguard/0 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/debian/0 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/debian/8 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/debian/9 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/fedora/26 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/fedora/27 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/fedora/42 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/freebsd/10 -> clang+llvm-6.0.0-i386-unknown-freebsd-10.tar.xz +6.0.0-x86_32-linux/linuxmint/18 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/linuxmint/19 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/rhel/0 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/14.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/16.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/18.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/20.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/20.10 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/22.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/ubuntu/24.04 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_32-linux/wolfi/0 -> clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-darwin/darwin/ -> clang+llvm-6.0.0-x86_64-apple-darwin.tar.xz +6.0.0-x86_64-linux/amzn/0 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/arch/0 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/centos/6 -> clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-linux/centos/7 -> clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-linux/chainguard/0 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/debian/0 -> clang+llvm-6.0.0-x86_64-linux-gnu-debian8.tar.xz +6.0.0-x86_64-linux/debian/8 -> clang+llvm-6.0.0-x86_64-linux-gnu-debian8.tar.xz +6.0.0-x86_64-linux/debian/9 -> clang+llvm-6.0.0-x86_64-linux-gnu-debian8.tar.xz +6.0.0-x86_64-linux/fedora/26 -> clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-linux/fedora/27 -> clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-linux/fedora/42 -> clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +6.0.0-x86_64-linux/freebsd/10 -> clang+llvm-6.0.0-amd64-unknown-freebsd-10.tar.xz +6.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/rhel/0 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/suse/11.3 -> clang+llvm-6.0.0-x86_64-linux-sles11.3.tar.xz +6.0.0-x86_64-linux/suse/12.2 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/suse/12.3 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/suse/12.4 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/suse/15.5 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/suse/16.0 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/suse/17.0 -> clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +6.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.0-x86_64-linux/wolfi/0 -> clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_32-linux/freebsd/10 -> clang+llvm-6.0.1-i386-unknown-freebsd10.tar.xz +6.0.1-x86_64-linux/amzn/0 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/arch/0 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/centos/6 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/centos/7 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/chainguard/0 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/debian/0 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/debian/8 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/debian/9 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/fedora/26 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/fedora/27 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/fedora/42 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/freebsd/10 -> clang+llvm-6.0.1-amd64-unknown-freebsd10.tar.xz +6.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/rhel/0 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/suse/11.3 -> clang+llvm-6.0.1-x86_64-linux-sles11.3.tar.xz +6.0.1-x86_64-linux/suse/12.2 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/suse/12.3 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/suse/12.4 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/suse/15.5 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/suse/16.0 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/suse/17.0 -> clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +6.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +6.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +6.0.1-x86_64-linux/wolfi/0 -> clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_32-linux/freebsd/10 -> clang+llvm-7.0.0-i386-unknown-freebsd-10.tar.xz +7.0.0-x86_64-darwin/darwin/ -> clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz +7.0.0-x86_64-linux/amzn/0 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/arch/0 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/centos/6 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/centos/7 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/chainguard/0 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/debian/0 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/debian/8 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/debian/9 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/fedora/26 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/fedora/27 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/fedora/42 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/freebsd/10 -> clang+llvm-7.0.0-amd64-unknown-freebsd-10.tar.xz +7.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/rhel/0 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/suse/11.3 -> clang+llvm-7.0.0-x86_64-linux-sles11.3.tar.xz +7.0.0-x86_64-linux/suse/12.2 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/suse/12.3 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/suse/12.4 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/suse/15.5 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/suse/16.0 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/suse/17.0 -> clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +7.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +7.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +7.0.0-x86_64-linux/wolfi/0 -> clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +8.0.0-aarch64-linux/amzn/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/arch/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/centos/6 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/centos/7 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/chainguard/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/debian/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/debian/8 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/debian/9 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/fedora/26 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/fedora/27 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/fedora/42 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/raspbian/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/rhel/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/11.3 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/12.2 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/12.3 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/12.4 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/15.5 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/16.0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/suse/17.0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-aarch64-linux/wolfi/0 -> clang+llvm-8.0.0-aarch64-linux-gnu.tar.xz +8.0.0-armv7a-linux/arch/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/centos/6 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/centos/7 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/chainguard/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/debian/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/debian/8 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/debian/9 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/fedora/26 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/fedora/27 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/fedora/42 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/raspbian/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/rhel/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-armv7a-linux/wolfi/0 -> clang+llvm-8.0.0-armv7a-linux-gnueabihf.tar.xz +8.0.0-x86_32-linux/freebsd/11 -> clang+llvm-8.0.0-i386-unknown-freebsd11.tar.xz +8.0.0-x86_64-darwin/darwin/ -> clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz +8.0.0-x86_64-linux/amzn/0 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/arch/0 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/centos/6 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/centos/7 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/chainguard/0 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/debian/0 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/debian/8 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/debian/9 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/fedora/26 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/fedora/27 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/fedora/42 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/freebsd/11 -> clang+llvm-8.0.0-amd64-unknown-freebsd11.tar.xz +8.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/rhel/0 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/suse/11.3 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/12.2 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/12.3 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/12.4 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/15.5 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/16.0 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/suse/17.0 -> clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +8.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +8.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.0-x86_64-linux/wolfi/0 -> clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +8.0.1-aarch64-linux/amzn/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/arch/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/centos/6 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/centos/7 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/chainguard/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/debian/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/debian/8 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/debian/9 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/fedora/26 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/fedora/27 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/fedora/42 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/raspbian/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/rhel/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/11.3 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/12.2 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/12.3 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/12.4 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/15.5 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/16.0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/suse/17.0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-aarch64-linux/wolfi/0 -> clang+llvm-8.0.1-aarch64-linux-gnu.tar.xz +8.0.1-armv7a-linux/arch/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/centos/6 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/centos/7 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/chainguard/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/debian/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/debian/8 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/debian/9 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/fedora/26 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/fedora/27 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/fedora/42 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/raspbian/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/rhel/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-armv7a-linux/wolfi/0 -> clang+llvm-8.0.1-armv7a-linux-gnueabihf.tar.xz +8.0.1-powerpc64le-linux/arch/0 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/debian/0 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/debian/8 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/debian/9 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-8.0.1-powerpc64le-linux-rhel-7.4.tar.xz +8.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +8.0.1-x86_32-linux/freebsd/11 -> clang+llvm-8.0.1-i386-unknown-freebsd11.tar.xz +8.0.1-x86_64-linux/amzn/0 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/arch/0 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/centos/6 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/centos/7 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/chainguard/0 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/debian/0 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/debian/8 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/debian/9 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/fedora/26 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/fedora/27 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/fedora/42 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/freebsd/11 -> clang+llvm-8.0.1-amd64-unknown-freebsd11.tar.xz +8.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/rhel/0 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/suse/11.3 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/12.2 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/12.3 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/12.4 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/15.5 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/16.0 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/suse/17.0 -> clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +8.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +8.0.1-x86_64-linux/wolfi/0 -> clang+llvm-8.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-aarch64-linux/amzn/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/arch/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/centos/6 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/centos/7 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/chainguard/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/debian/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/debian/8 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/debian/9 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/fedora/26 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/fedora/27 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/fedora/42 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/raspbian/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/rhel/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/11.3 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/12.2 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/12.3 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/12.4 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/15.5 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/16.0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/suse/17.0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-aarch64-linux/wolfi/0 -> clang+llvm-9.0.0-aarch64-linux-gnu.tar.xz +9.0.0-armv7a-linux/arch/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/centos/6 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/centos/7 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/chainguard/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/debian/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/debian/8 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/debian/9 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/fedora/26 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/fedora/27 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/fedora/42 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/raspbian/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/rhel/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-armv7a-linux/wolfi/0 -> clang+llvm-9.0.0-armv7a-linux-gnueabihf.tar.xz +9.0.0-powerpc64le-linux/arch/0 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/debian/0 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/debian/8 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/debian/9 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-9.0.0-powerpc64le-linux-rhel-7.4.tar.xz +9.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +9.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-9.0.0-sparcv9-sun-solaris2.11.tar.xz +9.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-9.0.0-sparcv9-sun-solaris2.11.tar.xz +9.0.0-x86_32-linux/freebsd/11 -> clang+llvm-9.0.0-i386-unknown-freebsd11.tar.xz +9.0.0-x86_64-darwin/darwin/ -> clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz +9.0.0-x86_64-linux/amzn/0 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/arch/0 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/centos/6 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/centos/7 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/chainguard/0 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/debian/0 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/debian/8 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/debian/9 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/fedora/26 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/fedora/27 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/fedora/42 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/freebsd/11 -> clang+llvm-9.0.0-amd64-unknown-freebsd11.tar.xz +9.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-9.0.0-amd64-pc-solaris2.11.tar.xz +9.0.0-x86_64-linux/rhel/0 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/suse/11.3 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/12.2 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/12.3 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/12.4 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/15.5 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/16.0 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/suse/17.0 -> clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +9.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +9.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +9.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +9.0.0-x86_64-linux/wolfi/0 -> clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-aarch64-linux/amzn/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/arch/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/centos/6 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/centos/7 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/chainguard/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/debian/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/debian/8 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/debian/9 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/fedora/26 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/fedora/27 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/fedora/42 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/raspbian/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/rhel/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/11.3 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/12.2 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/12.3 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/12.4 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/15.5 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/16.0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/suse/17.0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-aarch64-linux/wolfi/0 -> clang+llvm-10.0.0-aarch64-linux-gnu.tar.xz +10.0.0-armv7a-linux/arch/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/centos/6 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/centos/7 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/chainguard/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/debian/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/debian/8 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/debian/9 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/fedora/26 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/fedora/27 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/fedora/42 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/raspbian/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/rhel/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-armv7a-linux/wolfi/0 -> clang+llvm-10.0.0-armv7a-linux-gnueabihf.tar.xz +10.0.0-powerpc64le-linux/arch/0 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/debian/0 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/debian/8 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/debian/9 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-10.0.0-powerpc64le-linux-rhel-7.4.tar.xz +10.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-10.0.0-sparcv9-sun-solaris2.11.tar.xz +10.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-10.0.0-sparcv9-sun-solaris2.11.tar.xz +10.0.0-x86_32-linux/freebsd/11 -> clang+llvm-10.0.0-i386-unknown-freebsd11.tar.xz +10.0.0-x86_64-darwin/darwin/ -> clang+llvm-10.0.0-x86_64-apple-darwin.tar.xz +10.0.0-x86_64-linux/amzn/0 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/arch/0 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/centos/6 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/centos/7 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/chainguard/0 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/debian/0 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/debian/8 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/debian/9 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/fedora/26 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/fedora/27 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/fedora/42 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/freebsd/11 -> clang+llvm-10.0.0-amd64-unknown-freebsd11.tar.xz +10.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-10.0.0-amd64-pc-solaris2.11.tar.xz +10.0.0-x86_64-linux/rhel/0 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/suse/11.3 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/12.2 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/12.3 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/12.4 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/15.5 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/16.0 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/suse/17.0 -> clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +10.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.0-x86_64-linux/wolfi/0 -> clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +10.0.1-aarch64-linux/amzn/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/arch/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/centos/6 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/centos/7 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/chainguard/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/debian/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/debian/8 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/debian/9 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/fedora/26 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/fedora/27 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/fedora/42 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/raspbian/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/rhel/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/11.3 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/12.2 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/12.3 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/12.4 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/15.5 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/16.0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/suse/17.0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-aarch64-linux/wolfi/0 -> clang+llvm-10.0.1-aarch64-linux-gnu.tar.xz +10.0.1-armv7a-linux/arch/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/centos/6 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/centos/7 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/chainguard/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/debian/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/debian/8 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/debian/9 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/fedora/26 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/fedora/27 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/fedora/42 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/raspbian/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/rhel/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-armv7a-linux/wolfi/0 -> clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz +10.0.1-powerpc64le-linux/arch/0 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/debian/0 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/debian/8 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/debian/9 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-10.0.1-powerpc64le-linux-rhel-7.4.tar.xz +10.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +10.0.1-x86_32-linux/freebsd/11 -> clang+llvm-10.0.1-i386-unknown-freebsd11.tar.xz +10.0.1-x86_64-darwin/darwin/ -> clang+llvm-10.0.1-x86_64-apple-darwin.tar.xz +10.0.1-x86_64-linux/amzn/0 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/arch/0 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/centos/6 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/centos/7 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/chainguard/0 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/debian/0 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/debian/8 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/debian/9 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/fedora/26 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/fedora/27 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/fedora/42 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/freebsd/11 -> clang+llvm-10.0.1-amd64-unknown-freebsd11.tar.xz +10.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/rhel/0 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/suse/11.3 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/12.2 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/12.3 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/12.4 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/15.5 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/16.0 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/suse/17.0 -> clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +10.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +10.0.1-x86_64-linux/wolfi/0 -> clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-11.0.0-sparcv9-sun-solaris2.11.tar.xz +11.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-11.0.0-sparcv9-sun-solaris2.11.tar.xz +11.0.0-x86_64-darwin/darwin/ -> clang+llvm-11.0.0-x86_64-apple-darwin.tar.xz +11.0.0-x86_64-linux/amzn/0 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/arch/0 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/centos/6 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/centos/7 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/chainguard/0 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/debian/0 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/debian/8 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/debian/9 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/fedora/26 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/fedora/27 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/fedora/42 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-11.0.0-amd64-pc-solaris2.11.tar.xz +11.0.0-x86_64-linux/rhel/0 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/suse/11.3 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/12.2 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/12.3 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/12.4 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/15.5 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/16.0 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/suse/17.0 -> clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +11.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.0-x86_64-linux/wolfi/0 -> clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +11.0.1-aarch64-linux/amzn/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/arch/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/centos/6 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/centos/7 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/chainguard/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/debian/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/debian/8 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/debian/9 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/fedora/26 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/fedora/27 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/fedora/42 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/raspbian/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/rhel/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/11.3 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/12.2 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/12.3 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/12.4 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/15.5 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/16.0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/suse/17.0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-aarch64-linux/wolfi/0 -> clang+llvm-11.0.1-aarch64-linux-gnu.tar.xz +11.0.1-armv7a-linux/arch/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/centos/6 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/centos/7 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/chainguard/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/debian/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/debian/8 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/debian/9 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/fedora/26 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/fedora/27 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/fedora/42 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/raspbian/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/rhel/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-armv7a-linux/wolfi/0 -> clang+llvm-11.0.1-armv7a-linux-gnueabihf.tar.xz +11.0.1-powerpc64le-linux/arch/0 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/debian/0 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/debian/8 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/debian/9 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-11.0.1-powerpc64le-linux-rhel-7.4.tar.xz +11.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +11.0.1-x86_32-linux/freebsd/11 -> clang+llvm-11.0.1-i386-unknown-freebsd11.tar.xz +11.0.1-x86_32-linux/freebsd/12 -> clang+llvm-11.0.1-i386-unknown-freebsd12.tar.xz +11.0.1-x86_64-linux/amzn/0 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/arch/0 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/centos/6 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/centos/7 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/chainguard/0 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/debian/0 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/debian/8 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/debian/9 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/fedora/26 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/fedora/27 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/fedora/42 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/freebsd/11 -> clang+llvm-11.0.1-amd64-unknown-freebsd11.tar.xz +11.0.1-x86_64-linux/freebsd/12 -> clang+llvm-11.0.1-amd64-unknown-freebsd12.tar.xz +11.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/rhel/0 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/suse/11.3 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/12.2 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/12.3 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/12.4 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/15.5 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/16.0 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/suse/17.0 -> clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +11.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.0.1-x86_64-linux/wolfi/0 -> clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-aarch64-linux/amzn/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/arch/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/centos/6 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/centos/7 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/chainguard/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/debian/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/debian/8 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/debian/9 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/fedora/26 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/fedora/27 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/fedora/42 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/linuxmint/18 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/linuxmint/19 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/raspbian/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/rhel/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/11.3 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/12.2 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/12.3 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/12.4 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/15.5 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/16.0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/suse/17.0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-aarch64-linux/wolfi/0 -> clang+llvm-11.1.0-aarch64-linux-gnu.tar.xz +11.1.0-armv7a-linux/arch/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/centos/6 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/centos/7 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/chainguard/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/debian/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/debian/8 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/debian/9 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/fedora/26 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/fedora/27 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/fedora/42 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/linuxmint/18 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/linuxmint/19 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/raspbian/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/rhel/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-armv7a-linux/wolfi/0 -> clang+llvm-11.1.0-armv7a-linux-gnueabihf.tar.xz +11.1.0-powerpc64le-linux/arch/0 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/chainguard/0 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/debian/0 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/debian/8 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/debian/9 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/fedora/26 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/fedora/27 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/fedora/42 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/rhel/0 -> clang+llvm-11.1.0-powerpc64le-linux-rhel-7.4.tar.xz +11.1.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-powerpc64le-linux/wolfi/0 -> clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +11.1.0-x86_32-linux/freebsd/11 -> clang+llvm-11.1.0-i386-unknown-freebsd11.tar.xz +11.1.0-x86_32-linux/freebsd/12 -> clang+llvm-11.1.0-i386-unknown-freebsd12.tar.xz +11.1.0-x86_64-linux/amzn/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/arch/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/centos/6 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/centos/7 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/chainguard/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/debian/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/debian/8 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/debian/9 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/fedora/26 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/fedora/27 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/fedora/42 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/freebsd/11 -> clang+llvm-11.1.0-amd64-unknown-freebsd11.tar.xz +11.1.0-x86_64-linux/freebsd/12 -> clang+llvm-11.1.0-amd64-unknown-freebsd12.tar.xz +11.1.0-x86_64-linux/linuxmint/18 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/linuxmint/19 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/rhel/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/suse/11.3 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/12.2 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/12.3 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/12.4 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/15.5 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/16.0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/suse/17.0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +11.1.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +11.1.0-x86_64-linux/wolfi/0 -> clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +12.0.0-aarch64-linux/amzn/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/arch/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/centos/6 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/centos/7 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/chainguard/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/debian/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/debian/8 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/debian/9 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/fedora/26 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/fedora/27 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/fedora/42 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/raspbian/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/rhel/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/11.3 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/12.2 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/12.3 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/12.4 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/15.5 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/16.0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/suse/17.0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-aarch64-linux/wolfi/0 -> clang+llvm-12.0.0-aarch64-linux-gnu.tar.xz +12.0.0-armv7a-linux/arch/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/centos/6 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/centos/7 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/chainguard/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/debian/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/debian/8 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/debian/9 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/fedora/26 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/fedora/27 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/fedora/42 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/raspbian/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/rhel/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-armv7a-linux/wolfi/0 -> clang+llvm-12.0.0-armv7a-linux-gnueabihf.tar.xz +12.0.0-x86_32-linux/freebsd/11 -> clang+llvm-12.0.0-i386-unknown-freebsd11.tar.xz +12.0.0-x86_32-linux/freebsd/12 -> clang+llvm-12.0.0-i386-unknown-freebsd12.tar.xz +12.0.0-x86_64-darwin/darwin/ -> clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz +12.0.0-x86_64-linux/amzn/0 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/arch/0 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/centos/6 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/centos/7 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/chainguard/0 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/debian/0 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/debian/8 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/debian/9 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/fedora/26 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/fedora/27 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/fedora/42 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/freebsd/11 -> clang+llvm-12.0.0-amd64-unknown-freebsd11.tar.xz +12.0.0-x86_64-linux/freebsd/12 -> clang+llvm-12.0.0-amd64-unknown-freebsd12.tar.xz +12.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/rhel/0 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/suse/11.3 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/12.2 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/12.3 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/12.4 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/15.5 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/16.0 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/suse/17.0 -> clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +12.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.0-x86_64-linux/wolfi/0 -> clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +12.0.1-aarch64-linux/amzn/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/arch/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/centos/6 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/centos/7 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/chainguard/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/debian/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/debian/8 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/debian/9 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/fedora/26 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/fedora/27 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/fedora/42 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/raspbian/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/rhel/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/11.3 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/12.2 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/12.3 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/12.4 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/15.5 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/16.0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/suse/17.0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-aarch64-linux/wolfi/0 -> clang+llvm-12.0.1-aarch64-linux-gnu.tar.xz +12.0.1-armv7a-linux/arch/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/centos/6 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/centos/7 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/chainguard/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/debian/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/debian/8 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/debian/9 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/fedora/26 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/fedora/27 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/fedora/42 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/raspbian/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/rhel/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-armv7a-linux/wolfi/0 -> clang+llvm-12.0.1-armv7a-linux-gnueabihf.tar.xz +12.0.1-powerpc64le-linux/arch/0 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/debian/0 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/debian/8 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/debian/9 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-12.0.1-powerpc64le-linux-rhel-7.9.tar.xz +12.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +12.0.1-x86_32-linux/freebsd/11 -> clang+llvm-12.0.1-i386-unknown-freebsd11.tar.xz +12.0.1-x86_32-linux/freebsd/12 -> clang+llvm-12.0.1-i386-unknown-freebsd12.tar.xz +12.0.1-x86_64-linux/amzn/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/arch/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/centos/6 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/centos/7 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/chainguard/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/debian/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/debian/8 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/debian/9 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/fedora/26 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/fedora/27 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/fedora/42 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/freebsd/11 -> clang+llvm-12.0.1-amd64-unknown-freebsd11.tar.xz +12.0.1-x86_64-linux/freebsd/12 -> clang+llvm-12.0.1-amd64-unknown-freebsd12.tar.xz +12.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/rhel/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/11.3 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/12.2 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/12.3 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/12.4 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/15.5 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/16.0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/suse/17.0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +12.0.1-x86_64-linux/wolfi/0 -> clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-powerpc64le-linux/arch/0 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/debian/0 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/debian/8 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/debian/9 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-13.0.0-powerpc64le-linux-rhel-7.9.tar.xz +13.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +13.0.0-x86_32-linux/freebsd/12 -> clang+llvm-13.0.0-i386-unknown-freebsd12.tar.xz +13.0.0-x86_32-linux/freebsd/13 -> clang+llvm-13.0.0-i386-unknown-freebsd13.tar.xz +13.0.0-x86_64-darwin/darwin/ -> clang+llvm-13.0.0-x86_64-apple-darwin.tar.xz +13.0.0-x86_64-linux/amzn/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/arch/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/centos/6 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/centos/7 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/chainguard/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/debian/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/debian/8 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/debian/9 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/fedora/26 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/fedora/27 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/fedora/42 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/freebsd/12 -> clang+llvm-13.0.0-amd64-unknown-freebsd12.tar.xz +13.0.0-x86_64-linux/freebsd/13 -> clang+llvm-13.0.0-amd64-unknown-freebsd13.tar.xz +13.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/rhel/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/11.3 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/12.2 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/12.3 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/12.4 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/15.5 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/16.0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/suse/17.0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +13.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.0-x86_64-linux/wolfi/0 -> clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +13.0.1-aarch64-linux/amzn/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/arch/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/centos/6 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/centos/7 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/chainguard/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/debian/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/debian/8 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/debian/9 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/fedora/26 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/fedora/27 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/fedora/42 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/raspbian/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/rhel/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/11.3 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/12.2 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/12.3 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/12.4 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/15.5 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/16.0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/suse/17.0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-aarch64-linux/wolfi/0 -> clang+llvm-13.0.1-aarch64-linux-gnu.tar.xz +13.0.1-armv7a-linux/arch/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/centos/6 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/centos/7 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/chainguard/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/debian/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/debian/8 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/debian/9 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/fedora/26 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/fedora/27 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/fedora/42 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/raspbian/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/rhel/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-armv7a-linux/wolfi/0 -> clang+llvm-13.0.1-armv7a-linux-gnueabihf.tar.xz +13.0.1-powerpc64le-linux/arch/0 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/debian/0 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/debian/8 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/debian/9 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-13.0.1-powerpc64le-linux-rhel-7.9.tar.xz +13.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +13.0.1-x86_32-linux/freebsd/12 -> clang+llvm-13.0.1-i386-unknown-freebsd12.tar.xz +13.0.1-x86_32-linux/freebsd/13 -> clang+llvm-13.0.1-i386-unknown-freebsd13.tar.xz +13.0.1-x86_64-darwin/darwin/ -> clang+llvm-13.0.1-x86_64-apple-darwin.tar.xz +13.0.1-x86_64-linux/amzn/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/arch/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/centos/6 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/centos/7 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/chainguard/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/debian/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/debian/8 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/debian/9 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/fedora/26 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/fedora/27 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/fedora/42 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/freebsd/12 -> clang+llvm-13.0.1-amd64-unknown-freebsd12.tar.xz +13.0.1-x86_64-linux/freebsd/13 -> clang+llvm-13.0.1-amd64-unknown-freebsd13.tar.xz +13.0.1-x86_64-linux/linuxmint/18 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/linuxmint/19 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/rhel/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/11.3 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/12.2 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/12.3 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/12.4 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/15.5 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/16.0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/suse/17.0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/14.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/16.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/18.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/20.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/20.10 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/22.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/ubuntu/24.04 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +13.0.1-x86_64-linux/wolfi/0 -> clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-aarch64-linux/amzn/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/arch/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/centos/6 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/centos/7 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/chainguard/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/debian/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/debian/8 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/debian/9 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/fedora/26 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/fedora/27 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/fedora/42 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/raspbian/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/rhel/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/11.3 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/12.2 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/12.3 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/12.4 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/15.5 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/16.0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/suse/17.0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-aarch64-linux/wolfi/0 -> clang+llvm-14.0.0-aarch64-linux-gnu.tar.xz +14.0.0-armv7a-linux/arch/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/centos/6 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/centos/7 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/chainguard/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/debian/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/debian/8 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/debian/9 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/fedora/26 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/fedora/27 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/fedora/42 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/raspbian/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/rhel/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-armv7a-linux/wolfi/0 -> clang+llvm-14.0.0-armv7a-linux-gnueabihf.tar.xz +14.0.0-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.0-powerpc64-ibm-aix-7.2.tar.xz +14.0.0-powerpc64le-linux/arch/0 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/debian/0 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/debian/8 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/debian/9 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.0-powerpc64le-linux-rhel-7.9.tar.xz +14.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-14.0.0-sparcv9-sun-solaris2.11.tar.xz +14.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-14.0.0-sparcv9-sun-solaris2.11.tar.xz +14.0.0-x86_32-linux/freebsd/12 -> clang+llvm-14.0.0-i386-unknown-freebsd12.tar.xz +14.0.0-x86_32-linux/freebsd/13 -> clang+llvm-14.0.0-i386-unknown-freebsd13.tar.xz +14.0.0-x86_64-darwin/darwin/ -> clang+llvm-14.0.0-x86_64-apple-darwin.tar.xz +14.0.0-x86_64-linux/amzn/0 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/arch/0 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/centos/6 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/centos/7 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/chainguard/0 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/debian/0 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/debian/8 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/debian/9 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/fedora/26 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/fedora/27 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/fedora/42 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/freebsd/12 -> clang+llvm-14.0.0-amd64-unknown-freebsd12.tar.xz +14.0.0-x86_64-linux/freebsd/13 -> clang+llvm-14.0.0-amd64-unknown-freebsd13.tar.xz +14.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-14.0.0-amd64-pc-solaris2.11.tar.xz +14.0.0-x86_64-linux/rhel/0 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/suse/11.3 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/12.2 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/12.3 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/12.4 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/15.5 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/16.0 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/suse/17.0 -> clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +14.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.0-x86_64-linux/wolfi/0 -> clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +14.0.1-aarch64-linux/amzn/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/arch/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/centos/6 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/centos/7 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/chainguard/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/debian/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/debian/8 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/debian/9 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/fedora/26 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/fedora/27 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/fedora/42 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/raspbian/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/rhel/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/11.3 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/12.2 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/12.3 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/12.4 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/15.5 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/16.0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/suse/17.0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-aarch64-linux/wolfi/0 -> clang+llvm-14.0.1-aarch64-linux-gnu.tar.xz +14.0.1-armv7a-linux/arch/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/centos/6 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/centos/7 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/chainguard/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/debian/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/debian/8 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/debian/9 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/fedora/26 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/fedora/27 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/fedora/42 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/raspbian/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/rhel/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-armv7a-linux/wolfi/0 -> clang+llvm-14.0.1-armv7a-linux-gnueabihf.tar.xz +14.0.1-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.1-powerpc64-ibm-aix-7.2.tar.xz +14.0.1-powerpc64le-linux/arch/0 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/debian/0 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/debian/8 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/debian/9 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.1-powerpc64le-linux-rhel-8.4.tar.xz +14.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.1-sparc64-linux/sun-solaris/2.11 -> clang+llvm-14.0.1-sparcv9-sun-solaris2.11.tar.xz +14.0.1-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-14.0.1-sparcv9-sun-solaris2.11.tar.xz +14.0.1-x86_64-darwin/darwin/ -> clang+llvm-14.0.1-x86_64-apple-darwin.tar.xz +14.0.1-x86_64-linux/freebsd/12 -> clang+llvm-14.0.1-amd64-unknown-freebsd12.tar.xz +14.0.1-x86_64-linux/freebsd/13 -> clang+llvm-14.0.1-amd64-unknown-freebsd13.tar.xz +14.0.1-x86_64-linux/pc-solaris/2.11 -> clang+llvm-14.0.1-amd64-pc-solaris2.11.tar.xz +14.0.2-aarch64-linux/amzn/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/arch/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/centos/6 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/centos/7 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/chainguard/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/debian/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/debian/8 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/debian/9 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/fedora/26 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/fedora/27 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/fedora/42 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/raspbian/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/rhel/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/11.3 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/12.2 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/12.3 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/12.4 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/15.5 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/16.0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/suse/17.0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-aarch64-linux/wolfi/0 -> clang+llvm-14.0.2-aarch64-linux-gnu.tar.xz +14.0.2-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.2-powerpc64-ibm-aix-7.2.tar.xz +14.0.2-x86_64-darwin/darwin/ -> clang+llvm-14.0.2-x86_64-apple-darwin.tar.xz +14.0.2-x86_64-linux/freebsd/12 -> clang+llvm-14.0.2-amd64-unknown-freebsd12.tar.xz +14.0.2-x86_64-linux/freebsd/13 -> clang+llvm-14.0.2-amd64-unknown-freebsd13.tar.xz +14.0.3-aarch64-linux/amzn/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/arch/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/centos/6 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/centos/7 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/chainguard/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/debian/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/debian/8 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/debian/9 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/fedora/26 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/fedora/27 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/fedora/42 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/raspbian/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/rhel/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/11.3 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/12.2 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/12.3 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/12.4 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/15.5 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/16.0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/suse/17.0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-aarch64-linux/wolfi/0 -> clang+llvm-14.0.3-aarch64-linux-gnu.tar.xz +14.0.3-armv7a-linux/arch/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/centos/6 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/centos/7 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/chainguard/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/debian/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/debian/8 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/debian/9 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/fedora/26 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/fedora/27 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/fedora/42 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/raspbian/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/rhel/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-armv7a-linux/wolfi/0 -> clang+llvm-14.0.3-armv7a-linux-gnueabihf.tar.xz +14.0.3-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.3-powerpc64-ibm-aix-7.2.tar.xz +14.0.3-powerpc64le-linux/arch/0 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/debian/0 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/debian/8 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/debian/9 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.3-powerpc64le-linux-rhel-8.4.tar.xz +14.0.3-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +14.0.3-x86_64-darwin/darwin/ -> clang+llvm-14.0.3-x86_64-apple-darwin.tar.xz +14.0.3-x86_64-linux/freebsd/12 -> clang+llvm-14.0.3-amd64-unknown-freebsd12.tar.xz +14.0.3-x86_64-linux/freebsd/13 -> clang+llvm-14.0.3-amd64-unknown-freebsd13.tar.xz +14.0.4-aarch64-linux/amzn/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/arch/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/centos/6 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/centos/7 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/chainguard/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/debian/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/debian/8 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/debian/9 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/fedora/26 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/fedora/27 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/fedora/42 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/raspbian/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/rhel/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/11.3 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/12.2 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/12.3 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/12.4 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/15.5 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/16.0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/suse/17.0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-aarch64-linux/wolfi/0 -> clang+llvm-14.0.4-aarch64-linux-gnu.tar.xz +14.0.4-armv7a-linux/arch/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/centos/6 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/centos/7 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/chainguard/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/debian/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/debian/8 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/debian/9 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/fedora/26 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/fedora/27 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/fedora/42 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/raspbian/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/rhel/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-armv7a-linux/wolfi/0 -> clang+llvm-14.0.4-armv7a-linux-gnueabihf.tar.xz +14.0.4-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.4-powerpc64-ibm-aix-7.2.tar.xz +14.0.4-powerpc64le-linux/arch/0 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/debian/0 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/debian/8 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/debian/9 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.4-powerpc64le-linux-rhel-8.4.tar.xz +14.0.4-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.4-x86_64-darwin/darwin/ -> clang+llvm-14.0.4-x86_64-apple-darwin.tar.xz +14.0.4-x86_64-linux/freebsd/12 -> clang+llvm-14.0.4-amd64-unknown-freebsd12.tar.xz +14.0.4-x86_64-linux/freebsd/13 -> clang+llvm-14.0.4-amd64-unknown-freebsd13.tar.xz +14.0.5-aarch64-linux/amzn/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/arch/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/centos/6 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/centos/7 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/chainguard/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/debian/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/debian/8 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/debian/9 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/fedora/26 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/fedora/27 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/fedora/42 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/raspbian/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/rhel/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/11.3 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/12.2 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/12.3 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/12.4 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/15.5 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/16.0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/suse/17.0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-aarch64-linux/wolfi/0 -> clang+llvm-14.0.5-aarch64-linux-gnu.tar.xz +14.0.5-armv7a-linux/arch/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/centos/6 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/centos/7 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/chainguard/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/debian/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/debian/8 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/debian/9 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/fedora/26 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/fedora/27 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/fedora/42 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/raspbian/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/rhel/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-armv7a-linux/wolfi/0 -> clang+llvm-14.0.5-armv7a-linux-gnueabihf.tar.xz +14.0.5-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.5-powerpc64-ibm-aix-7.2.tar.xz +14.0.5-powerpc64le-linux/arch/0 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/debian/0 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/debian/8 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/debian/9 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.5-powerpc64le-linux-rhel-8.4.tar.xz +14.0.5-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.5-x86_64-darwin/darwin/ -> clang+llvm-14.0.5-x86_64-apple-darwin.tar.xz +14.0.5-x86_64-linux/freebsd/12 -> clang+llvm-14.0.5-amd64-unknown-freebsd12.tar.xz +14.0.5-x86_64-linux/freebsd/13 -> clang+llvm-14.0.5-amd64-unknown-freebsd13.tar.xz +14.0.6-aarch64-darwin/darwin/ -> clang+llvm-14.0.6-arm64-apple-darwin22.3.0.tar.xz +14.0.6-aarch64-linux/amzn/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/arch/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/centos/6 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/centos/7 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/chainguard/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/debian/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/debian/8 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/debian/9 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/fedora/26 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/fedora/27 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/fedora/42 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/linuxmint/18 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/linuxmint/19 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/raspbian/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/rhel/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/11.3 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/12.2 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/12.3 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/12.4 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/15.5 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/16.0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/suse/17.0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-aarch64-linux/wolfi/0 -> clang+llvm-14.0.6-aarch64-linux-gnu.tar.xz +14.0.6-armv7a-linux/arch/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/centos/6 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/centos/7 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/chainguard/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/debian/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/debian/8 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/debian/9 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/fedora/26 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/fedora/27 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/fedora/42 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/linuxmint/18 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/linuxmint/19 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/raspbian/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/rhel/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/14.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/16.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/18.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/20.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/20.10 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/22.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/ubuntu/24.04 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-armv7a-linux/wolfi/0 -> clang+llvm-14.0.6-armv7a-linux-gnueabihf.tar.xz +14.0.6-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-14.0.6-powerpc64-ibm-aix-7.2.tar.xz +14.0.6-powerpc64le-linux/arch/0 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/chainguard/0 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/debian/0 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/debian/8 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/debian/9 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/fedora/26 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/fedora/27 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/fedora/42 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/linuxmint/18 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/linuxmint/19 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/rhel/0 -> clang+llvm-14.0.6-powerpc64le-linux-rhel-8.4.tar.xz +14.0.6-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-powerpc64le-linux/wolfi/0 -> clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +14.0.6-x86_64-darwin/darwin/ -> clang+llvm-14.0.6-x86_64-apple-darwin.tar.xz +14.0.6-x86_64-linux/arch/0 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/centos/6 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/centos/7 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/chainguard/0 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/debian/0 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/debian/8 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/debian/9 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/fedora/26 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/fedora/27 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/fedora/42 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/freebsd/12 -> clang+llvm-14.0.6-amd64-unknown-freebsd12.tar.xz +14.0.6-x86_64-linux/freebsd/13 -> clang+llvm-14.0.6-amd64-unknown-freebsd13.tar.xz +14.0.6-x86_64-linux/linuxmint/18 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/linuxmint/19 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/rhel/0 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/14.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/16.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/18.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/20.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/20.10 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/22.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/ubuntu/24.04 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +14.0.6-x86_64-linux/wolfi/0 -> clang+llvm-14.0.6-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-aarch64-darwin/darwin/ -> clang+llvm-15.0.0-arm64-apple-darwin21.0.tar.xz +15.0.0-aarch64-linux/amzn/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/arch/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/centos/6 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/centos/7 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/chainguard/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/debian/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/debian/8 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/debian/9 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/fedora/26 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/fedora/27 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/fedora/42 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/raspbian/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/rhel/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/11.3 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/12.2 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/12.3 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/12.4 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/15.5 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/16.0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/suse/17.0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-aarch64-linux/wolfi/0 -> clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz +15.0.0-armv7a-linux/arch/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/centos/6 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/centos/7 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/chainguard/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/debian/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/debian/8 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/debian/9 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/fedora/26 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/fedora/27 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/fedora/42 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/linuxmint/18 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/linuxmint/19 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/raspbian/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/rhel/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-armv7a-linux/wolfi/0 -> clang+llvm-15.0.0-armv7a-linux-gnueabihf.tar.xz +15.0.0-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.0-powerpc64-ibm-aix-7.2.tar.xz +15.0.0-powerpc64le-linux/arch/0 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/debian/0 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/debian/8 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/debian/9 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.0-powerpc64le-linux-rhel-8.4.tar.xz +15.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +15.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-15.0.0-sparcv9-sun-solaris2.11.tar.xz +15.0.0-sparcv9-linux/amzn/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/arch/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/centos/6 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/centos/7 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/chainguard/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/debian/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/debian/8 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/debian/9 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/fedora/26 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/fedora/27 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/fedora/42 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/linuxmint/18 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/linuxmint/19 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/rhel/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-15.0.0-sparcv9-sun-solaris2.11.tar.xz +15.0.0-sparcv9-linux/suse/11.3 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/12.2 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/12.3 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/12.4 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/15.5 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/16.0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/suse/17.0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/14.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/16.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/18.04.5 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/18.04.6 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/18.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/20.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/20.10 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/22.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/ubuntu/24.04 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-sparcv9-linux/wolfi/0 -> clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +15.0.0-x86_64-darwin/darwin/ -> clang+llvm-15.0.0-x86_64-apple-darwin.tar.xz +15.0.0-x86_64-linux/arch/0 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/centos/6 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/centos/7 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/chainguard/0 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/debian/0 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/debian/8 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/debian/9 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/fedora/26 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/fedora/27 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/fedora/42 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-15.0.0-amd64-pc-solaris2.11.tar.xz +15.0.0-x86_64-linux/rhel/0 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.0-x86_64-linux/wolfi/0 -> clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.1-aarch64-darwin/darwin/ -> clang+llvm-15.0.1-arm64-apple-darwin21.0.tar.xz +15.0.1-aarch64-linux/amzn/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/arch/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/centos/6 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/centos/7 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/chainguard/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/debian/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/debian/8 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/debian/9 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/fedora/26 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/fedora/27 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/fedora/42 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/raspbian/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/rhel/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/11.3 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/12.2 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/12.3 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/12.4 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/15.5 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/16.0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/suse/17.0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-aarch64-linux/wolfi/0 -> clang+llvm-15.0.1-aarch64-linux-gnu.tar.xz +15.0.1-armv7a-linux/arch/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/centos/6 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/centos/7 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/chainguard/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/debian/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/debian/8 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/debian/9 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/fedora/26 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/fedora/27 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/fedora/42 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/raspbian/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/rhel/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-armv7a-linux/wolfi/0 -> clang+llvm-15.0.1-armv7a-linux-gnueabihf.tar.xz +15.0.1-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.1-powerpc64-ibm-aix-7.2.tar.xz +15.0.1-powerpc64le-linux/arch/0 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/debian/0 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/debian/8 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/debian/9 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.1-powerpc64le-linux-rhel-8.4.tar.xz +15.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.1-x86_64-darwin/darwin/ -> clang+llvm-15.0.1-x86_64-apple-darwin.tar.xz +15.0.2-aarch64-darwin/darwin/ -> clang+llvm-15.0.2-arm64-apple-darwin21.0.tar.xz +15.0.2-aarch64-linux/amzn/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/arch/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/centos/6 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/centos/7 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/chainguard/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/debian/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/debian/8 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/debian/9 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/fedora/26 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/fedora/27 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/fedora/42 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/linuxmint/18 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/linuxmint/19 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/raspbian/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/rhel/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/11.3 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/12.2 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/12.3 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/12.4 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/15.5 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/16.0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/suse/17.0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-aarch64-linux/wolfi/0 -> clang+llvm-15.0.2-aarch64-linux-gnu.tar.xz +15.0.2-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.2-powerpc64-ibm-aix-7.2.tar.xz +15.0.2-powerpc64le-linux/arch/0 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/debian/0 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/debian/8 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/debian/9 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.2-powerpc64le-linux-rhel-8.4.tar.xz +15.0.2-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.2-x86_64-darwin/darwin/ -> clang+llvm-15.0.2-x86_64-apple-darwin.tar.xz +15.0.2-x86_64-linux/amzn/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/arch/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/centos/6 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/centos/7 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/chainguard/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/debian/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/debian/8 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/debian/9 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/fedora/26 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/fedora/27 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/fedora/42 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/linuxmint/18 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/linuxmint/19 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/rhel/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/11.3 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/12.2 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/12.3 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/12.4 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/15.5 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/16.0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/suse/17.0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/14.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/16.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/18.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/20.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/20.10 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/22.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/ubuntu/24.04 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.2-x86_64-linux/wolfi/0 -> clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +15.0.3-aarch64-darwin/darwin/ -> clang+llvm-15.0.3-arm64-apple-darwin21.0.tar.xz +15.0.3-aarch64-linux/amzn/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/arch/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/centos/6 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/centos/7 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/chainguard/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/debian/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/debian/8 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/debian/9 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/fedora/26 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/fedora/27 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/fedora/42 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/linuxmint/18 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/linuxmint/19 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/raspbian/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/rhel/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/11.3 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/12.2 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/12.3 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/12.4 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/15.5 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/16.0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/suse/17.0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-aarch64-linux/wolfi/0 -> clang+llvm-15.0.3-aarch64-linux-gnu.tar.xz +15.0.3-armv7a-linux/arch/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/centos/6 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/centos/7 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/chainguard/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/debian/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/debian/8 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/debian/9 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/fedora/26 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/fedora/27 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/fedora/42 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/linuxmint/18 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/linuxmint/19 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/raspbian/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/rhel/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-armv7a-linux/wolfi/0 -> clang+llvm-15.0.3-armv7a-linux-gnueabihf.tar.xz +15.0.3-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.3-powerpc64-ibm-aix-7.2.tar.xz +15.0.3-powerpc64le-linux/arch/0 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/debian/0 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/debian/8 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/debian/9 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.3-powerpc64le-linux-rhel-8.4.tar.xz +15.0.3-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.3-x86_64-darwin/darwin/ -> clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz +15.0.4-aarch64-darwin/darwin/ -> clang+llvm-15.0.4-arm64-apple-darwin21.0.tar.xz +15.0.4-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.4-powerpc64-ibm-aix-7.2.tar.xz +15.0.4-powerpc64le-linux/arch/0 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/debian/0 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/debian/8 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/debian/9 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.4-powerpc64le-linux-rhel-8.4.tar.xz +15.0.4-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.4-x86_64-darwin/darwin/ -> clang+llvm-15.0.4-x86_64-apple-darwin.tar.xz +15.0.4-x86_64-linux/arch/0 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/centos/6 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/centos/7 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/chainguard/0 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/debian/0 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/debian/8 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/debian/9 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/fedora/26 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/fedora/27 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/fedora/42 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/linuxmint/18 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/linuxmint/19 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/rhel/0 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/14.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/16.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/18.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/20.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/20.10 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/22.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/ubuntu/24.04 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.4-x86_64-linux/wolfi/0 -> clang+llvm-15.0.4-x86_64-linux-gnu-rhel-8.4.tar.xz +15.0.5-aarch64-darwin/darwin/ -> clang+llvm-15.0.5-arm64-apple-darwin21.0.tar.xz +15.0.5-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.5-powerpc64-ibm-aix-7.2.tar.xz +15.0.5-powerpc64le-linux/arch/0 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/debian/0 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/debian/8 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/debian/9 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.5-powerpc64le-linux-rhel-8.4.tar.xz +15.0.5-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +15.0.5-x86_64-linux/amzn/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/arch/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/centos/6 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/centos/7 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/chainguard/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/debian/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/debian/8 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/debian/9 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/fedora/26 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/fedora/27 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/fedora/42 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/linuxmint/18 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/linuxmint/19 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/rhel/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/11.3 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/12.2 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/12.3 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/12.4 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/15.5 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/16.0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/suse/17.0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/14.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/16.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/18.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/20.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/20.10 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/22.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/ubuntu/24.04 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.5-x86_64-linux/wolfi/0 -> clang+llvm-15.0.5-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-aarch64-darwin/darwin/ -> clang+llvm-15.0.6-arm64-apple-darwin21.0.tar.xz +15.0.6-aarch64-linux/amzn/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/arch/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/centos/6 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/centos/7 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/chainguard/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/debian/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/debian/8 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/debian/9 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/fedora/26 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/fedora/27 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/fedora/42 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/linuxmint/18 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/linuxmint/19 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/raspbian/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/rhel/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/11.3 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/12.2 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/12.3 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/12.4 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/15.5 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/16.0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/suse/17.0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-aarch64-linux/wolfi/0 -> clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +15.0.6-armv7a-linux/arch/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/centos/6 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/centos/7 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/chainguard/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/debian/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/debian/8 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/debian/9 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/fedora/26 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/fedora/27 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/fedora/42 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/linuxmint/18 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/linuxmint/19 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/raspbian/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/rhel/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/14.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/16.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/18.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/20.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/20.10 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/22.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/ubuntu/24.04 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-armv7a-linux/wolfi/0 -> clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +15.0.6-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.6-powerpc64-ibm-aix-7.2.tar.xz +15.0.6-powerpc64le-linux/arch/0 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/debian/0 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/debian/8 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/debian/9 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.6-powerpc64le-linux-rhel-8.4.tar.xz +15.0.6-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/amzn/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/arch/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/centos/6 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/centos/7 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/chainguard/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/debian/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/debian/8 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/debian/9 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/fedora/26 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/fedora/27 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/fedora/42 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/linuxmint/18 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/linuxmint/19 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/rhel/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/11.3 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/12.2 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/12.3 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/12.4 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/15.5 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/16.0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/suse/17.0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/14.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/16.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/18.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/20.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/20.10 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/22.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/ubuntu/24.04 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.6-x86_64-linux/wolfi/0 -> clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +15.0.7-aarch64-darwin/darwin/ -> clang+llvm-15.0.7-arm64-apple-darwin22.0.tar.xz +15.0.7-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-15.0.7-powerpc64-ibm-aix-7.2.tar.xz +15.0.7-powerpc64le-linux/arch/0 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/chainguard/0 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/debian/0 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/debian/8 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/debian/9 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/fedora/26 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/fedora/27 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/fedora/42 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/linuxmint/18 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/linuxmint/19 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/rhel/0 -> clang+llvm-15.0.7-powerpc64le-linux-rhel-8.4.tar.xz +15.0.7-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-powerpc64le-linux/wolfi/0 -> clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +15.0.7-x86_64-darwin/darwin/ -> clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz +16.0.0-aarch64-darwin/darwin/ -> clang+llvm-16.0.0-arm64-apple-darwin22.0.tar.xz +16.0.0-aarch64-linux/amzn/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/arch/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/centos/6 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/centos/7 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/chainguard/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/debian/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/debian/8 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/debian/9 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/fedora/26 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/fedora/27 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/fedora/42 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/raspbian/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/rhel/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/11.3 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/12.2 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/12.3 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/12.4 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/15.5 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/16.0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/suse/17.0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-aarch64-linux/wolfi/0 -> clang+llvm-16.0.0-aarch64-linux-gnu.tar.xz +16.0.0-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.0-powerpc64-ibm-aix-7.2.tar.xz +16.0.0-powerpc64le-linux/arch/0 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/chainguard/0 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/debian/0 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/debian/8 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/debian/9 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/fedora/26 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/fedora/27 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/fedora/42 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/linuxmint/18 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/linuxmint/19 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.0-powerpc64le-linux-rhel-8.4.tar.xz +16.0.0-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-powerpc64le-linux/wolfi/0 -> clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +16.0.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-16.0.0-sparcv9-sun-solaris2.11.tar.xz +16.0.0-sparcv9-linux/amzn/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/arch/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/centos/6 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/centos/7 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/chainguard/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/debian/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/debian/8 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/debian/9 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/fedora/26 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/fedora/27 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/fedora/42 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/linuxmint/18 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/linuxmint/19 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/rhel/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-16.0.0-sparcv9-sun-solaris2.11.tar.xz +16.0.0-sparcv9-linux/suse/11.3 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/12.2 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/12.3 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/12.4 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/15.5 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/16.0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/suse/17.0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/14.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/16.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/18.04.5 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/18.04.6 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/18.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/20.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/20.10 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/22.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/ubuntu/24.04 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-sparcv9-linux/wolfi/0 -> clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +16.0.0-x86_64-linux/amzn/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/arch/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/centos/6 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/centos/7 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/chainguard/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/debian/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/debian/8 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/debian/9 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/fedora/26 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/fedora/27 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/fedora/42 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/freebsd/13 -> clang+llvm-16.0.0-amd64-unknown-freebsd13.tar.xz +16.0.0-x86_64-linux/linuxmint/18 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/linuxmint/19 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-16.0.0-amd64-pc-solaris2.11.tar.xz +16.0.0-x86_64-linux/rhel/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/11.3 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/12.2 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/12.3 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/12.4 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/15.5 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/16.0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/suse/17.0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/14.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/16.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/18.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/20.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/20.10 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/22.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/ubuntu/24.04 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.0-x86_64-linux/wolfi/0 -> clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +16.0.1-aarch64-darwin/darwin/ -> clang+llvm-16.0.1-arm64-apple-darwin22.0.tar.xz +16.0.1-aarch64-linux/amzn/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/arch/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/centos/6 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/centos/7 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/chainguard/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/debian/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/debian/8 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/debian/9 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/fedora/26 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/fedora/27 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/fedora/42 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/raspbian/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/rhel/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/11.3 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/12.2 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/12.3 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/12.4 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/15.5 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/16.0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/suse/17.0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-aarch64-linux/wolfi/0 -> clang+llvm-16.0.1-aarch64-linux-gnu.tar.xz +16.0.1-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.1-powerpc64-ibm-aix-7.2.tar.xz +16.0.1-powerpc64le-linux/arch/0 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/chainguard/0 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/debian/0 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/debian/8 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/debian/9 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/fedora/26 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/fedora/27 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/fedora/42 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/linuxmint/18 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/linuxmint/19 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.1-powerpc64le-linux-rhel-8.4.tar.xz +16.0.1-powerpc64le-linux/ubuntu/14.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/16.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/18.04.5 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/18.04.6 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/18.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/20.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/20.10 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/22.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/ubuntu/24.04 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-powerpc64le-linux/wolfi/0 -> clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +16.0.1-x86_64-linux/freebsd/13 -> clang+llvm-16.0.1-amd64-unknown-freebsd13.tar.xz +16.0.2-aarch64-darwin/darwin/ -> clang+llvm-16.0.2-arm64-apple-darwin22.0.tar.xz +16.0.2-aarch64-linux/amzn/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/arch/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/centos/6 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/centos/7 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/chainguard/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/debian/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/debian/8 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/debian/9 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/fedora/26 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/fedora/27 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/fedora/42 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/raspbian/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/rhel/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/11.3 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/12.2 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/12.3 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/12.4 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/15.5 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/16.0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/suse/17.0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-aarch64-linux/wolfi/0 -> clang+llvm-16.0.2-aarch64-linux-gnu.tar.xz +16.0.2-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.2-powerpc64-ibm-aix-7.2.tar.xz +16.0.2-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.2-powerpc64le-linux-rhel-8.4.tar.xz +16.0.2-x86_64-linux/amzn/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/arch/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/centos/6 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/centos/7 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/chainguard/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/debian/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/debian/8 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/debian/9 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/fedora/26 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/fedora/27 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/fedora/42 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/freebsd/13 -> clang+llvm-16.0.2-amd64-unknown-freebsd13.tar.xz +16.0.2-x86_64-linux/linuxmint/18 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/linuxmint/19 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/rhel/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/11.3 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/12.2 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/12.3 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/12.4 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/15.5 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/16.0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/suse/17.0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/14.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/16.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/18.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/20.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/20.10 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/22.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/ubuntu/24.04 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.2-x86_64-linux/wolfi/0 -> clang+llvm-16.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-aarch64-darwin/darwin/ -> clang+llvm-16.0.3-arm64-apple-darwin22.0.tar.xz +16.0.3-aarch64-linux/amzn/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/arch/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/centos/6 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/centos/7 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/chainguard/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/debian/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/debian/8 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/debian/9 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/fedora/26 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/fedora/27 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/fedora/42 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/raspbian/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/rhel/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/11.3 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/12.2 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/12.3 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/12.4 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/15.5 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/16.0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/suse/17.0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-aarch64-linux/wolfi/0 -> clang+llvm-16.0.3-aarch64-linux-gnu.tar.xz +16.0.3-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.3-powerpc64-ibm-aix-7.2.tar.xz +16.0.3-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.3-powerpc64le-linux-rhel-8.4.tar.xz +16.0.3-x86_64-linux/amzn/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/arch/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/centos/6 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/centos/7 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/chainguard/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/debian/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/debian/8 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/debian/9 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/fedora/26 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/fedora/27 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/fedora/42 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/linuxmint/18 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/linuxmint/19 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/rhel/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/11.3 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/12.2 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/12.3 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/12.4 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/15.5 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/16.0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/suse/17.0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/14.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/16.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/18.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/20.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/20.10 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/22.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/ubuntu/24.04 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.3-x86_64-linux/wolfi/0 -> clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-aarch64-darwin/darwin/ -> clang+llvm-16.0.4-arm64-apple-darwin22.0.tar.xz +16.0.4-aarch64-linux/amzn/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/arch/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/centos/6 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/centos/7 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/chainguard/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/debian/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/debian/8 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/debian/9 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/fedora/26 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/fedora/27 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/fedora/42 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/raspbian/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/rhel/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/11.3 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/12.2 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/12.3 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/12.4 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/15.5 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/16.0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/suse/17.0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-aarch64-linux/wolfi/0 -> clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz +16.0.4-armv7a-linux/arch/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/centos/6 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/centos/7 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/chainguard/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/debian/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/debian/8 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/debian/9 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/fedora/26 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/fedora/27 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/fedora/42 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/linuxmint/18 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/linuxmint/19 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/raspbian/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/rhel/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/14.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/16.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/18.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/20.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/20.10 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/22.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/ubuntu/24.04 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-armv7a-linux/wolfi/0 -> clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz +16.0.4-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.4-powerpc64-ibm-aix-7.2.tar.xz +16.0.4-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.4-powerpc64le-linux-rhel-8.4.tar.xz +16.0.4-x86_64-linux/amzn/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/arch/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/centos/6 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/centos/7 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/chainguard/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/debian/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/debian/8 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/debian/9 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/fedora/26 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/fedora/27 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/fedora/42 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/freebsd/13 -> clang+llvm-16.0.4-amd64-unknown-freebsd13.tar.xz +16.0.4-x86_64-linux/linuxmint/18 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/linuxmint/19 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/rhel/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/11.3 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/12.2 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/12.3 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/12.4 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/15.5 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/16.0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/suse/17.0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/14.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/16.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/18.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/20.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/20.10 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/22.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/ubuntu/24.04 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.4-x86_64-linux/wolfi/0 -> clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +16.0.5-aarch64-darwin/darwin/ -> clang+llvm-16.0.5-arm64-apple-darwin22.0.tar.xz +16.0.5-aarch64-linux/amzn/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/arch/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/centos/6 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/centos/7 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/chainguard/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/debian/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/debian/8 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/debian/9 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/fedora/26 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/fedora/27 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/fedora/42 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/raspbian/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/rhel/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/11.3 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/12.2 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/12.3 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/12.4 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/15.5 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/16.0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/suse/17.0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-aarch64-linux/wolfi/0 -> clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz +16.0.5-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-16.0.5-powerpc64-ibm-aix-7.2.tar.xz +16.0.5-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.5-powerpc64le-linux-rhel-8.7.tar.xz +16.0.5-x86_64-linux/freebsd/13 -> clang+llvm-16.0.5-amd64-unknown-freebsd13.tar.xz +16.0.6-aarch64-linux/amzn/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/arch/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/centos/6 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/centos/7 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/chainguard/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/debian/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/debian/8 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/debian/9 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/fedora/26 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/fedora/27 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/fedora/42 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/linuxmint/18 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/linuxmint/19 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/raspbian/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/rhel/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/11.3 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/12.2 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/12.3 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/12.4 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/15.5 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/16.0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/suse/17.0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-aarch64-linux/wolfi/0 -> clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz +16.0.6-powerpc64le-linux/rhel/0 -> clang+llvm-16.0.6-powerpc64le-linux-rhel-8.7.tar.xz +17.0.1-aarch64-darwin/darwin/ -> clang+llvm-17.0.1-arm64-apple-darwin22.0.tar.xz +17.0.1-aarch64-linux/amzn/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/arch/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/centos/6 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/centos/7 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/chainguard/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/debian/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/debian/8 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/debian/9 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/fedora/26 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/fedora/27 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/fedora/42 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/raspbian/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/rhel/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/11.3 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/12.2 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/12.3 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/12.4 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/15.5 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/16.0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/suse/17.0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-aarch64-linux/wolfi/0 -> clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz +17.0.1-armv7a-linux/arch/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/centos/6 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/centos/7 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/chainguard/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/debian/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/debian/8 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/debian/9 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/fedora/26 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/fedora/27 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/fedora/42 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/raspbian/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/rhel/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-armv7a-linux/wolfi/0 -> clang+llvm-17.0.1-armv7a-linux-gnueabihf.tar.gz +17.0.1-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.1-final_powerpc64-ibm-aix-7.2.tar.xz +17.0.1-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.1-powerpc64le-linux-rhel-8.8.tar.xz +17.0.1-sparc64-linux/sun-solaris/2.11 -> clang+llvm-17.0.1-sparcv9-sun-solaris2.11.tar.xz +17.0.1-sparcv9-linux/amzn/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/arch/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/centos/6 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/centos/7 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/chainguard/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/debian/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/debian/8 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/debian/9 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/fedora/26 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/fedora/27 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/fedora/42 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/linuxmint/18 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/linuxmint/19 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/rhel/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-17.0.1-sparcv9-sun-solaris2.11.tar.xz +17.0.1-sparcv9-linux/suse/11.3 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/12.2 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/12.3 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/12.4 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/15.5 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/16.0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/suse/17.0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/14.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/16.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/18.04.5 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/18.04.6 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/18.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/20.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/20.10 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/22.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/ubuntu/24.04 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-sparcv9-linux/wolfi/0 -> clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +17.0.1-x86_64-linux/pc-solaris/2.11 -> clang+llvm-17.0.1-amd64-pc-solaris2.11.tar.xz +17.0.2-aarch64-darwin/darwin/ -> clang+llvm-17.0.2-arm64-apple-darwin22.0.tar.xz +17.0.2-aarch64-linux/amzn/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/arch/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/centos/6 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/centos/7 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/chainguard/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/debian/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/debian/8 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/debian/9 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/fedora/26 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/fedora/27 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/fedora/42 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/raspbian/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/rhel/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/11.3 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/12.2 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/12.3 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/12.4 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/15.5 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/16.0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/suse/17.0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-aarch64-linux/wolfi/0 -> clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz +17.0.2-armv7a-linux/arch/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/centos/6 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/centos/7 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/chainguard/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/debian/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/debian/8 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/debian/9 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/fedora/26 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/fedora/27 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/fedora/42 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/raspbian/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/rhel/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-armv7a-linux/wolfi/0 -> clang+llvm-17.0.2-armv7a-linux-gnueabihf.tar.gz +17.0.2-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.2-powerpc64-ibm-aix-7.2.tar.xz +17.0.2-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.2-powerpc64le-linux-rhel-8.8.tar.xz +17.0.2-sparc64-linux/sun-solaris/2.11 -> clang+llvm-17.0.2-sparcv9-sun-solaris2.11.tar.xz +17.0.2-sparcv9-linux/amzn/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/arch/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/centos/6 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/centos/7 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/chainguard/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/debian/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/debian/8 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/debian/9 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/fedora/26 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/fedora/27 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/fedora/42 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/linuxmint/18 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/linuxmint/19 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/rhel/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-17.0.2-sparcv9-sun-solaris2.11.tar.xz +17.0.2-sparcv9-linux/suse/11.3 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/12.2 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/12.3 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/12.4 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/15.5 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/16.0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/suse/17.0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/14.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/16.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/18.04.5 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/18.04.6 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/18.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/20.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/20.10 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/22.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/ubuntu/24.04 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-sparcv9-linux/wolfi/0 -> clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +17.0.2-x86_64-linux/amzn/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/arch/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/centos/6 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/centos/7 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/chainguard/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/debian/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/debian/8 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/debian/9 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/fedora/26 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/fedora/27 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/fedora/42 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/linuxmint/18 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/linuxmint/19 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/pc-solaris/2.11 -> clang+llvm-17.0.2-amd64-pc-solaris2.11.tar.xz +17.0.2-x86_64-linux/rhel/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/11.3 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/12.2 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/12.3 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/12.4 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/15.5 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/16.0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/suse/17.0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/14.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/16.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/18.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/20.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/20.10 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/22.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/ubuntu/24.04 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.2-x86_64-linux/wolfi/0 -> clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.3-aarch64-darwin/darwin/ -> clang+llvm-17.0.3-arm64-apple-darwin22.0.tar.xz +17.0.3-aarch64-linux/amzn/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/arch/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/centos/6 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/centos/7 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/chainguard/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/debian/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/debian/8 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/debian/9 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/fedora/26 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/fedora/27 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/fedora/42 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/raspbian/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/rhel/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/11.3 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/12.2 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/12.3 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/12.4 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/15.5 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/16.0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/suse/17.0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-aarch64-linux/wolfi/0 -> clang+llvm-17.0.3-aarch64-linux-gnu.tar.xz +17.0.3-armv7a-linux/arch/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/centos/6 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/centos/7 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/chainguard/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/debian/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/debian/8 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/debian/9 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/fedora/26 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/fedora/27 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/fedora/42 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/raspbian/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/rhel/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-armv7a-linux/wolfi/0 -> clang+llvm-17.0.3-armv7a-linux-gnueabihf.tar.gz +17.0.3-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.3-powerpc64-ibm-aix-7.2.tar.xz +17.0.3-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.3-powerpc64le-linux-rhel-8.8.tar.xz +17.0.4-aarch64-darwin/darwin/ -> clang+llvm-17.0.4-arm64-apple-darwin22.0.tar.xz +17.0.4-aarch64-linux/amzn/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/arch/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/centos/6 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/centos/7 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/chainguard/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/debian/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/debian/8 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/debian/9 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/fedora/26 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/fedora/27 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/fedora/42 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/raspbian/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/rhel/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/11.3 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/12.2 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/12.3 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/12.4 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/15.5 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/16.0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/suse/17.0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-aarch64-linux/wolfi/0 -> clang+llvm-17.0.4-aarch64-linux-gnu.tar.xz +17.0.4-armv7a-linux/arch/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/centos/6 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/centos/7 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/chainguard/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/debian/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/debian/8 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/debian/9 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/fedora/26 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/fedora/27 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/fedora/42 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/raspbian/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/rhel/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-armv7a-linux/wolfi/0 -> clang+llvm-17.0.4-armv7a-linux-gnueabihf.tar.gz +17.0.4-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.4-powerpc64-ibm-aix-7.2.tar.xz +17.0.4-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.4-powerpc64le-linux-rhel-8.8.tar.xz +17.0.4-x86_64-linux/amzn/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/arch/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/centos/6 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/centos/7 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/chainguard/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/debian/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/debian/8 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/debian/9 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/fedora/26 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/fedora/27 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/fedora/42 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/linuxmint/18 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/linuxmint/19 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/rhel/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/11.3 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/12.2 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/12.3 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/12.4 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/15.5 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/16.0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/suse/17.0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/14.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/16.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/18.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/20.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/20.10 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/22.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/ubuntu/24.04 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.4-x86_64-linux/wolfi/0 -> clang+llvm-17.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-aarch64-darwin/darwin/ -> clang+llvm-17.0.5-arm64-apple-darwin22.0.tar.xz +17.0.5-aarch64-linux/amzn/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/arch/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/centos/6 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/centos/7 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/chainguard/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/debian/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/debian/8 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/debian/9 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/fedora/26 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/fedora/27 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/fedora/42 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/raspbian/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/rhel/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/11.3 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/12.2 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/12.3 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/12.4 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/15.5 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/16.0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/suse/17.0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-aarch64-linux/wolfi/0 -> clang+llvm-17.0.5-aarch64-linux-gnu.tar.xz +17.0.5-armv7a-linux/arch/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/centos/6 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/centos/7 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/chainguard/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/debian/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/debian/8 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/debian/9 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/fedora/26 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/fedora/27 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/fedora/42 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/raspbian/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/rhel/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-armv7a-linux/wolfi/0 -> clang+llvm-17.0.5-armv7a-linux-gnueabihf.tar.gz +17.0.5-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.5-powerpc64-ibm-aix-7.2.tar.xz +17.0.5-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.5-powerpc64le-linux-rhel-8.8.tar.xz +17.0.5-x86_64-linux/amzn/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/arch/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/centos/6 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/centos/7 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/chainguard/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/debian/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/debian/8 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/debian/9 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/fedora/26 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/fedora/27 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/fedora/42 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/linuxmint/18 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/linuxmint/19 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/rhel/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/11.3 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/12.2 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/12.3 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/12.4 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/15.5 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/16.0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/suse/17.0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/14.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/16.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/18.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/20.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/20.10 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/22.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/ubuntu/24.04 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.5-x86_64-linux/wolfi/0 -> clang+llvm-17.0.5-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-aarch64-darwin/darwin/ -> clang+llvm-17.0.6-arm64-apple-darwin22.0.tar.xz +17.0.6-aarch64-linux/amzn/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/arch/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/centos/6 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/centos/7 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/chainguard/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/debian/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/debian/8 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/debian/9 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/fedora/26 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/fedora/27 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/fedora/42 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/linuxmint/18 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/linuxmint/19 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/raspbian/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/rhel/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/11.3 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/12.2 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/12.3 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/12.4 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/15.5 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/16.0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/suse/17.0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-aarch64-linux/wolfi/0 -> clang+llvm-17.0.6-aarch64-linux-gnu.tar.xz +17.0.6-armv7a-linux/arch/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/centos/6 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/centos/7 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/chainguard/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/debian/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/debian/8 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/debian/9 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/fedora/26 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/fedora/27 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/fedora/42 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/linuxmint/18 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/linuxmint/19 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/raspbian/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/rhel/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/14.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/16.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/18.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/20.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/20.10 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/22.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/ubuntu/24.04 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-armv7a-linux/wolfi/0 -> clang+llvm-17.0.6-armv7a-linux-gnueabihf.tar.gz +17.0.6-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-17.0.6-powerpc64-ibm-aix-7.2.tar.xz +17.0.6-powerpc64le-linux/rhel/0 -> clang+llvm-17.0.6-powerpc64le-linux-rhel-8.8.tar.xz +17.0.6-sparc64-linux/sun-solaris/2.11 -> clang+llvm-17.0.6-sparcv9-sun-solaris2.11.tar.xz +17.0.6-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-17.0.6-sparcv9-sun-solaris2.11.tar.xz +17.0.6-x86_64-linux/amzn/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/arch/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/centos/6 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/centos/7 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/chainguard/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/debian/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/debian/8 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/debian/9 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/fedora/26 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/fedora/27 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/fedora/42 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/linuxmint/18 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/linuxmint/19 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/pc-solaris/2.11 -> clang+llvm-17.0.6-amd64-pc-solaris2.11.tar.xz +17.0.6-x86_64-linux/rhel/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/11.3 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/12.2 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/12.3 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/12.4 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/15.5 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/16.0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/suse/17.0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/14.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/16.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/18.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/20.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/20.10 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/22.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/ubuntu/24.04 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +17.0.6-x86_64-linux/wolfi/0 -> clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04.tar.xz +18.1.0-aarch64-linux/amzn/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/arch/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/centos/6 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/centos/7 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/chainguard/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/debian/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/debian/8 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/debian/9 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/fedora/26 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/fedora/27 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/fedora/42 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/raspbian/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/rhel/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/11.3 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/12.2 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/12.3 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/12.4 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/15.5 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/16.0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/suse/17.0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-aarch64-linux/wolfi/0 -> clang+llvm-18.1.0-aarch64-linux-gnu.tar.xz +18.1.0-armv7a-linux/arch/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/centos/6 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/centos/7 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/chainguard/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/debian/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/debian/8 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/debian/9 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/fedora/26 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/fedora/27 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/fedora/42 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/raspbian/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/rhel/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-armv7a-linux/wolfi/0 -> clang+llvm-18.1.0-armv7a-linux-gnueabihf.tar.gz +18.1.0-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.0-powerpc64-ibm-aix-7.2.tar.xz +18.1.0-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.0-powerpc64le-linux-rhel-8.8.tar.xz +18.1.0-sparc64-linux/sun-solaris/2.11 -> clang+llvm-18.1.0-sparcv9-sun-solaris2.11.tar.xz +18.1.0-sparcv9-linux/amzn/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/arch/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/centos/6 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/centos/7 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/chainguard/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/debian/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/debian/8 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/debian/9 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/fedora/26 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/fedora/27 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/fedora/42 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/linuxmint/18 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/linuxmint/19 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/rhel/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-18.1.0-sparcv9-sun-solaris2.11.tar.xz +18.1.0-sparcv9-linux/suse/11.3 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/12.2 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/12.3 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/12.4 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/15.5 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/16.0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/suse/17.0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/14.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/16.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/18.04.5 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/18.04.6 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/18.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/20.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/20.10 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/22.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/ubuntu/24.04 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-sparcv9-linux/wolfi/0 -> clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz +18.1.0-x86_64-linux/pc-solaris/2.11 -> clang+llvm-18.1.0-amd64-pc-solaris2.11.tar.xz +18.1.0-x86_64-windows/windows/ -> clang+llvm-18.1.0-x86_64-pc-windows-msvc.tar.xz +18.1.1-aarch64-linux/amzn/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/arch/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/centos/6 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/centos/7 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/chainguard/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/debian/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/debian/8 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/debian/9 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/fedora/26 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/fedora/27 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/fedora/42 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/raspbian/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/rhel/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/11.3 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/12.2 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/12.3 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/12.4 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/15.5 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/16.0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/suse/17.0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-aarch64-linux/wolfi/0 -> clang+llvm-18.1.1-aarch64-linux-gnu.tar.xz +18.1.1-armv7a-linux/arch/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/centos/6 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/centos/7 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/chainguard/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/debian/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/debian/8 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/debian/9 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/fedora/26 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/fedora/27 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/fedora/42 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/raspbian/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/rhel/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-armv7a-linux/wolfi/0 -> clang+llvm-18.1.1-armv7a-linux-gnueabihf.tar.gz +18.1.1-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.1-powerpc64-ibm-aix-7.2.tar.xz +18.1.1-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.1-powerpc64le-linux-rhel-8.8.tar.xz +18.1.1-x86_64-windows/windows/ -> clang+llvm-18.1.1-x86_64-pc-windows-msvc.tar.xz +18.1.2-aarch64-linux/amzn/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/arch/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/centos/6 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/centos/7 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/chainguard/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/debian/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/debian/8 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/debian/9 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/fedora/26 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/fedora/27 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/fedora/42 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/raspbian/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/rhel/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/11.3 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/12.2 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/12.3 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/12.4 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/15.5 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/16.0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/suse/17.0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-aarch64-linux/wolfi/0 -> clang+llvm-18.1.2-aarch64-linux-gnu.tar.xz +18.1.2-armv7a-linux/arch/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/centos/6 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/centos/7 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/chainguard/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/debian/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/debian/8 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/debian/9 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/fedora/26 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/fedora/27 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/fedora/42 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/raspbian/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/rhel/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-armv7a-linux/wolfi/0 -> clang+llvm-18.1.2-armv7a-linux-gnueabihf.tar.gz +18.1.2-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.2-powerpc64-ibm-aix-7.2.tar.xz +18.1.2-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.2-powerpc64le-linux-rhel-8.8.tar.xz +18.1.2-sparc64-linux/sun-solaris/2.11 -> clang+llvm-18.1.2-sparcv9-sun-solaris2.11.tar.xz +18.1.2-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-18.1.2-sparcv9-sun-solaris2.11.tar.xz +18.1.2-x86_64-linux/pc-solaris/2.11 -> clang+llvm-18.1.2-amd64-pc-solaris2.11.tar.xz +18.1.2-x86_64-windows/windows/ -> clang+llvm-18.1.2-x86_64-pc-windows-msvc.tar.xz +18.1.3-aarch64-linux/amzn/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/arch/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/centos/6 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/centos/7 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/chainguard/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/debian/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/debian/8 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/debian/9 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/fedora/26 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/fedora/27 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/fedora/42 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/raspbian/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/rhel/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/11.3 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/12.2 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/12.3 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/12.4 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/15.5 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/16.0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/suse/17.0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-aarch64-linux/wolfi/0 -> clang+llvm-18.1.3-aarch64-linux-gnu.tar.xz +18.1.3-armv7a-linux/arch/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/centos/6 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/centos/7 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/chainguard/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/debian/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/debian/8 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/debian/9 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/fedora/26 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/fedora/27 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/fedora/42 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/raspbian/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/rhel/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-armv7a-linux/wolfi/0 -> clang+llvm-18.1.3-armv7a-linux-gnueabihf.tar.gz +18.1.3-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.3-powerpc64-ibm-aix-7.2.tar.xz +18.1.3-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.3-powerpc64le-linux-rhel-8.8.tar.xz +18.1.4-aarch64-linux/amzn/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/arch/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/centos/6 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/centos/7 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/chainguard/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/debian/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/debian/8 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/debian/9 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/fedora/26 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/fedora/27 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/fedora/42 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/raspbian/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/rhel/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/11.3 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/12.2 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/12.3 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/12.4 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/15.5 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/16.0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/suse/17.0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-aarch64-linux/wolfi/0 -> clang+llvm-18.1.4-aarch64-linux-gnu.tar.xz +18.1.4-armv7a-linux/arch/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/centos/6 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/centos/7 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/chainguard/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/debian/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/debian/8 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/debian/9 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/fedora/26 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/fedora/27 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/fedora/42 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/raspbian/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/rhel/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-armv7a-linux/wolfi/0 -> clang+llvm-18.1.4-armv7a-linux-gnueabihf.tar.gz +18.1.4-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.4-powerpc64-ibm-aix-7.2.tar.xz +18.1.4-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.4-powerpc64le-linux-rhel-8.8.tar.xz +18.1.4-x86_64-linux/amzn/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/arch/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/centos/6 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/centos/7 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/chainguard/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/debian/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/debian/8 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/debian/9 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/fedora/26 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/fedora/27 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/fedora/42 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/linuxmint/18 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/linuxmint/19 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/rhel/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/11.3 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/12.2 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/12.3 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/12.4 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/15.5 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/16.0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/suse/17.0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/14.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/16.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/18.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/20.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/20.10 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/22.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/ubuntu/24.04 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-linux/wolfi/0 -> clang+llvm-18.1.4-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.4-x86_64-windows/windows/ -> clang+llvm-18.1.4-x86_64-pc-windows-msvc.tar.xz +18.1.5-aarch64-linux/amzn/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/arch/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/centos/6 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/centos/7 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/chainguard/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/debian/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/debian/8 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/debian/9 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/fedora/26 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/fedora/27 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/fedora/42 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/raspbian/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/rhel/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/11.3 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/12.2 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/12.3 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/12.4 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/15.5 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/16.0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/suse/17.0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-aarch64-linux/wolfi/0 -> clang+llvm-18.1.5-aarch64-linux-gnu.tar.xz +18.1.5-armv7a-linux/arch/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/centos/6 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/centos/7 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/chainguard/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/debian/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/debian/8 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/debian/9 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/fedora/26 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/fedora/27 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/fedora/42 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/raspbian/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/rhel/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-armv7a-linux/wolfi/0 -> clang+llvm-18.1.5-armv7a-linux-gnueabihf.tar.gz +18.1.5-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.5-powerpc64-ibm-aix-7.2.tar.xz +18.1.5-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.5-powerpc64le-linux-rhel-8.8.tar.xz +18.1.5-x86_64-windows/windows/ -> clang+llvm-18.1.5-x86_64-pc-windows-msvc.tar.xz +18.1.6-aarch64-linux/amzn/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/arch/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/centos/6 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/centos/7 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/chainguard/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/debian/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/debian/8 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/debian/9 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/fedora/26 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/fedora/27 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/fedora/42 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/raspbian/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/rhel/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/11.3 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/12.2 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/12.3 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/12.4 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/15.5 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/16.0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/suse/17.0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-aarch64-linux/wolfi/0 -> clang+llvm-18.1.6-aarch64-linux-gnu.tar.xz +18.1.6-armv7a-linux/arch/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/centos/6 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/centos/7 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/chainguard/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/debian/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/debian/8 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/debian/9 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/fedora/26 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/fedora/27 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/fedora/42 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/raspbian/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/rhel/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-armv7a-linux/wolfi/0 -> clang+llvm-18.1.6-armv7a-linux-gnueabihf.tar.gz +18.1.6-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.6-powerpc64le-linux-rhel-8.8.tar.xz +18.1.6-sparc64-linux/sun-solaris/2.11 -> clang+llvm-18.1.6-sparcv9-sun-solaris2.11.tar.xz +18.1.6-sparcv9-linux/sun-solaris/2.11 -> clang+llvm-18.1.6-sparcv9-sun-solaris2.11.tar.xz +18.1.6-x86_64-linux/pc-solaris/2.11 -> clang+llvm-18.1.6-amd64-pc-solaris2.11.tar.xz +18.1.6-x86_64-windows/windows/ -> clang+llvm-18.1.6-x86_64-pc-windows-msvc.tar.xz +18.1.7-aarch64-linux/amzn/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/arch/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/centos/6 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/centos/7 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/chainguard/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/debian/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/debian/8 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/debian/9 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/fedora/26 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/fedora/27 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/fedora/42 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/raspbian/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/rhel/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/11.3 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/12.2 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/12.3 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/12.4 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/15.5 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/16.0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/suse/17.0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-aarch64-linux/wolfi/0 -> clang+llvm-18.1.7-aarch64-linux-gnu.tar.xz +18.1.7-armv7a-linux/arch/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/centos/6 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/centos/7 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/chainguard/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/debian/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/debian/8 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/debian/9 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/fedora/26 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/fedora/27 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/fedora/42 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/raspbian/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/rhel/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-armv7a-linux/wolfi/0 -> clang+llvm-18.1.7-armv7a-linux-gnueabihf.tar.gz +18.1.7-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.7-powerpc64-ibm-aix-7.2.tar.xz +18.1.7-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.7-powerpc64le-linux-rhel-8.8.tar.xz +18.1.7-x86_64-linux/amzn/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/arch/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/centos/6 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/centos/7 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/chainguard/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/debian/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/debian/8 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/debian/9 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/fedora/26 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/fedora/27 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/fedora/42 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/linuxmint/18 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/linuxmint/19 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/rhel/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/11.3 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/12.2 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/12.3 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/12.4 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/15.5 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/16.0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/suse/17.0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/14.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/16.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/18.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/20.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/20.10 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/22.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/ubuntu/24.04 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-linux/wolfi/0 -> clang+llvm-18.1.7-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.7-x86_64-windows/windows/ -> clang+llvm-18.1.7-x86_64-pc-windows-msvc.tar.xz +18.1.8-aarch64-darwin/darwin/ -> clang+llvm-18.1.8-arm64-apple-macos11.tar.xz +18.1.8-aarch64-linux/amzn/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/arch/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/centos/6 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/centos/7 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/chainguard/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/debian/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/debian/8 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/debian/9 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/fedora/26 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/fedora/27 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/fedora/42 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/linuxmint/18 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/linuxmint/19 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/raspbian/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/rhel/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/11.3 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/12.2 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/12.3 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/12.4 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/15.5 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/16.0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/suse/17.0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/14.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/16.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/18.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/20.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/20.10 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/22.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/ubuntu/24.04 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-aarch64-linux/wolfi/0 -> clang+llvm-18.1.8-aarch64-linux-gnu.tar.xz +18.1.8-armv7a-linux/arch/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/centos/6 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/centos/7 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/chainguard/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/debian/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/debian/8 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/debian/9 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/fedora/26 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/fedora/27 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/fedora/42 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/linuxmint/18 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/linuxmint/19 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/raspbian/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/rhel/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/14.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/16.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/18.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/20.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/20.10 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/22.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/ubuntu/24.04 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-armv7a-linux/wolfi/0 -> clang+llvm-18.1.8-armv7a-linux-gnueabihf.tar.gz +18.1.8-powerpc64-linux/ibm-aix/7.2 -> clang+llvm-18.1.8-powerpc64-ibm-aix-7.2.tar.xz +18.1.8-powerpc64le-linux/rhel/0 -> clang+llvm-18.1.8-powerpc64le-linux-rhel-8.8.tar.xz +18.1.8-x86_64-linux/amzn/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/arch/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/centos/6 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/centos/7 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/chainguard/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/debian/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/debian/8 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/debian/9 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/fedora/26 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/fedora/27 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/fedora/42 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/linuxmint/18 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/linuxmint/19 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/rhel/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/11.3 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/12.2 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/12.3 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/12.4 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/15.5 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/16.0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/suse/17.0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/14.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/16.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/18.04.5 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/18.04.6 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/18.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/20.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/20.10 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/22.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/ubuntu/24.04 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-linux/wolfi/0 -> clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz +18.1.8-x86_64-windows/windows/ -> clang+llvm-18.1.8-x86_64-pc-windows-msvc.tar.xz +19.1.0-aarch64-darwin/darwin/ -> LLVM-19.1.0-macOS-ARM64.tar.xz +19.1.0-aarch64-linux/amzn/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/arch/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/centos/6 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/centos/7 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/chainguard/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/debian/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/debian/8 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/debian/9 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/fedora/26 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/fedora/27 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/fedora/42 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/raspbian/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/rhel/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/11.3 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/12.2 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/12.3 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/12.4 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/15.5 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/16.0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/suse/17.0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-aarch64-linux/wolfi/0 -> clang+llvm-19.1.0-aarch64-linux-gnu.tar.xz +19.1.0-armv7a-linux/arch/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/centos/6 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/centos/7 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/chainguard/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/debian/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/debian/8 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/debian/9 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/fedora/26 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/fedora/27 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/fedora/42 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/raspbian/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/rhel/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-armv7a-linux/wolfi/0 -> clang+llvm-19.1.0-armv7a-linux-gnueabihf.tar.gz +19.1.0-x86_64-darwin/darwin/ -> LLVM-19.1.0-macOS-X64.tar.xz +19.1.0-x86_64-linux/amzn/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/arch/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/centos/6 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/centos/7 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/chainguard/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/debian/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/debian/8 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/debian/9 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/fedora/26 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/fedora/27 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/fedora/42 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/freebsd/10 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/freebsd/11 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/freebsd/12 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/freebsd/13 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/linuxmint/18 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/linuxmint/19 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/raspbian/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/rhel/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/11.3 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/12.2 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/12.3 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/12.4 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/15.5 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/16.0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/suse/17.0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-linux/wolfi/0 -> LLVM-19.1.0-Linux-X64.tar.xz +19.1.0-x86_64-windows/windows/ -> LLVM-19.1.0-Windows-X64.tar.xz +19.1.1-aarch64-darwin/darwin/ -> LLVM-19.1.1-macOS-ARM64.tar.xz +19.1.1-aarch64-linux/amzn/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/arch/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/centos/6 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/centos/7 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/chainguard/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/debian/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/debian/8 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/debian/9 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/fedora/26 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/fedora/27 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/fedora/42 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/raspbian/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/rhel/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/11.3 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/12.2 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/12.3 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/12.4 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/15.5 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/16.0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/suse/17.0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-aarch64-linux/wolfi/0 -> clang+llvm-19.1.1-aarch64-linux-gnu.tar.xz +19.1.1-armv7a-linux/arch/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/centos/6 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/centos/7 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/chainguard/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/debian/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/debian/8 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/debian/9 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/fedora/26 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/fedora/27 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/fedora/42 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/raspbian/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/rhel/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-armv7a-linux/wolfi/0 -> clang+llvm-19.1.1-armv7a-linux-gnueabihf.tar.gz +19.1.1-x86_64-linux/amzn/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/arch/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/centos/6 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/centos/7 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/chainguard/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/debian/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/debian/8 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/debian/9 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/fedora/26 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/fedora/27 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/fedora/42 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/freebsd/10 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/freebsd/11 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/freebsd/12 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/freebsd/13 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/linuxmint/18 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/linuxmint/19 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/raspbian/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/rhel/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/11.3 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/12.2 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/12.3 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/12.4 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/15.5 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/16.0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/suse/17.0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-linux/wolfi/0 -> LLVM-19.1.1-Linux-X64.tar.xz +19.1.1-x86_64-windows/windows/ -> LLVM-19.1.1-Windows-X64.tar.xz +19.1.2-aarch64-darwin/darwin/ -> LLVM-19.1.2-macOS-ARM64.tar.xz +19.1.2-aarch64-linux/amzn/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/arch/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/centos/6 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/centos/7 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/chainguard/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/debian/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/debian/8 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/debian/9 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/fedora/26 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/fedora/27 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/fedora/42 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/raspbian/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/rhel/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/11.3 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/12.2 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/12.3 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/12.4 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/15.5 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/16.0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/suse/17.0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-aarch64-linux/wolfi/0 -> clang+llvm-19.1.2-aarch64-linux-gnu.tar.xz +19.1.2-armv7a-linux/arch/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/centos/6 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/centos/7 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/chainguard/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/debian/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/debian/8 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/debian/9 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/fedora/26 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/fedora/27 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/fedora/42 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/raspbian/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/rhel/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-armv7a-linux/wolfi/0 -> clang+llvm-19.1.2-armv7a-linux-gnueabihf.tar.gz +19.1.2-x86_64-linux/amzn/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/arch/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/centos/6 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/centos/7 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/chainguard/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/debian/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/debian/8 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/debian/9 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/fedora/26 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/fedora/27 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/fedora/42 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/freebsd/10 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/freebsd/11 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/freebsd/12 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/freebsd/13 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/linuxmint/18 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/linuxmint/19 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/raspbian/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/rhel/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/11.3 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/12.2 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/12.3 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/12.4 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/15.5 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/16.0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/suse/17.0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-linux/wolfi/0 -> LLVM-19.1.2-Linux-X64.tar.xz +19.1.2-x86_64-windows/windows/ -> LLVM-19.1.2-Windows-X64.tar.xz +19.1.3-aarch64-darwin/darwin/ -> LLVM-19.1.3-macOS-ARM64.tar.xz +19.1.3-aarch64-linux/amzn/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/arch/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/centos/6 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/centos/7 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/chainguard/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/debian/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/debian/8 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/debian/9 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/fedora/26 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/fedora/27 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/fedora/42 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/raspbian/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/rhel/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/11.3 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/12.2 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/12.3 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/12.4 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/15.5 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/16.0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/suse/17.0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-aarch64-linux/wolfi/0 -> clang+llvm-19.1.3-aarch64-linux-gnu.tar.xz +19.1.3-armv7a-linux/arch/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/centos/6 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/centos/7 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/chainguard/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/debian/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/debian/8 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/debian/9 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/fedora/26 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/fedora/27 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/fedora/42 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/raspbian/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/rhel/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-armv7a-linux/wolfi/0 -> clang+llvm-19.1.3-armv7a-linux-gnueabihf.tar.gz +19.1.3-x86_64-darwin/darwin/ -> LLVM-19.1.3-macOS-X64.tar.xz +19.1.3-x86_64-linux/amzn/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/arch/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/centos/6 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/centos/7 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/chainguard/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/debian/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/debian/8 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/debian/9 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/fedora/26 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/fedora/27 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/fedora/42 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/freebsd/10 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/freebsd/11 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/freebsd/12 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/freebsd/13 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/linuxmint/18 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/linuxmint/19 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/raspbian/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/rhel/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/11.3 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/12.2 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/12.3 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/12.4 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/15.5 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/16.0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/suse/17.0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-linux/wolfi/0 -> LLVM-19.1.3-Linux-X64.tar.xz +19.1.3-x86_64-windows/windows/ -> LLVM-19.1.3-Windows-X64.tar.xz +19.1.4-aarch64-darwin/darwin/ -> LLVM-19.1.4-macOS-ARM64.tar.xz +19.1.4-aarch64-linux/amzn/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/arch/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/centos/6 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/centos/7 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/chainguard/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/debian/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/debian/8 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/debian/9 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/fedora/26 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/fedora/27 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/fedora/42 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/raspbian/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/rhel/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/11.3 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/12.2 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/12.3 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/12.4 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/15.5 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/16.0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/suse/17.0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-aarch64-linux/wolfi/0 -> clang+llvm-19.1.4-aarch64-linux-gnu.tar.xz +19.1.4-armv7a-linux/arch/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/centos/6 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/centos/7 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/chainguard/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/debian/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/debian/8 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/debian/9 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/fedora/26 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/fedora/27 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/fedora/42 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/raspbian/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/rhel/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-armv7a-linux/wolfi/0 -> clang+llvm-19.1.4-armv7a-linux-gnueabihf.tar.gz +19.1.4-x86_64-darwin/darwin/ -> LLVM-19.1.4-macOS-X64.tar.xz +19.1.4-x86_64-linux/amzn/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/arch/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/centos/6 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/centos/7 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/chainguard/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/debian/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/debian/8 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/debian/9 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/fedora/26 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/fedora/27 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/fedora/42 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/freebsd/10 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/freebsd/11 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/freebsd/12 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/freebsd/13 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/linuxmint/18 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/linuxmint/19 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/raspbian/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/rhel/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/11.3 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/12.2 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/12.3 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/12.4 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/15.5 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/16.0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/suse/17.0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-linux/wolfi/0 -> LLVM-19.1.4-Linux-X64.tar.xz +19.1.4-x86_64-windows/windows/ -> clang+llvm-19.1.4-x86_64-pc-windows-msvc.tar.xz +19.1.5-aarch64-linux/amzn/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/arch/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/centos/6 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/centos/7 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/chainguard/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/debian/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/debian/8 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/debian/9 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/fedora/26 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/fedora/27 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/fedora/42 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/raspbian/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/rhel/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/11.3 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/12.2 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/12.3 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/12.4 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/15.5 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/16.0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/suse/17.0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-aarch64-linux/wolfi/0 -> clang+llvm-19.1.5-aarch64-linux-gnu.tar.xz +19.1.5-armv7a-linux/arch/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/centos/6 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/centos/7 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/chainguard/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/debian/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/debian/8 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/debian/9 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/fedora/26 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/fedora/27 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/fedora/42 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/raspbian/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/rhel/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-armv7a-linux/wolfi/0 -> clang+llvm-19.1.5-armv7a-linux-gnueabihf.tar.gz +19.1.5-x86_64-darwin/darwin/ -> LLVM-19.1.5-macOS-X64.tar.xz +19.1.5-x86_64-linux/amzn/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/arch/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/centos/6 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/centos/7 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/chainguard/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/debian/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/debian/8 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/debian/9 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/fedora/26 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/fedora/27 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/fedora/42 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/freebsd/10 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/freebsd/11 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/freebsd/12 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/freebsd/13 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/linuxmint/18 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/linuxmint/19 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/raspbian/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/rhel/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/11.3 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/12.2 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/12.3 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/12.4 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/15.5 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/16.0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/suse/17.0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-linux/wolfi/0 -> LLVM-19.1.5-Linux-X64.tar.xz +19.1.5-x86_64-windows/windows/ -> clang+llvm-19.1.5-x86_64-pc-windows-msvc.tar.xz +19.1.6-aarch64-darwin/darwin/ -> LLVM-19.1.6-macOS-ARM64.tar.xz +19.1.6-aarch64-linux/amzn/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/arch/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/centos/6 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/centos/7 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/chainguard/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/debian/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/debian/8 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/debian/9 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/fedora/26 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/fedora/27 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/fedora/42 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/raspbian/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/rhel/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/11.3 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/12.2 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/12.3 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/12.4 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/15.5 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/16.0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/suse/17.0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-aarch64-linux/wolfi/0 -> clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +19.1.6-armv7a-linux/arch/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/centos/6 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/centos/7 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/chainguard/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/debian/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/debian/8 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/debian/9 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/fedora/26 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/fedora/27 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/fedora/42 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/raspbian/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/rhel/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-armv7a-linux/wolfi/0 -> clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +19.1.6-x86_64-darwin/darwin/ -> LLVM-19.1.6-macOS-X64.tar.xz +19.1.6-x86_64-linux/amzn/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/arch/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/centos/6 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/centos/7 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/chainguard/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/debian/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/debian/8 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/debian/9 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/fedora/26 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/fedora/27 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/fedora/42 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/freebsd/10 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/freebsd/11 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/freebsd/12 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/freebsd/13 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/linuxmint/18 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/linuxmint/19 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/raspbian/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/rhel/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/11.3 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/12.2 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/12.3 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/12.4 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/15.5 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/16.0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/suse/17.0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-linux/wolfi/0 -> LLVM-19.1.6-Linux-X64.tar.xz +19.1.6-x86_64-windows/windows/ -> clang+llvm-19.1.6-x86_64-pc-windows-msvc.tar.xz +19.1.7-aarch64-darwin/darwin/ -> LLVM-19.1.7-macOS-ARM64.tar.xz +19.1.7-aarch64-linux/amzn/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/arch/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/centos/6 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/centos/7 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/chainguard/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/debian/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/debian/8 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/debian/9 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/fedora/26 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/fedora/27 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/fedora/42 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/linuxmint/18 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/linuxmint/19 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/raspbian/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/rhel/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/11.3 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/12.2 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/12.3 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/12.4 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/15.5 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/16.0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/suse/17.0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/14.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/16.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/18.04.5 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/18.04.6 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/18.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/20.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/20.10 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/22.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/ubuntu/24.04 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-aarch64-linux/wolfi/0 -> clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +19.1.7-armv7a-linux/arch/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/centos/6 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/centos/7 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/chainguard/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/debian/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/debian/8 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/debian/9 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/fedora/26 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/fedora/27 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/fedora/42 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/linuxmint/18 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/linuxmint/19 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/raspbian/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/rhel/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/14.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/16.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/18.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/20.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/20.10 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/22.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/ubuntu/24.04 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-armv7a-linux/wolfi/0 -> clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +19.1.7-x86_64-darwin/darwin/ -> LLVM-19.1.7-macOS-X64.tar.xz +19.1.7-x86_64-linux/amzn/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/arch/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/centos/6 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/centos/7 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/chainguard/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/debian/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/debian/8 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/debian/9 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/fedora/26 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/fedora/27 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/fedora/42 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/freebsd/10 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/freebsd/11 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/freebsd/12 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/freebsd/13 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/linuxmint/18 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/linuxmint/19 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/raspbian/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/rhel/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/11.3 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/12.2 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/12.3 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/12.4 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/15.5 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/16.0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/suse/17.0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/14.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/16.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/18.04.5 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/18.04.6 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/18.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/20.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/20.10 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/22.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/ubuntu/24.04 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-linux/wolfi/0 -> LLVM-19.1.7-Linux-X64.tar.xz +19.1.7-x86_64-windows/windows/ -> clang+llvm-19.1.7-x86_64-pc-windows-msvc.tar.xz +20.1.0-aarch64-darwin/darwin/ -> LLVM-20.1.0-macOS-ARM64.tar.xz +20.1.0-aarch64-linux/amzn/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/arch/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/centos/6 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/centos/7 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/chainguard/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/debian/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/debian/8 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/debian/9 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/fedora/26 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/fedora/27 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/fedora/42 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/freebsd/10 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/freebsd/11 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/freebsd/12 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/freebsd/13 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/linuxmint/18 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/linuxmint/19 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/raspbian/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/rhel/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/11.3 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/12.2 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/12.3 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/12.4 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/15.5 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/16.0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/suse/17.0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/14.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/16.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/18.04.5 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/18.04.6 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/18.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/20.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/20.10 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/22.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/ubuntu/24.04 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-linux/wolfi/0 -> LLVM-20.1.0-Linux-ARM64.tar.xz +20.1.0-aarch64-windows/windows/ -> clang+llvm-20.1.0-aarch64-pc-windows-msvc.tar.xz +20.1.0-armv7a-linux/arch/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/centos/6 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/centos/7 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/chainguard/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/debian/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/debian/8 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/debian/9 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/fedora/26 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/fedora/27 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/fedora/42 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/linuxmint/18 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/linuxmint/19 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/raspbian/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/rhel/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/14.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/16.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/18.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/20.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/20.10 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/22.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/ubuntu/24.04 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-armv7a-linux/wolfi/0 -> clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +20.1.0-x86_64-linux/amzn/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/arch/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/centos/6 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/centos/7 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/chainguard/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/debian/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/debian/8 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/debian/9 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/fedora/26 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/fedora/27 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/fedora/42 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/freebsd/10 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/freebsd/11 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/freebsd/12 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/freebsd/13 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/linuxmint/18 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/linuxmint/19 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/raspbian/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/rhel/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/11.3 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/12.2 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/12.3 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/12.4 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/15.5 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/16.0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/suse/17.0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/14.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/16.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/18.04.5 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/18.04.6 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/18.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/20.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/20.10 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/22.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/ubuntu/24.04 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-linux/wolfi/0 -> LLVM-20.1.0-Linux-X64.tar.xz +20.1.0-x86_64-windows/windows/ -> clang+llvm-20.1.0-x86_64-pc-windows-msvc.tar.xz +20.1.1-aarch64-darwin/darwin/ -> LLVM-20.1.1-macOS-ARM64.tar.xz +20.1.1-aarch64-linux/amzn/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/arch/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/centos/6 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/centos/7 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/chainguard/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/debian/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/debian/8 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/debian/9 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/fedora/26 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/fedora/27 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/fedora/42 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/freebsd/10 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/freebsd/11 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/freebsd/12 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/freebsd/13 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/linuxmint/18 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/linuxmint/19 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/raspbian/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/rhel/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/11.3 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/12.2 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/12.3 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/12.4 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/15.5 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/16.0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/suse/17.0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/14.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/16.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/18.04.5 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/18.04.6 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/18.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/20.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/20.10 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/22.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/ubuntu/24.04 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-linux/wolfi/0 -> LLVM-20.1.1-Linux-ARM64.tar.xz +20.1.1-aarch64-windows/windows/ -> clang+llvm-20.1.1-aarch64-pc-windows-msvc.tar.xz +20.1.1-armv7a-linux/arch/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/centos/6 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/centos/7 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/chainguard/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/debian/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/debian/8 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/debian/9 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/fedora/26 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/fedora/27 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/fedora/42 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/linuxmint/18 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/linuxmint/19 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/raspbian/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/rhel/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/14.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/16.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/18.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/20.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/20.10 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/22.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/ubuntu/24.04 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-armv7a-linux/wolfi/0 -> clang+llvm-20.1.1-armv7a-linux-gnueabihf.tar.gz +20.1.1-x86_64-linux/amzn/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/arch/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/centos/6 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/centos/7 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/chainguard/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/debian/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/debian/8 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/debian/9 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/fedora/26 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/fedora/27 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/fedora/42 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/freebsd/10 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/freebsd/11 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/freebsd/12 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/freebsd/13 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/linuxmint/18 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/linuxmint/19 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/raspbian/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/rhel/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/11.3 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/12.2 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/12.3 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/12.4 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/15.5 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/16.0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/suse/17.0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/14.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/16.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/18.04.5 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/18.04.6 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/18.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/20.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/20.10 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/22.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/ubuntu/24.04 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-linux/wolfi/0 -> LLVM-20.1.1-Linux-X64.tar.xz +20.1.1-x86_64-windows/windows/ -> clang+llvm-20.1.1-x86_64-pc-windows-msvc.tar.xz +20.1.2-aarch64-darwin/darwin/ -> LLVM-20.1.2-macOS-ARM64.tar.xz +20.1.2-aarch64-linux/amzn/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/arch/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/centos/6 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/centos/7 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/chainguard/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/debian/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/debian/8 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/debian/9 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/fedora/26 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/fedora/27 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/fedora/42 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/freebsd/10 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/freebsd/11 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/freebsd/12 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/freebsd/13 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/linuxmint/18 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/linuxmint/19 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/raspbian/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/rhel/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/11.3 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/12.2 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/12.3 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/12.4 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/15.5 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/16.0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/suse/17.0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/14.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/16.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/18.04.5 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/18.04.6 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/18.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/20.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/20.10 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/22.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/ubuntu/24.04 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-linux/wolfi/0 -> LLVM-20.1.2-Linux-ARM64.tar.xz +20.1.2-aarch64-windows/windows/ -> clang+llvm-20.1.2-aarch64-pc-windows-msvc.tar.xz +20.1.2-armv7a-linux/arch/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/centos/6 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/centos/7 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/chainguard/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/debian/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/debian/8 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/debian/9 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/fedora/26 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/fedora/27 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/fedora/42 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/linuxmint/18 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/linuxmint/19 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/raspbian/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/rhel/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/14.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/16.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/18.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/20.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/20.10 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/22.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/ubuntu/24.04 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-armv7a-linux/wolfi/0 -> clang+llvm-20.1.2-armv7a-linux-gnueabihf.tar.gz +20.1.2-x86_64-linux/amzn/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/arch/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/centos/6 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/centos/7 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/chainguard/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/debian/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/debian/8 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/debian/9 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/fedora/26 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/fedora/27 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/fedora/42 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/freebsd/10 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/freebsd/11 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/freebsd/12 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/freebsd/13 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/linuxmint/18 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/linuxmint/19 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/raspbian/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/rhel/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/11.3 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/12.2 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/12.3 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/12.4 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/15.5 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/16.0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/suse/17.0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/14.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/16.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/18.04.5 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/18.04.6 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/18.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/20.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/20.10 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/22.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/ubuntu/24.04 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-linux/wolfi/0 -> LLVM-20.1.2-Linux-X64.tar.xz +20.1.2-x86_64-windows/windows/ -> clang+llvm-20.1.2-x86_64-pc-windows-msvc.tar.xz +20.1.3-aarch64-darwin/darwin/ -> LLVM-20.1.3-macOS-ARM64.tar.xz +20.1.3-aarch64-linux/amzn/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/arch/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/centos/6 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/centos/7 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/chainguard/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/debian/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/debian/8 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/debian/9 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/fedora/26 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/fedora/27 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/fedora/42 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/freebsd/10 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/freebsd/11 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/freebsd/12 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/freebsd/13 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/linuxmint/18 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/linuxmint/19 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/raspbian/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/rhel/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/11.3 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/12.2 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/12.3 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/12.4 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/15.5 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/16.0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/suse/17.0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/14.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/16.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/18.04.5 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/18.04.6 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/18.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/20.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/20.10 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/22.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/ubuntu/24.04 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-linux/wolfi/0 -> LLVM-20.1.3-Linux-ARM64.tar.xz +20.1.3-aarch64-windows/windows/ -> clang+llvm-20.1.3-aarch64-pc-windows-msvc.tar.xz +20.1.3-armv7a-linux/arch/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/centos/6 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/centos/7 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/chainguard/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/debian/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/debian/8 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/debian/9 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/fedora/26 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/fedora/27 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/fedora/42 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/linuxmint/18 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/linuxmint/19 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/raspbian/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/rhel/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/14.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/16.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/18.04.5 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/18.04.6 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/18.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/20.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/20.10 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/22.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/ubuntu/24.04 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-armv7a-linux/wolfi/0 -> clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +20.1.3-x86_64-darwin/darwin/ -> LLVM-20.1.3-macOS-X64.tar.xz +20.1.3-x86_64-linux/amzn/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/arch/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/centos/6 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/centos/7 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/chainguard/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/debian/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/debian/8 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/debian/9 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/fedora/26 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/fedora/27 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/fedora/42 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/freebsd/10 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/freebsd/11 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/freebsd/12 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/freebsd/13 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/linuxmint/18 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/linuxmint/19 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/raspbian/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/rhel/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/11.3 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/12.2 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/12.3 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/12.4 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/15.5 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/16.0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/suse/17.0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/14.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/16.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/18.04.5 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/18.04.6 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/18.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/20.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/20.10 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/22.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/ubuntu/24.04 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-linux/wolfi/0 -> LLVM-20.1.3-Linux-X64.tar.xz +20.1.3-x86_64-windows/windows/ -> clang+llvm-20.1.3-x86_64-pc-windows-msvc.tar.xz diff --git a/toolchain/internal/llvm_distributions_select_no_error_test.sh b/toolchain/internal/llvm_distributions_select_no_error_test.sh new file mode 100755 index 000000000..854fa3664 --- /dev/null +++ b/toolchain/internal/llvm_distributions_select_no_error_test.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -euo pipefail + +grep -v "ERROR:" \ + "${TEST_SRCDIR}/_main/toolchain/internal/llvm_distributions.golden.sel.txt" \ + >"${TEST_TMPDIR}/llvm_distributions.golden.sel.no_error.txt" +grep -v "ERROR:" \ + "${TEST_SRCDIR}/_main/toolchain/internal/llvm_distributions.sel.txt" \ + >"${TEST_TMPDIR}/llvm_distributions.sel.no_error.txt" + +if ! diff -U0 \ + "${TEST_TMPDIR}/llvm_distributions.golden.sel.no_error.txt" \ + "${TEST_TMPDIR}/llvm_distributions.sel.no_error.txt"; then + echo "To update golden: " + echo " cp '${TEST_SRCDIR}/_main/toolchain/internal/llvm_distributions.sel.txt' " \ + "'toolchain/internal/llvm_distributions.golden.sel.txt'" + exit 1 +fi diff --git a/toolchain/internal/llvm_distributions_test.golden.txt b/toolchain/internal/llvm_distributions_test.golden.txt new file mode 100644 index 000000000..fb2acd378 --- /dev/null +++ b/toolchain/internal/llvm_distributions_test.golden.txt @@ -0,0 +1,164 @@ +del: clang+llvm-6.0.0-amd64-unknown-freebsd-10.tar.xz +del: clang+llvm-6.0.0-i386-unknown-freebsd-10.tar.xz +del: clang+llvm-6.0.0-i686-linux-gnu-Fedora27.tar.xz +del: clang+llvm-6.0.0-mips-linux-gnu.tar.xz +del: clang+llvm-6.0.0-mipsel-linux-gnu.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-gnu-Fedora27.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-gnu-debian8.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-6.0.0-x86_64-linux-sles12.2.tar.xz +del: clang+llvm-6.0.1-amd64-unknown-freebsd10.tar.xz +del: clang+llvm-6.0.1-i386-unknown-freebsd10.tar.xz +del: clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-14.04.tar.xz +del: clang+llvm-6.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-6.0.1-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-6.0.1-x86_64-linux-sles12.3.tar.xz +del: clang+llvm-7.0.0-amd64-unknown-freebsd-10.tar.xz +del: clang+llvm-7.0.0-i386-unknown-freebsd-10.tar.xz +del: clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +del: clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-7.0.0-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-7.0.0-x86_64-linux-sles12.3.tar.xz +del: clang+llvm-8.0.0-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-8.0.0-i386-unknown-freebsd11.tar.xz +del: clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +del: clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +del: clang+llvm-8.0.0-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-8.0.1-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-8.0.1-i386-unknown-freebsd11.tar.xz +del: clang+llvm-8.0.1-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-8.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +del: clang+llvm-8.0.1-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-9.0.0-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-9.0.0-i386-unknown-freebsd11.tar.xz +del: clang+llvm-9.0.0-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-9.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +del: clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz +del: clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz +del: clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz +del: clang+llvm-9.0.0-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-9.0.0-x86_64-pc-linux-gnu.tar.xz +del: clang+llvm-10.0.0-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-10.0.0-i386-unknown-freebsd11.tar.xz +del: clang+llvm-10.0.0-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-10.0.0-powerpc64le-linux-ubuntu-16.04.tar.xz +del: clang+llvm-10.0.0-x86_64-linux-sles11.3.tar.xz +del: clang+llvm-10.0.1-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-10.0.1-i386-unknown-freebsd11.tar.xz +del: clang+llvm-10.0.1-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-10.0.1-powerpc64le-linux-ubuntu-16.04.tar.xz +del: clang+llvm-10.0.1-x86_64-linux-sles12.4.tar.xz +del: clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-11.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +del: clang+llvm-11.0.0-x86_64-linux-sles12.4.tar.xz +del: clang+llvm-11.0.1-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-11.0.1-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-11.0.1-i386-unknown-freebsd11.tar.xz +del: clang+llvm-11.0.1-i386-unknown-freebsd12.tar.xz +del: clang+llvm-11.0.1-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-11.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-11.0.1-x86_64-linux-gnu-ubuntu-20.10.tar.xz +del: clang+llvm-11.0.1-x86_64-linux-sles12.4.tar.xz +del: clang+llvm-11.1.0-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-11.1.0-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-11.1.0-i386-unknown-freebsd11.tar.xz +del: clang+llvm-11.1.0-i386-unknown-freebsd12.tar.xz +del: clang+llvm-11.1.0-powerpc64le-linux-rhel-7.4.tar.xz +del: clang+llvm-11.1.0-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz +del: clang+llvm-12.0.0-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-12.0.0-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-12.0.0-i386-unknown-freebsd11.tar.xz +del: clang+llvm-12.0.0-i386-unknown-freebsd12.tar.xz +del: clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +del: clang+llvm-12.0.0-x86_64-linux-sles12.4.tar.xz +del: clang+llvm-12.0.1-amd64-unknown-freebsd11.tar.xz +del: clang+llvm-12.0.1-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-12.0.1-i386-unknown-freebsd11.tar.xz +del: clang+llvm-12.0.1-i386-unknown-freebsd12.tar.xz +del: clang+llvm-12.0.1-powerpc64le-linux-rhel-7.9.tar.xz +del: clang+llvm-12.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-13.0.0-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-13.0.0-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-13.0.0-i386-unknown-freebsd12.tar.xz +del: clang+llvm-13.0.0-i386-unknown-freebsd13.tar.xz +del: clang+llvm-13.0.0-powerpc64le-linux-rhel-7.9.tar.xz +del: clang+llvm-13.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +del: clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz +del: clang+llvm-13.0.1-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-13.0.1-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-13.0.1-i386-unknown-freebsd12.tar.xz +del: clang+llvm-13.0.1-i386-unknown-freebsd13.tar.xz +del: clang+llvm-13.0.1-powerpc64le-linux-rhel-7.9.tar.xz +del: clang+llvm-13.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-14.0.0-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.0-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.0-i386-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.0-i386-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.0-powerpc64le-linux-rhel-7.9.tar.xz +del: clang+llvm-14.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-14.0.0-x86_64-linux-sles12.4.tar.xz +del: clang+llvm-14.0.1-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.1-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.1-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-14.0.1-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-14.0.2-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.2-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.3-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.3-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.3-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-14.0.3-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-14.0.4-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.4-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.4-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-14.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-14.0.5-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.5-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.5-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-14.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-14.0.6-amd64-unknown-freebsd12.tar.xz +del: clang+llvm-14.0.6-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-14.0.6-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-14.0.6-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.0-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.0-powerpc64le-linux-ubuntu-18.04.6.tar.xz +del: clang+llvm-15.0.0-sparc64-unknown-linux-gnu.tar.xz +del: clang+llvm-15.0.1-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.1-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.2-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.2-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.2-x86_64-unknown-linux-gnu-rhel86.tar.xz +del: clang+llvm-15.0.2-x86_64-unknown-linux-gnu-sles15.tar.xz +del: clang+llvm-15.0.3-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.3-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.4-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.4-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.5-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.5-powerpc64le-linux-ubuntu-18.04.5.tar.xz +del: clang+llvm-15.0.6-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.6-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-15.0.7-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-15.0.7-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-16.0.0-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-16.0.0-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-16.0.0-powerpc64le-linux-ubuntu-18.04.tar.xz +del: clang+llvm-16.0.0-sparc64-unknown-linux-gnu.tar.xz +del: clang+llvm-16.0.1-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-16.0.1-powerpc64le-linux-rhel-8.4.tar.xz +del: clang+llvm-16.0.1-powerpc64le-linux-ubuntu-20.04.tar.xz +del: clang+llvm-16.0.2-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-16.0.4-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-16.0.5-amd64-unknown-freebsd13.tar.xz +del: clang+llvm-17.0.1-final_powerpc64-ibm-aix-7.2.tar.xz +del: clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz +del: clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz +del: clang+llvm-18.1.0-sparcv9-sun-solaris2.11.tar.xz +del: clang+llvm-18.1.0-sparcv9-unknown-linux-gnu.tar.xz diff --git a/toolchain/internal/llvm_requirements_test.golden.txt b/toolchain/internal/llvm_requirements_test.golden.txt new file mode 100644 index 000000000..97959e9aa --- /dev/null +++ b/toolchain/internal/llvm_requirements_test.golden.txt @@ -0,0 +1,120 @@ +[aarch64,darwin,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-macOS-ARM64.tar.xz +[aarch64,darwin,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-macOS-ARM64.tar.xz +[aarch64,darwin,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-macOS-ARM64.tar.xz +[aarch64,darwin,'latest:<20.1.0,>17.0.4']: 19.1.7 = LLVM-19.1.7-macOS-ARM64.tar.xz +[aarch64,darwin,'latest:>=15.0.6,<16']: 15.0.7 = clang+llvm-15.0.7-arm64-apple-darwin22.0.tar.xz +[aarch64,darwin,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-arm64-apple-darwin21.0.tar.xz +[aarch64,darwin,'latest']: 20.1.3 = LLVM-20.1.3-macOS-ARM64.tar.xz +[aarch64,darwin,'first']: 14.0.6 = clang+llvm-14.0.6-arm64-apple-darwin22.3.0.tar.xz +[aarch64,linux,ubuntu,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,ubuntu,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,ubuntu,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,ubuntu,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +[aarch64,linux,ubuntu,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,ubuntu,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,ubuntu,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-ARM64.tar.xz +[aarch64,linux,ubuntu,0,'first']: 6.0.0 = clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +[aarch64,linux,raspbian,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,raspbian,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,raspbian,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,raspbian,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +[aarch64,linux,raspbian,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,raspbian,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,raspbian,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-ARM64.tar.xz +[aarch64,linux,raspbian,0,'first']: 6.0.0 = clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +[aarch64,linux,rhel,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,rhel,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-ARM64.tar.xz +[aarch64,linux,rhel,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,rhel,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz +[aarch64,linux,rhel,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,rhel,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-aarch64-linux-gnu.tar.xz +[aarch64,linux,rhel,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-ARM64.tar.xz +[aarch64,linux,rhel,0,'first']: 6.0.0 = clang+llvm-6.0.0-aarch64-linux-gnu.tar.xz +[aarch64,windows,'latest:<=20.1.0']: 20.1.0 = clang+llvm-20.1.0-aarch64-pc-windows-msvc.tar.xz +[aarch64,windows,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = clang+llvm-20.1.0-aarch64-pc-windows-msvc.tar.xz +[aarch64,windows,"latest:<20.1.0,>17.0.4,!=19.1.7"]: ERROR: No matching distribution found. +[aarch64,windows,"latest:<20.1.0,>17.0.4"]: ERROR: No matching distribution found. +[aarch64,windows,"latest:>=15.0.6,<16"]: ERROR: No matching distribution found. +[aarch64,windows,"first:>=15.0.6,<16"]: ERROR: No matching distribution found. +[aarch64,windows,'latest']: 20.1.3 = clang+llvm-20.1.3-aarch64-pc-windows-msvc.tar.xz +[aarch64,windows,'first']: 20.1.0 = clang+llvm-20.1.0-aarch64-pc-windows-msvc.tar.xz +[armv7a,darwin,"latest:<=20.1.0"]: ERROR: No matching distribution found. +[armv7a,darwin,"latest:<=20.1.0,>17.0.4,!=19.1.7"]: ERROR: No matching distribution found. +[armv7a,darwin,"latest:<20.1.0,>17.0.4,!=19.1.7"]: ERROR: No matching distribution found. +[armv7a,darwin,"latest:<20.1.0,>17.0.4"]: ERROR: No matching distribution found. +[armv7a,darwin,"latest:>=15.0.6,<16"]: ERROR: No matching distribution found. +[armv7a,darwin,"first:>=15.0.6,<16"]: ERROR: No matching distribution found. +[armv7a,darwin,"latest"]: ERROR: No matching distribution found. +[armv7a,darwin,"first"]: ERROR: No matching distribution found. +[armv7a,linux,ubuntu,0,'latest:<=20.1.0']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,ubuntu,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,ubuntu,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,ubuntu,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,ubuntu,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,ubuntu,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,ubuntu,0,'latest']: 20.1.3 = clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,ubuntu,0,'first']: 6.0.0 = clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,raspbian,0,'latest:<=20.1.0']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,raspbian,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,raspbian,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,raspbian,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,raspbian,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,raspbian,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,raspbian,0,'latest']: 20.1.3 = clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,raspbian,0,'first']: 6.0.0 = clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,rhel,0,'latest:<=20.1.0']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,rhel,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = clang+llvm-20.1.0-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,rhel,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,rhel,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,rhel,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,rhel,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-armv7a-linux-gnueabihf.tar.xz +[armv7a,linux,rhel,0,'latest']: 20.1.3 = clang+llvm-20.1.3-armv7a-linux-gnueabihf.tar.gz +[armv7a,linux,rhel,0,'first']: 6.0.0 = clang+llvm-6.0.0-armv7a-linux-gnueabihf.tar.xz +[armv7a,windows,"latest:<=20.1.0"]: ERROR: No matching distribution found. +[armv7a,windows,"latest:<=20.1.0,>17.0.4,!=19.1.7"]: ERROR: No matching distribution found. +[armv7a,windows,"latest:<20.1.0,>17.0.4,!=19.1.7"]: ERROR: No matching distribution found. +[armv7a,windows,"latest:<20.1.0,>17.0.4"]: ERROR: No matching distribution found. +[armv7a,windows,"latest:>=15.0.6,<16"]: ERROR: No matching distribution found. +[armv7a,windows,"first:>=15.0.6,<16"]: ERROR: No matching distribution found. +[armv7a,windows,"latest"]: ERROR: No matching distribution found. +[armv7a,windows,"first"]: ERROR: No matching distribution found. +[x86_64,darwin,'latest:<=20.1.0']: 19.1.7 = LLVM-19.1.7-macOS-X64.tar.xz +[x86_64,darwin,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-macOS-X64.tar.xz +[x86_64,darwin,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-macOS-X64.tar.xz +[x86_64,darwin,'latest:<20.1.0,>17.0.4']: 19.1.7 = LLVM-19.1.7-macOS-X64.tar.xz +[x86_64,darwin,'latest:>=15.0.6,<16']: 15.0.7 = clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz +[x86_64,darwin,'first:>=15.0.6,<16']: 15.0.7 = clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz +[x86_64,darwin,'latest']: 20.1.3 = LLVM-20.1.3-macOS-X64.tar.xz +[x86_64,darwin,'first']: 6.0.0 = clang+llvm-6.0.0-x86_64-apple-darwin.tar.xz +[x86_64,linux,ubuntu,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,ubuntu,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,ubuntu,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-Linux-X64.tar.xz +[x86_64,linux,ubuntu,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = LLVM-19.1.7-Linux-X64.tar.xz +[x86_64,linux,ubuntu,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +[x86_64,linux,ubuntu,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +[x86_64,linux,ubuntu,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-X64.tar.xz +[x86_64,linux,ubuntu,0,'first']: 6.0.0 = clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +[x86_64,linux,raspbian,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,raspbian,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,raspbian,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-Linux-X64.tar.xz +[x86_64,linux,raspbian,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = LLVM-19.1.7-Linux-X64.tar.xz +[x86_64,linux,"latest:>=15.0.6,<16"]: ERROR: No matching distribution found. +[x86_64,linux,"first:>=15.0.6,<16"]: ERROR: No matching distribution found. +[x86_64,linux,raspbian,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-X64.tar.xz +[x86_64,linux,raspbian,0,'first']: 19.1.0 = LLVM-19.1.0-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'latest:<=20.1.0']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = LLVM-20.1.0-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = LLVM-19.1.6-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'latest:<20.1.0,>17.0.4']: 19.1.7 = LLVM-19.1.7-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'latest:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +[x86_64,linux,rhel,0,'first:>=15.0.6,<16']: 15.0.6 = clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz +[x86_64,linux,rhel,0,'latest']: 20.1.3 = LLVM-20.1.3-Linux-X64.tar.xz +[x86_64,linux,rhel,0,'first']: 6.0.0 = clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz +[x86_64,windows,'latest:<=20.1.0']: 20.1.0 = clang+llvm-20.1.0-x86_64-pc-windows-msvc.tar.xz +[x86_64,windows,'latest:<=20.1.0,>17.0.4,!=19.1.7']: 20.1.0 = clang+llvm-20.1.0-x86_64-pc-windows-msvc.tar.xz +[x86_64,windows,'latest:<20.1.0,>17.0.4,!=19.1.7']: 19.1.6 = clang+llvm-19.1.6-x86_64-pc-windows-msvc.tar.xz +[x86_64,windows,'latest:<20.1.0,>17.0.4']: 19.1.7 = clang+llvm-19.1.7-x86_64-pc-windows-msvc.tar.xz +[x86_64,windows,"latest:>=15.0.6,<16"]: ERROR: No matching distribution found. +[x86_64,windows,"first:>=15.0.6,<16"]: ERROR: No matching distribution found. +[x86_64,windows,'latest']: 20.1.3 = clang+llvm-20.1.3-x86_64-pc-windows-msvc.tar.xz +[x86_64,windows,'first']: 18.1.0 = clang+llvm-18.1.0-x86_64-pc-windows-msvc.tar.xz diff --git a/toolchain/internal/release_name.bzl b/toolchain/internal/release_name.bzl deleted file mode 100755 index eae926526..000000000 --- a/toolchain/internal/release_name.bzl +++ /dev/null @@ -1,165 +0,0 @@ -load( - "//toolchain/internal:common.bzl", - _os_version_arch = "os_version_arch", -) - -def _major_llvm_version(llvm_version): - return int(llvm_version.split(".")[0]) - -def _minor_llvm_version(llvm_version): - return int(llvm_version.split(".")[1]) - -def _patch_llvm_version(llvm_version): - return int(llvm_version.split(".")[2]) - -def _darwin_apple_suffix(llvm_version, arch): - major_llvm_version = _major_llvm_version(llvm_version) - patch_llvm_version = _patch_llvm_version(llvm_version) - if major_llvm_version == 9: - "darwin-apple" - elif major_llvm_version >= 15: - if arch == "arm64": - if major_llvm_version == 15 and patch_llvm_version <= 6: - return "apple-darwin21.0" - else: - return "apple-darwin22.0" - else: - return "apple-darwin21.0" - else: - return "apple-darwin" - -def _darwin(llvm_version, arch): - if arch == "aarch64": - arch = "arm64" - suffix = _darwin_apple_suffix(llvm_version, arch) - return "clang+llvm-{llvm_version}-{arch}-{suffix}.tar.xz".format( - llvm_version = llvm_version, - arch = arch, - suffix = suffix, - ) - -def _windows(llvm_version, arch): - if arch.endswith("64"): - win_arch = "win64" - else: - win_arch = "win32" - - return "LLVM-{llvm_version}-{win_arch}.exe".format( - llvm_version = llvm_version, - win_arch = win_arch, - ) - -def _ubuntu_osname(arch, version, major_llvm_version, llvm_version): - if arch == "powerpc64le": - if major_llvm_version > 11: - return "linux-gnu-ubuntu-18.04" - else: - return "linux-gnu-ubuntu-16.04" - - is_llvm_major_release = (_minor_llvm_version(llvm_version) == 0) and (_patch_llvm_version(llvm_version) == 0) - major_ubuntu_version = int(version.split(".")[0]) - if (major_ubuntu_version >= 20 and (not version.startswith("20.04")) and - (llvm_version in ["11.0.1", "11.1.0"])): - os_name = "linux-gnu-ubuntu-20.10" - elif is_llvm_major_release: - if major_llvm_version >= 14: - os_name = "linux-gnu-ubuntu-18.04" - elif major_llvm_version >= 11: - os_name = "linux-gnu-ubuntu-" + ("20.04" if major_ubuntu_version >= 20 else "16.04") - elif major_llvm_version >= 8: - os_name = "linux-gnu-ubuntu-18.04" - else: - # Let's default to 16.04 for LLVM releases before LLVM 8. - os_name = "linux-gnu-ubuntu-16.04" - else: - # Availability may be sparse for patch releases. - if llvm_version in ["16.0.4", "16.0.3", "16.0.2"]: - os_name = "linux-gnu-ubuntu-22.04" - elif llvm_version in ["16.0.1"]: - os_name = "linux-gnu-ubuntu-20.04" - elif llvm_version in ["15.0.6", "13.0.1"]: - os_name = "linux-gnu-ubuntu-18.04" - elif llvm_version in ["12.0.1", "11.1.0", "11.0.1", "10.0.1", "9.0.1", "8.0.1"]: - os_name = "linux-gnu-ubuntu-16.04" - elif llvm_version in ["7.1.0"]: - os_name = "linux-gnu-ubuntu-14.04" - else: - fail("LLVM patch release %s not available for Ubuntu %s" % (llvm_version, version)) - - return os_name - -def _linux(llvm_version, distname, version, arch): - major_llvm_version = _major_llvm_version(llvm_version) - - # NOTE: Many of these systems are untested because I do not have access to them. - # If you find this mapping wrong, please send a Pull Request on Github. - if arch in ["aarch64", "armv7a", "mips", "mipsel"]: - os_name = "linux-gnu" - elif distname == "freebsd": - os_name = "unknown-freebsd-%s" % version - elif distname == "suse": - os_name = _resolve_version_for_suse(major_llvm_version, llvm_version) - elif distname in ["ubuntu", "pop"]: - os_name = _ubuntu_osname(arch, version, major_llvm_version, llvm_version) - elif ((distname in ["linuxmint"]) and (version.startswith("21") or version.startswith("20") or version.startswith("19"))): - os_name = _ubuntu_osname(arch, "20.04", major_llvm_version, llvm_version) - elif distname == "linuxmint" and version.startswith("18"): - os_name = "linux-gnu-ubuntu-16.04" - elif distname == "debian": - int_version = 0 - if version.isdigit(): - int_version = int(version) - if int_version == 0 or int_version >= 9: - os_name = _ubuntu_osname(arch, "20.04", major_llvm_version, llvm_version) - elif int_version == 8 and major_llvm_version < 7: - os_name = "linux-gnu-debian8" - elif ((distname == "fedora" and int(version) >= 27) or - (distname == "centos" and int(version) >= 7)) and major_llvm_version < 7: - os_name = "linux-gnu-Fedora27" - elif distname == "centos" and major_llvm_version >= 7: - os_name = _resolve_version_for_suse(major_llvm_version, llvm_version) - elif distname == "fedora" and major_llvm_version >= 7: - os_name = _ubuntu_osname(arch, "20.04", major_llvm_version, llvm_version) - elif distname in ["arch", "manjaro"]: - os_name = _ubuntu_osname(arch, "20.04", major_llvm_version, llvm_version) - elif distname == "amzn": - # Based on the ID_LIKE field, sles seems like the closest available - # distro for which LLVM releases are widely available. - os_name = _resolve_version_for_suse(major_llvm_version, llvm_version) - elif distname == "raspbian": - arch = "armv7a" - os_name = "linux-gnueabihf" - elif distname == "rhel": - if 8 <= float(version) and float(version) < 9: - os_name = _ubuntu_osname(arch, "18.04", major_llvm_version, llvm_version) - elif float(version) >= 9: - os_name = _ubuntu_osname(arch, "20.04", major_llvm_version, llvm_version) - else: - fail("Unsupported linux distribution and version: %s, %s" % (distname, version)) - - return "clang+llvm-{llvm_version}-{arch}-{os_name}.tar.xz".format( - llvm_version = llvm_version, - arch = arch, - os_name = os_name, - ) - -def _resolve_version_for_suse(major_llvm_version, llvm_version): - minor_llvm_version = _minor_llvm_version(llvm_version) - if major_llvm_version < 10: - os_name = "linux-sles11.3" - elif major_llvm_version == 10 and minor_llvm_version == 0: - os_name = "linux-sles11.3" - elif major_llvm_version < 13 or (major_llvm_version == 14 and minor_llvm_version == 0): - os_name = "linux-sles12.4" - else: - os_name = _ubuntu_osname("x86_64", "20.04", major_llvm_version, llvm_version) - return os_name - -def llvm_release_name(rctx, llvm_version): - (os, version, arch) = _os_version_arch(rctx) - if os == "darwin": - return _darwin(llvm_version, arch) - elif os == "windows": - return _windows(llvm_version, arch) - else: - return _linux(llvm_version, os, version, arch) diff --git a/toolchain/internal/repo.bzl b/toolchain/internal/repo.bzl index 8ba21d8ab..99e2ee3d2 100644 --- a/toolchain/internal/repo.bzl +++ b/toolchain/internal/repo.bzl @@ -11,25 +11,427 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - load( "//toolchain/internal:common.bzl", + _attr_dict = "attr_dict", _os = "os", + _supported_os_arch_keys = "supported_os_arch_keys", ) load( "//toolchain/internal:llvm_distributions.bzl", _download_llvm = "download_llvm", + _required_llvm_version_rctx = "required_llvm_version_rctx", ) +_target_pairs = ", ".join(_supported_os_arch_keys()) + +# Atributes common to both `llvm` and `toolchain` repository rules. +common_attrs = { + "llvm_versions": attr.string_dict( + mandatory = False, + doc = ("LLVM version strings, keyed by host OS release name and architecture, " + + "e.g. darwin-x86_64, darwin-aarch64, ubuntu-20.04-x86_64, etc., or a " + + "less specific OS and arch pair ({}). ".format(_target_pairs) + + "An empty key is used to specify a fallback default for all hosts. " + + "If no `toolchain_roots` is given, then the toolchain will be looked up " + + "in the list of known llvm_distributions using the provided version. " + + "If unset, a default value is set from the `llvm_version` attribute."), + ), + "extra_llvm_distributions": attr.string_dict( + mandatory = False, + doc = ("A dictionary that maps distributions to their SHA256 values. " + + "It allows for simple additon of llvm distributiosn using the " + + "'utils/lvm_checksums.sh' tool. This also allows to use the " + + "distributions lists of future toolchain versions."), + ), + "exec_os": attr.string( + mandatory = False, + doc = "Execution platform OS, if different from host OS.", + ), + "exec_arch": attr.string( + mandatory = False, + doc = "Execution platform architecture, if different from host arch.", + ), +} + +llvm_repo_attrs = dict(common_attrs) +llvm_repo_attrs.update({ + "llvm_version": attr.string( + doc = ("One of the supported versions of LLVM, e.g. 12.0.0; used with the " + + "`auto` value for the `distribution` attribute, and as a default value " + + "for the `llvm_versions` attribute. This value can be set to `first` or " + + "`latest` in order to find the respective first or latest LLVM version " + + "supported on the OS/arch. Further, requirements can be provided, e.g. " + + "`latest:>=17.0.4,!=19.0.7`."), + ), + "urls": attr.string_list_dict( + mandatory = False, + doc = ("URLs to LLVM pre-built binary distribution archives, keyed by host OS " + + "release name and architecture, e.g. darwin-x86_64, darwin-aarch64, " + + "ubuntu-20.04-x86_64, etc., or a less specific OS and arch pair " + + "({}). ".format(_target_pairs) + + "May also need the `strip_prefix` attribute. " + + "Consider also setting the `sha256` attribute. An empty key is " + + "used to specify a fallback default for all hosts. This attribute " + + "overrides `distribution`, `llvm_version`, `llvm_mirror` and " + + "`alternative_llvm_sources` attributes if the host OS key is present."), + ), + "sha256": attr.string_dict( + mandatory = False, + doc = "The expected SHA-256 of the file downloaded as per the `urls` attribute.", + ), + "strip_prefix": attr.string_dict( + mandatory = False, + doc = "The prefix to strip from the extracted file from the `urls` attribute.", + ), + "distribution": attr.string( + default = "auto", + doc = ("LLVM pre-built binary distribution filename, must be one " + + "listed on http://releases.llvm.org/download.html for the version " + + "specified in the `llvm_version` attribute. A special value of " + + "'auto' tries to detect the version based on host OS."), + ), + "llvm_mirror": attr.string( + doc = "Base URL for an LLVM release mirror." + + "\n\n" + + "This mirror must follow the same structure as the official LLVM release " + + "sources (`releases.llvm.org` for versions <= 9, `llvm/llvm-project` GitHub " + + "releases for newer versions)." + + "\n\n" + + "If provided, this mirror will be given precedence over the official LLVM release " + + "sources (see: " + + "https://github.com/bazel-contrib/toolchains_llvm/toolchain/internal/llvm_distributions.bzl).", + ), + "alternative_llvm_sources": attr.string_list( + doc = "Patterns for alternative LLVM release sources. Unlike URLs specified for `llvm_mirror` " + + "these do not have to follow the same structure as the official LLVM release sources." + + "\n\n" + + "Patterns may include `{llvm_version}` (which will be substituted for the full LLVM " + + "version, i.e. 13.0.0) and `{basename}` (which will be replaced with the filename " + + "used by the official LLVM release sources for a particular distribution; i.e. " + + "`llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz`)." + + "\n\n" + + "As with `llvm_mirror`, these sources will take precedence over the official LLVM " + + "release sources.", + ), + "libclang_rt": attr.label_keyed_string_dict( + mandatory = False, + doc = ("Additional libclang_rt libraries to overlay into the downloaded LLVM " + + "distribution. The key is the label of a libclang_rt library, " + + "and the value is `\"{llvm_target_name}/{library_name}.a\"`."), + ), + "netrc": attr.string( + mandatory = False, + doc = "Path to the netrc file for authenticated LLVM URL downloads.", + ), + "auth_patterns": attr.string_dict( + mandatory = False, + doc = "An optional dict mapping host names to custom authorization patterns.", + ), +}) + +_compiler_configuration_attrs = { + "sysroot": attr.string_dict( + mandatory = False, + doc = ("System path or fileset, for each target OS and arch pair you want to support " + + "({}), ".format(_target_pairs) + + "used to indicate the set of files that form the sysroot for the compiler. " + + "If the value begins with exactly one forward slash '/', then the value is " + + "assumed to be a system path. Else, the value will be assumed to be a label " + + "containing the files and the sysroot path will be taken as the path to the " + + "package of this label."), + ), + "cxx_builtin_include_directories": attr.string_list_dict( + mandatory = False, + doc = ("Additional builtin include directories to be added to the default system " + + "directories, for each target OS and arch pair you want to support " + + "({}); ".format(_target_pairs) + + "see documentation for bazel's create_cc_toolchain_config_info."), + ), + "stdlib": attr.string_dict( + mandatory = False, + doc = ("stdlib implementation, for each target OS and arch pair you want to support " + + "({}), ".format(_target_pairs) + + "linked to the compiled binaries. An empty key can be used to specify a " + + "value for all target pairs. Possible values are `builtin-libc++` (default) " + + "which uses the libc++ shipped with clang, `libc++` which uses libc++ available on " + + "the host or sysroot, `stdc++` which uses libstdc++ available on the host or " + + "sysroot, and `none` which uses `-nostdlib` with the compiler."), + ), + "cxx_standard": attr.string_dict( + mandatory = False, + doc = ("C++ standard, for each target OS and arch pair you want to support " + + "({}), ".format(_target_pairs) + + "passed as `-std` flag to the compiler. An empty key can be used to specify a " + + "value for all target pairs. Default value is c++17."), + ), + # For default values of all the below flags overrides, consult + # cc_toolchain_config.bzl in this directory. + "compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "conly_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra flags for compiling C (not C++) files, " + + "for each target OS and arch pair you want to support " + + "({}), ".format(", ".join(_supported_os_arch_keys())) + "."), + ), + "cxx_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for cxx_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for link_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "archive_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for archive_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "link_libs": attr.string_list_dict( + mandatory = False, + doc = ("Override for link_libs, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "fastbuild_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for fastbuild_compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "opt_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for opt_compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "opt_link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for opt_link_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "dbg_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for dbg_compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "coverage_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for coverage_compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "coverage_link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for coverage_link_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + "unfiltered_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Override for unfiltered_compile_flags, replacing the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to override " + + "({}); empty key overrides all.".format(_target_pairs)), + ), + # Same as the above flags, but instead of overriding the defaults, it just adds extras + "extra_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra compile_flags, added after default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_cxx_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra cxx_flags, added after default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra link_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_archive_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra archive_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_link_libs": attr.string_list_dict( + mandatory = False, + doc = ("Extra for link_libs, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_opt_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra opt_compile_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_opt_link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra opt_link_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_dbg_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra dbg_compile_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_coverage_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra coverage_compile_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_coverage_link_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra coverage_link_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "extra_unfiltered_compile_flags": attr.string_list_dict( + mandatory = False, + doc = ("Extra unfiltered_compile_flags, added after the default values. " + + "`{toolchain_path_prefix}` in the flags will be substituted by the path " + + "to the root LLVM distribution directory. Provide one list for each " + + "target OS and arch pair you want to add " + + "({}); an empty key adds all.".format(_target_pairs)), + ), + "target_settings": attr.string_list_dict( + mandatory = False, + doc = ("Override the toolchain's `target_settings` attribute."), + ), + "extra_compiler_files": attr.label( + mandatory = False, + doc = ("Files to be made available in the sandbox for compile actions. " + + "Mostly useful for providing files containing lists of flags, e.g. " + + "sanitizer ignorelists."), + ), +} + +llvm_config_attrs = dict(common_attrs) +llvm_config_attrs.update(_compiler_configuration_attrs) +llvm_config_attrs.update({ + "toolchain_roots": attr.string_dict( + mandatory = False, + # TODO: Ideally, we should be taking a filegroup label here instead of a package path, but + # we ultimately need to subset the files to be more selective in what we include in the + # sandbox for which operations, and it is not straightforward to subset a filegroup. + doc = ("System or package path, keyed by host OS release name and architecture, e.g. " + + "darwin-x86_64, darwin-aarch64, ubuntu-20.04-x86_64, etc., or a less specific " + + "OS and arch pair ({}), to be used as the LLVM toolchain ".format(_target_pairs) + + "distributions. An empty key can be used to specify a fallback default for " + + "all hosts, e.g. with the llvm_toolchain_repo rule. " + + "If the value begins with exactly one forward slash '/', then the value is " + + "assumed to be a system path and the toolchain is configured to use absolute " + + "paths. Else, the value will be assumed to be a bazel package containing the " + + "filegroup targets as in BUILD.llvm_repo."), + ), + "absolute_paths": attr.bool( + default = False, + doc = "Use absolute paths in the toolchain. Avoids sandbox overhead.", + ), + "extra_exec_compatible_with": attr.string_list_dict( + mandatory = False, + doc = "Extra constraints to be added to exec_compatible_with for each target", + ), + "extra_target_compatible_with": attr.string_list_dict( + mandatory = False, + doc = "Extra constraints to be added to target_compatible_with for each target", + ), + "_cc_toolchain_config_bzl": attr.label( + default = "//toolchain:cc_toolchain_config.bzl", + ), + "_toolchains_bzl_tpl": attr.label( + default = "//toolchain:toolchains.bzl.tpl", + ), + "_build_toolchain_tpl": attr.label( + default = "//toolchain:BUILD.toolchain.tpl", + ), + "_darwin_cc_wrapper_sh_tpl": attr.label( + default = "//toolchain:osx_cc_wrapper.sh.tpl", + ), + "_cc_wrapper_sh_tpl": attr.label( + default = "//toolchain:cc_wrapper.sh.tpl", + ), +}) + def llvm_repo_impl(rctx): os = _os(rctx) if os == "windows": - rctx.file("BUILD", executable = False) - return + rctx.file("BUILD.bazel", executable = False) + return None + + llvm_version = _required_llvm_version_rctx(rctx) + major_llvm_version = int(llvm_version.split(".")[0]) rctx.file( "BUILD.bazel", - content = rctx.read(Label("//toolchain:BUILD.llvm_repo")), + content = rctx.read(Label("//toolchain:BUILD.llvm_repo.tpl")).format( + # The versioning changed. + LLVM_VERSION = major_llvm_version if major_llvm_version >= 16 else llvm_version, + ), executable = False, ) @@ -40,4 +442,10 @@ def llvm_repo_impl(rctx): # do want to make changes, then we should do it through a patch file, and # document it for users of toolchain_roots attribute. - return updated_attrs + if hasattr(rctx, "repo_metadata"): + if updated_attrs == _attr_dict(rctx.attr): + return rctx.repo_metadata(reproducible = True) + else: + return rctx.repo_metadata(attrs_for_reproducibility = updated_attrs) + else: + return updated_attrs diff --git a/toolchain/internal/sysroot.bzl b/toolchain/internal/sysroot.bzl index 808146e39..d1c19f331 100644 --- a/toolchain/internal/sysroot.bzl +++ b/toolchain/internal/sysroot.bzl @@ -15,6 +15,7 @@ load( "//toolchain/internal:common.bzl", _canonical_dir_path = "canonical_dir_path", + _is_absolute_path = "is_absolute_path", _os_arch_pair = "os_arch_pair", _pkg_name_from_label = "pkg_name_from_label", _pkg_path_from_label = "pkg_path_from_label", @@ -26,7 +27,7 @@ def _darwin_sdk_path(rctx): if exec_result.return_code: fail("Failed to detect OSX SDK path: \n%s\n%s" % (exec_result.stdout, exec_result.stderr)) if exec_result.stderr: - print(exec_result.stderr) + print(exec_result.stderr) # buildifier: disable=print return exec_result.stdout.strip() # Default sysroot path can be used when the user has not provided an explicit @@ -47,7 +48,7 @@ def _sysroot_path(sysroot_dict, os, arch): # If the sysroot is an absolute path, use it as-is. Check for things that # start with "/" and not "//" to identify absolute paths, but also support # passing the sysroot as "/" to indicate the root directory. - if sysroot[0] == "/" and (len(sysroot) == 1 or sysroot[1] != "/"): + if _is_absolute_path(sysroot): return (sysroot, None) label = Label(sysroot) diff --git a/toolchain/internal/system_module_map.bzl b/toolchain/internal/system_module_map.bzl new file mode 100644 index 000000000..8aa969f56 --- /dev/null +++ b/toolchain/internal/system_module_map.bzl @@ -0,0 +1,131 @@ +# Copyright 2024 The Bazel Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@bazel_features//:features.bzl", "bazel_features") +load("@bazel_skylib//lib:paths.bzl", "paths") + +def _textual_header(file, *, include_prefixes, execroot_prefix): + path = file.path + for include_prefix in include_prefixes: + if path.startswith(include_prefix): + return " textual header \"{}{}\"".format(execroot_prefix, path) + + # The file is not under any of the include prefixes, + return None + +def _umbrella_submodule(path): + return """ + module "{path}" {{ + umbrella "{path}" + }}""".format(path = path) + +def _system_module_map(ctx): + module_map = ctx.actions.declare_file(ctx.attr.name + ".modulemap") + + absolute_path_dirs = [] + relative_include_prefixes = [] + for include_dir in ctx.attr.cxx_builtin_include_directories: + if ctx.attr.sysroot_path and include_dir.startswith("%sysroot%"): + include_dir = ctx.attr.sysroot_path + include_dir[len("%sysroot%"):] + if include_dir.startswith("%workspace%/"): + include_dir = include_dir.removeprefix("%workspace%/") + include_dir = paths.normalize(include_dir).replace("//", "/") + if include_dir.startswith("/"): + absolute_path_dirs.append(include_dir) + else: + relative_include_prefixes.append(include_dir + "/") + + # The builtin include directories are relative to the execroot, but the + # paths in the module map must be relative to the directory that contains + # the module map. + execroot_prefix = (module_map.dirname.count("/") + 1) * "../" + textual_header_closure = lambda file: _textual_header( + file, + include_prefixes = relative_include_prefixes, + execroot_prefix = execroot_prefix, + ) + + umbrella_submodule_closure = lambda file: _umbrella_submodule( + execroot_prefix + paths.normalize(file.path).replace("//", "/"), + ) + + template_dict = ctx.actions.template_dict() + + if bazel_features.rules.merkle_cache_v2: + # If provided, cxx_builtin_files should be a filegroup with 2 source directory entries: + # - include/c++ + # - lib/clang//include + cxx_builtin_include_files_closure = umbrella_submodule_closure + else: + cxx_builtin_include_files_closure = textual_header_closure + + template_dict.add_joined( + "%cxx_builtin_include_files%", + ctx.attr.cxx_builtin_include_files[DefaultInfo].files, + join_with = "\n", + map_each = cxx_builtin_include_files_closure, + allow_closure = True, + ) + + # We don't have a good way to detect a source directory, so check if it's a single File... + sysroot_files = ctx.attr.sysroot_files[DefaultInfo].files.to_list() + if len(sysroot_files) == 1: + template_dict.add("%sysroot%", umbrella_submodule_closure(sysroot_files[0])) + else: + if sysroot_files and bazel_features.rules.merkle_cache_v2: + # buildifier: disable=print + print("WARNING: Sysroot {} resolved to {} files. Consider using the `sysroot` repository rule in @toolchains_llvm//toolchain:sysroot.bzl which provides a single-file (directory) sysroot for more efficient builds.".format( + ctx.attr.sysroot_files.label, + len(sysroot_files), + )) + template_dict.add_joined( + "%sysroot%", + ctx.attr.sysroot_files[DefaultInfo].files, + join_with = "\n", + map_each = textual_header_closure, + allow_closure = True, + ) + + template_dict.add_joined( + "%umbrella_submodules%", + depset(absolute_path_dirs), + join_with = "\n", + map_each = _umbrella_submodule, + ) + + ctx.actions.expand_template( + template = ctx.file._module_map_template, + output = module_map, + computed_substitutions = template_dict, + ) + return DefaultInfo(files = depset([module_map])) + +system_module_map = rule( + doc = """Generates a Clang module map for the toolchain and sysroot headers. + + Files under the configured built-in include directories that are managed by + Bazel are included as textual headers. All directories referenced by + absolute paths are included as umbrella submodules.""", + implementation = _system_module_map, + attrs = { + "cxx_builtin_include_files": attr.label(mandatory = True), + "cxx_builtin_include_directories": attr.string_list(mandatory = True), + "sysroot_files": attr.label(), + "sysroot_path": attr.string(), + "_module_map_template": attr.label( + default = "template.modulemap", + allow_single_file = True, + ), + }, +) diff --git a/toolchain/internal/template.modulemap b/toolchain/internal/template.modulemap new file mode 100644 index 000000000..c1f639839 --- /dev/null +++ b/toolchain/internal/template.modulemap @@ -0,0 +1,5 @@ +module "crosstool" [system] { +%cxx_builtin_include_files% +%sysroot% +%umbrella_submodules% +} diff --git a/toolchain/osx_cc_wrapper.sh.tpl b/toolchain/osx_cc_wrapper.sh.tpl index 0384cec60..7cf1820a6 100755 --- a/toolchain/osx_cc_wrapper.sh.tpl +++ b/toolchain/osx_cc_wrapper.sh.tpl @@ -13,7 +13,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# + # OS X relpath is not really working. This is a wrapper script around gcc # to simulate relpath behavior. # @@ -24,8 +24,10 @@ # # See https://blogs.oracle.com/dipol/entry/dynamic_libraries_rpath_and_mac # on how to set those paths for Mach-O binaries. -# -set -eu + +# shellcheck disable=SC1083 + +set -euo pipefail INSTALL_NAME_TOOL="/usr/bin/install_name_tool" @@ -33,119 +35,193 @@ LIBS= LIB_DIRS= RPATHS= OUTPUT= +CLEANUP_FILES=() + +function cleanup() { + if [[ ${#CLEANUP_FILES[@]} -gt 0 ]]; then + rm -f "${CLEANUP_FILES[@]}" + fi +} + +trap cleanup EXIT function parse_option() { - local -r opt="$1" - if [[ "${OUTPUT}" = "1" ]]; then - OUTPUT=$opt - elif [[ "$opt" =~ ^-l(.*)$ ]]; then - LIBS="${BASH_REMATCH[1]} $LIBS" - elif [[ "$opt" =~ ^-L(.*)$ ]]; then - LIB_DIRS="${BASH_REMATCH[1]} $LIB_DIRS" - elif [[ "$opt" =~ ^\@loader_path/(.*)$ ]]; then - RPATHS="${BASH_REMATCH[1]} ${RPATHS}" - elif [[ "$opt" =~ ^-Wl,-rpath,\@loader_path/(.*)$ ]]; then - RPATHS="${BASH_REMATCH[1]} ${RPATHS}" - elif [[ "$opt" = "-o" ]]; then - # output is coming - OUTPUT=1 - fi + local -r opt="$1" + if [[ ${OUTPUT} == "1" ]]; then + OUTPUT=${opt} + elif [[ ${opt} =~ ^-l(.*)$ ]]; then + LIBS="${BASH_REMATCH[1]} ${LIBS}" + elif [[ ${opt} =~ ^-L(.*)$ ]]; then + LIB_DIRS="${BASH_REMATCH[1]} ${LIB_DIRS}" + elif [[ ${opt} =~ ^\@loader_path/(.*)$ ]]; then + RPATHS="${BASH_REMATCH[1]} ${RPATHS}" + elif [[ ${opt} =~ ^-Wl,-rpath,\@loader_path/(.*)$ ]]; then + RPATHS="${BASH_REMATCH[1]} ${RPATHS}" + elif [[ ${opt} == "-o" ]]; then + # output is coming + OUTPUT=1 + fi } -# let parse the option list -for i in "$@"; do - if [[ "$i" = @* ]]; then - while IFS= read -r opt - do - parse_option "$opt" - done < "${i:1}" || exit 1 - else - parse_option "$i" - fi -done +# See note in toolchain/internal/configure.bzl where we define +# `wrapper_bin_prefix` for why this wrapper is needed. -# On macOS, we use ld as the linker for single-platform builds (i.e., when not -# cross-compiling). Some applications may remove /usr/bin from PATH before -# calling this script, which would make /usr/bin/ld unreachable. For example, -# rules_rust does not set PATH (unless the user explicitly sets PATH in env -# through attributes) [1] when calling rustc, and rustc does not replace an -# unset PATH with a reasonable default either ([2], [3]), which results in CC -# being called with PATH={sysroot}/{rust_lib}/bin. Note that rules_cc [4] and -# rules_go [5] do ensure that /usr/bin is in PATH. -# [1]: https://github.com/bazelbuild/rules_rust/blob/e589105b4e8181dd1d0d8ccaa0cf3267efb06e86/cargo/cargo_build_script.bzl#L66-L68 -# [2]: https://github.com/rust-lang/rust/blob/1c03f0d0ba4fee54b7aa458f4d3ad989d8bf7b34/compiler/rustc_session/src/session.rs#L804-L813 -# [3]: https://github.com/rust-lang/rust/blob/1c03f0d0ba4fee54b7aa458f4d3ad989d8bf7b34/compiler/rustc_codegen_ssa/src/back/link.rs#L640-L645 -# [4]: https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java;l=529;drc=72caead7b428fd50164079956ec368fc54a9567c -# [5]: https://github.com/bazelbuild/rules_go/blob/63dfd99403076331fef0775d52a8039d502d4115/go/private/context.bzl#L434 -# Let's restore /usr/bin to PATH in such cases. Note that /usr/bin is not a -# writeable directory on macOS even with sudo privileges, so it should be safe -# to add it to PATH even when the application wants to use a very strict PATH. -if [[ ":${PATH}:" != *":/usr/bin:"* ]]; then - PATH="${PATH}:/usr/bin" -fi +# this script is located at either +# - /external//bin/cc_wrapper.sh +# - //bin/cc_wrapper.sh +# The clang is located at +# - /external//bin/clang +# - //bin/clang +# +# In both cases, getting to clang can be done via +# Finding the current dir of this script, +# - /external//bin/ +# - //bin/ +# going back 2 directories +# - /external +# - +# +# Going into %{toolchain_path_prefix} without the `external/` prefix + `bin/clang` +# -# Call the C++ compiler. -if [[ -f %{toolchain_path_prefix}bin/clang ]]; then - %{toolchain_path_prefix}bin/clang "$@" -elif [[ "${BASH_SOURCE[0]}" == "/"* ]]; then - # Some consumers of `CcToolchainConfigInfo` (e.g. `cmake` from rules_foreign_cc) - # change CWD and call $CC (this script) with its absolute path. - # the execroot (i.e. `cmake` from `rules_foreign_cc`) and call CC . For cases like this, - # we'll try to find `clang` relative to this script. - # This script is at _execroot_/external/_repo_name_/bin/cc_wrapper.sh - execroot_path="${BASH_SOURCE[0]%/*/*/*/*}" - clang="${execroot_path}/%{toolchain_path_prefix}bin/clang" - "${clang}" "${@}" +dirname_shim() { + local path="$1" + + # Remove trailing slashes + path="${path%/}" + + # If there's no slash, return "." + if [[ "${path}" != */* ]]; then + echo "." + return + fi + + # Remove the last component after the final slash + path="${path%/*}" + + # If it becomes empty, it means root "/" + echo "${path:-/}" +} + +if [[ "${BASH_SOURCE[0]}" == "/"* ]]; then + bash_source_abs="$(realpath "${BASH_SOURCE[0]}")" + pwd_abs="$(realpath ".")" + bash_source_rel=${bash_source_abs#"${pwd_abs}/"} +else + bash_source_rel="${BASH_SOURCE[0]}" +fi +script_dir=$(dirname_shim "${bash_source_rel}") +toolchain_path_prefix="%{toolchain_path_prefix}" +# Sometimes this path may be an absolute path in which case we dont do anything because +# This is using the host toolchain to build. +if [[ ${toolchain_path_prefix} != /* ]]; then + # shellcheck disable=SC2312 + toolchain_path_prefix="$(dirname_shim "$(dirname_shim "${script_dir}")")/${toolchain_path_prefix#external/}" + toolchain_path_prefix_abs="$(cd "${toolchain_path_prefix}" && pwd -P)/" else - >&2 echo "ERROR: could not find clang; PWD=\"$(pwd)\"; PATH=\"${PATH}\"." + toolchain_path_prefix_abs="${toolchain_path_prefix}" +fi + +if [[ ! -f ${toolchain_path_prefix}bin/clang ]]; then + echo >&2 "ERROR: could not find clang; PWD=\"${PWD}\"; PATH=\"${PATH}\"; toolchain_path_prefix=${toolchain_path_prefix}." exit 5 fi +function sanitize_option() { + local -r opt=$1 + if [[ ${opt} == */cc_wrapper.sh ]]; then + printf "%s" "${toolchain_path_prefix}bin/clang" + elif [[ ${opt} == "--ld-path=ld.lld" || ${opt} == "--ld-path=ld64.lld" ]]; then + local ld_name=${opt#--ld-path=} + echo "--ld-path=${toolchain_path_prefix_abs}bin/${ld_name}" + elif [[ ${opt} =~ ^-fsanitize-(ignore|black)list=[^/] ]] && [[ ${script_dir} == /* ]]; then + # shellcheck disable=SC2206 + parts=(${opt/=/ }) # Split flag name and value into array. + # shellcheck disable=SC2312 + printf "%s" "${parts[0]}=$(dirname_shim "$(dirname_shim "$(dirname_shim "${script_dir}")")")/${parts[1]}" + else + printf "%s" "${opt}" + fi +} + +cmd=() +for ((i = 0; i <= $#; i++)); do + if [[ ${!i} == @* && -r "${i:1}" ]]; then + tmpfile=$(mktemp) + CLEANUP_FILES+=("${tmpfile}") + while IFS= read -r opt; do + opt="$( + set -e + sanitize_option "${opt}" + )" + parse_option "${opt}" >>"${tmpfile}" + done <"${!i:1}" + cmd+=("@${tmpfile}") + else + opt="$( + set -e + sanitize_option "${!i}" + )" + parse_option "${opt}" + cmd+=("${opt}") + fi +done + +# Call the C++ compiler. +"${cmd[@]}" + +# Generate an empty file if header processing succeeded. +if [[ "${OUTPUT}" == *.h.processed ]]; then + echo -n >"${OUTPUT}" +fi + function get_library_path() { - for libdir in ${LIB_DIRS}; do - if [ -f ${libdir}/lib$1.so ]; then - echo "${libdir}/lib$1.so" - elif [ -f ${libdir}/lib$1.dylib ]; then - echo "${libdir}/lib$1.dylib" - fi - done + for libdir in ${LIB_DIRS}; do + if [[ -f "${libdir}/lib$1".so ]]; then + echo "${libdir}/lib$1.so" + elif [[ -f "${libdir}"/lib"$1".dylib ]]; then + echo "${libdir}/lib$1.dylib" + fi + done } # A convenient method to return the actual path even for non symlinks # and multi-level symlinks. function get_realpath() { - local previous="$1" - local next=$(readlink "${previous}") - while [ -n "${next}" ]; do - previous="${next}" - next=$(readlink "${previous}") - done - echo "${previous}" + local previous="$1" + local next + next="$(readlink "${previous}")" + while [[ -n ${next} ]]; do + previous="${next}" + next=$(readlink "${previous}") + done + echo "${previous}" } # Get the path of a lib inside a tool function get_otool_path() { - # the lib path is the path of the original lib relative to the workspace - get_realpath $1 | sed 's|^.*/bazel-out/|bazel-out/|' + # the lib path is the path of the original lib relative to the workspace + get_realpath "$1" | sed 's|^.*/bazel-out/|bazel-out/|' } # Do replacements in the output for rpath in ${RPATHS}; do - for lib in ${LIBS}; do - unset libname - if [ -f "$(dirname ${OUTPUT})/${rpath}/lib${lib}.so" ]; then - libname="lib${lib}.so" - elif [ -f "$(dirname ${OUTPUT})/${rpath}/lib${lib}.dylib" ]; then - libname="lib${lib}.dylib" - fi - # ${libname-} --> return $libname if defined, or undefined otherwise. This is to make - # this set -e friendly - if [[ -n "${libname-}" ]]; then - libpath=$(get_library_path ${lib}) - if [ -n "${libpath}" ]; then - ${INSTALL_NAME_TOOL} -change $(get_otool_path "${libpath}") \ - "@loader_path/${rpath}/${libname}" "${OUTPUT}" - fi - fi - done + for lib in ${LIBS}; do + unset libname + if [[ -f "$(dirname "${OUTPUT}")/${rpath}/lib${lib}.so" ]]; then + libname="lib${lib}.so" + elif [[ -f "$(dirname "${OUTPUT}")/${rpath}/lib${lib}.dylib" ]]; then + libname="lib${lib}.dylib" + fi + # ${libname-} --> return $libname if defined, or undefined otherwise. This is to make + # this set -e friendly + if [[ -n ${libname-} ]]; then + libpath="$(get_library_path "${lib}")" + if [[ -n ${libpath} ]]; then + otool_path="$(get_otool_path "${libpath}")" + "${INSTALL_NAME_TOOL}" -change "${otool_path}" \ + "@loader_path/${rpath}/${libname}" "${OUTPUT}" + fi + fi + done done diff --git a/toolchain/rules.bzl b/toolchain/rules.bzl index 9c584d0bf..a3d339a1a 100644 --- a/toolchain/rules.bzl +++ b/toolchain/rules.bzl @@ -12,264 +12,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -load( - "//toolchain/internal:common.bzl", - _supported_os_arch_keys = "supported_os_arch_keys", -) load( "//toolchain/internal:configure.bzl", _llvm_config_impl = "llvm_config_impl", ) load( "//toolchain/internal:repo.bzl", + _common_attrs = "common_attrs", + _llvm_config_attrs = "llvm_config_attrs", + _llvm_repo_attrs = "llvm_repo_attrs", _llvm_repo_impl = "llvm_repo_impl", ) -_target_pairs = ", ".join(_supported_os_arch_keys()) - -# Atributes common to both `llvm` and `toolchain` repository rules. -_common_attrs = { - "llvm_versions": attr.string_dict( - mandatory = False, - doc = ("LLVM version strings, keyed by host OS release name and architecture, " + - "e.g. darwin-x86_64, darwin-aarch64, ubuntu-20.04-x86_64, etc., or a " + - "less specific OS and arch pair ({}). ".format(_target_pairs) + - "An empty key is used to specify a fallback default for all hosts. " + - "If no `toolchain_roots` is given, then the toolchain will be looked up " + - "in the list of known llvm_distributions using the provided version. " + - "If unset, a default value is set from the `llvm_version` attribute."), - ), -} - -_llvm_repo_attrs = dict(_common_attrs) -_llvm_repo_attrs.update({ - "llvm_version": attr.string( - doc = ("One of the supported versions of LLVM, e.g. 12.0.0; used with the " + - "`auto` value for the `distribution` attribute, and as a default value " + - "for the `llvm_versions` attribute."), - ), - "urls": attr.string_list_dict( - mandatory = False, - doc = ("URLs to LLVM pre-built binary distribution archives, keyed by host OS " + - "release name and architecture, e.g. darwin-x86_64, darwin-aarch64, " + - "ubuntu-20.04-x86_64, etc., or a less specific OS and arch pair " + - "({}). ".format(_target_pairs) + - "May also need the `strip_prefix` attribute. " + - "Consider also setting the `sha256` attribute. An empty key is " + - "used to specify a fallback default for all hosts. This attribute " + - "overrides `distribution`, `llvm_version`, `llvm_mirror` and " + - "`alternative_llvm_sources` attributes if the host OS key is present."), - ), - "sha256": attr.string_dict( - mandatory = False, - doc = "The expected SHA-256 of the file downloaded as per the `urls` attribute.", - ), - "strip_prefix": attr.string_dict( - mandatory = False, - doc = "The prefix to strip from the extracted file from the `urls` attribute.", - ), - "distribution": attr.string( - default = "auto", - doc = ("LLVM pre-built binary distribution filename, must be one " + - "listed on http://releases.llvm.org/download.html for the version " + - "specified in the `llvm_version` attribute. A special value of " + - "'auto' tries to detect the version based on host OS."), - ), - "llvm_mirror": attr.string( - doc = "Base URL for an LLVM release mirror." + - "\n\n" + - "This mirror must follow the same structure as the official LLVM release " + - "sources (`releases.llvm.org` for versions <= 9, `llvm/llvm-project` GitHub " + - "releases for newer versions)." + - "\n\n" + - "If provided, this mirror will be given precedence over the official LLVM release " + - "sources (see: " + - "https://github.com/grailbio/bazel-toolchain/toolchain/internal/llvm_distributions.bzl).", - ), - "alternative_llvm_sources": attr.string_list( - doc = "Patterns for alternative LLVM release sources. Unlike URLs specified for `llvm_mirror` " + - "these do not have to follow the same structure as the official LLVM release sources." + - "\n\n" + - "Patterns may include `{llvm_version}` (which will be substituted for the full LLVM " + - "version, i.e. 13.0.0) and `{basename}` (which will be replaced with the filename " + - "used by the official LLVM release sources for a particular distribution; i.e. " + - "`llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xz`)." + - "\n\n" + - "As with `llvm_mirror`, these sources will take precedence over the official LLVM " + - "release sources.", - ), - "netrc": attr.string( - mandatory = False, - doc = "Path to the netrc file for authenticated LLVM URL downloads.", - ), - "auth_patterns": attr.string_dict( - mandatory = False, - doc = "An optional dict mapping host names to custom authorization patterns.", - ), -}) - -_compiler_configuration_attrs = { - "sysroot": attr.string_dict( - mandatory = False, - doc = ("System path or fileset, for each target OS and arch pair you want to support " + - "({}), ".format(_target_pairs) + - "used to indicate the set of files that form the sysroot for the compiler. " + - "If the value begins with exactly one forward slash '/', then the value is " + - "assumed to be a system path. Else, the value will be assumed to be a label " + - "containing the files and the sysroot path will be taken as the path to the " + - "package of this label."), - ), - "cxx_builtin_include_directories": attr.string_list_dict( - mandatory = False, - doc = ("Additional builtin include directories to be added to the default system " + - "directories, for each target OS and arch pair you want to support " + - "({}); ".format(_target_pairs) + - "see documentation for bazel's create_cc_toolchain_config_info."), - ), - "stdlib": attr.string_dict( - mandatory = False, - doc = ("stdlib implementation, for each target OS and arch pair you want to support " + - "({}), ".format(_target_pairs) + - "linked to the compiled binaries. An empty key can be used to specify a " + - "value for all target pairs. Possible values are `builtin-libc++` (default) " + - "which uses the libc++ shipped with clang, `libc++` which uses libc++ available on " + - "the host or sysroot, `stdc++` which uses libstdc++ available on the host or " + - "sysroot, and `none` which uses `-nostdlib` with the compiler."), - ), - "cxx_standard": attr.string_dict( - mandatory = False, - doc = ("C++ standard, for each target OS and arch pair you want to support " + - "({}), ".format(_target_pairs) + - "passed as `-std` flag to the compiler. An empty key can be used to specify a " + - "value for all target pairs. Default value is c++17."), - ), - # For default values of all the below flags overrides, consult - # cc_toolchain_config.bzl in this directory. - "compile_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for compile_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "cxx_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for cxx_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "link_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for link_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "link_libs": attr.string_list_dict( - mandatory = False, - doc = ("Override for link_libs, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "opt_compile_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for opt_compile_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "opt_link_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for opt_link_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "dbg_compile_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for dbg_compile_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "coverage_compile_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for coverage_compile_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "coverage_link_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for coverage_link_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "unfiltered_compile_flags": attr.string_list_dict( - mandatory = False, - doc = ("Override for unfiltered_compile_flags, replacing the default values. " + - "`{toolchain_path_prefix}` in the flags will be substituted by the path " + - "to the root LLVM distribution directory. Provide one list for each " + - "target OS and arch pair you want to override " + - "({}); empty key overrides all.".format(_target_pairs)), - ), - "target_settings": attr.string_list_dict( - mandatory = False, - doc = ("Override the toolchain's `target_settings` attribute."), - ), -} - -_llvm_config_attrs = dict(_common_attrs) -_llvm_config_attrs.update(_compiler_configuration_attrs) -_llvm_config_attrs.update({ - "toolchain_roots": attr.string_dict( - mandatory = True, - # TODO: Ideally, we should be taking a filegroup label here instead of a package path, but - # we ultimately need to subset the files to be more selective in what we include in the - # sandbox for which operations, and it is not straightforward to subset a filegroup. - doc = ("System or package path, keyed by host OS release name and architecture, e.g. " + - "darwin-x86_64, darwin-aarch64, ubuntu-20.04-x86_64, etc., or a less specific " + - "OS and arch pair ({}), to be used as the LLVM toolchain ".format(_target_pairs) + - "distributions. An empty key can be used to specify a fallback default for " + - "all hosts, e.g. with the llvm_toolchain_repo rule. " + - "If the value begins with exactly one forward slash '/', then the value is " + - "assumed to be a system path and the toolchain is configured to use absolute " + - "paths. Else, the value will be assumed to be a bazel package containing the " + - "filegroup targets as in BUILD.llvm_repo."), - ), - "absolute_paths": attr.bool( - default = False, - doc = "Use absolute paths in the toolchain. Avoids sandbox overhead.", - ), - "_cc_toolchain_config_bzl": attr.label( - default = "//toolchain:cc_toolchain_config.bzl", - ), - "_toolchains_bzl_tpl": attr.label( - default = "//toolchain:toolchains.bzl.tpl", - ), - "_build_toolchain_tpl": attr.label( - default = "//toolchain:BUILD.toolchain.tpl", - ), - "_darwin_cc_wrapper_sh_tpl": attr.label( - default = "//toolchain:osx_cc_wrapper.sh.tpl", - ), - "_cc_wrapper_sh_tpl": attr.label( - default = "//toolchain:cc_wrapper.sh.tpl", - ), -}) - llvm = repository_rule( attrs = _llvm_repo_attrs, local = False, @@ -284,8 +38,12 @@ toolchain = repository_rule( ) def llvm_toolchain(name, **kwargs): - if kwargs.get("llvm_version") == kwargs.get("llvm_versions"): + if kwargs.get("llvm_version") and kwargs.get("llvm_versions"): fail("Exactly one of llvm_version or llvm_versions must be set") + if not kwargs.get("llvm_versions"): + if not kwargs.get("llvm_version"): + fail("One of llvm_version or llvm_versions must be set") + kwargs.update(llvm_versions = {"": kwargs.get("llvm_version")}) if not kwargs.get("toolchain_roots"): llvm_args = { @@ -294,10 +52,6 @@ def llvm_toolchain(name, **kwargs): if (k not in _llvm_config_attrs.keys()) or (k in _common_attrs.keys()) } llvm(name = name + "_llvm", **llvm_args) - kwargs.update(toolchain_roots = {"": "@%s_llvm//" % name}) - - if not kwargs.get("llvm_versions"): - kwargs.update(llvm_versions = {"": kwargs.get("llvm_version")}) toolchain_args = { k: v diff --git a/toolchain/sysroot.bzl b/toolchain/sysroot.bzl new file mode 100644 index 000000000..0fa98fa95 --- /dev/null +++ b/toolchain/sysroot.bzl @@ -0,0 +1,83 @@ +load("@aspect_bazel_lib//lib:repo_utils.bzl", "repo_utils") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "get_auth") + +def _sysroot_impl(rctx): + urls = rctx.attr.urls + if rctx.attr.url: + urls = [rctx.attr.url] + urls + + if not urls: + fail("At least one of url and urls must be provided") + + _, _, archive = urls[0].rpartition("/") + + rctx.download( + urls, + archive, + integrity = rctx.attr.integrity, + auth = get_auth(rctx, urls), + sha256 = rctx.attr.sha256, + ) + + # Source directories are more efficient than file groups for 2 reasons: + # - They can be symlinked into a local sandbox with a single symlink instead of 1-per-file + # - They serve as a signal to the Merkle tree cache machinery since they can be memoized as a single node. + # Since sysroots are usually a ton of files, it can improve build performance to declare them as source directories. + + # Also, create the BUILD file before extracting because `bsdtar` expects the target + # directory to exist, and this way Bazel creates it for us without needing `mkdir`. + rctx.file( + "sysroot/BUILD.bazel", + """filegroup( + name = "sysroot", + srcs = ["."], + visibility = ["//visibility:public"], +)""", + ) + + host_bsdtar = Label("@bsd_tar_toolchains_%s//:tar" % repo_utils.platform(rctx)) + + cmd = [ + str(rctx.path(host_bsdtar)), + "--extract", + "--no-same-owner", + "--no-same-permissions", + "--file", + archive, + "--directory", + "sysroot", + "--strip-components", + str(rctx.attr.strip_components), + ] + + for include in rctx.attr.include_patterns: + cmd.extend(["--include", include]) + + for exclude in rctx.attr.exclude_patterns: + cmd.extend(["--exclude", exclude]) + + result = rctx.execute(cmd) + if result.return_code != 0: + fail(result.stdout + result.stderr) + + rctx.delete(archive) + + if hasattr(rctx, "repo_metadata"): + return rctx.repo_metadata(reproducible = True) + else: + return None + +sysroot = repository_rule( + implementation = _sysroot_impl, + attrs = { + "url": attr.string(), + "urls": attr.string_list(), + "strip_components": attr.int( + doc = "Number of components to strip when extracting (similar to strip_prefix).", + ), + "sha256": attr.string(), + "integrity": attr.string(), + "include_patterns": attr.string_list(), + "exclude_patterns": attr.string_list(), + }, +) diff --git a/utils/llvm_checksums.sh b/utils/llvm_checksums.sh index d9107bd0e..3004e6d81 100755 --- a/utils/llvm_checksums.sh +++ b/utils/llvm_checksums.sh @@ -16,55 +16,80 @@ set -euo pipefail use_github_host=0 +tmp_dir= +download=1 -while getopts "v:gh" opt; do - case "$opt" in - "v") llvm_version="$OPTARG";; - "g") use_github_host=1;; - "h") echo "Usage:" - echo "-v - Version of clang+llvm to use" - echo "-g - Use github to download releases" - exit 2 - ;; - "?") echo "invalid option: -$OPTARG"; exit 1;; +while getopts "t:v:ghD" opt; do + case "${opt}" in + "t") tmp_dir="${OPTARG}" ;; + "v") llvm_version="${OPTARG}" ;; + "g") use_github_host=1 ;; + "h") + echo "Usage:" + echo "-t - Optional: Specify a temp directory to download distributions to." + echo "-v - Version of clang+llvm to use." + echo "-g - Use github to download releases." + exit 2 + ;; + "D") download=0 ;; + *) + echo "invalid option: -${OPTARG}" + exit 1 + ;; esac done -if ! [[ "${llvm_version:-}" ]]; then - echo "Usage: ${BASH_SOURCE[0]} [-g] -v llvm_version" +if [[ -z ${llvm_version-} ]]; then + echo "Usage: ${BASH_SOURCE[0]} [-t ] [-g] -v " exit 1 fi -tmp_dir="$(mktemp -d)" - cleanup() { rc=$? rm -rf "${tmp_dir}" - exit $rc + exit "${rc}" } -trap 'cleanup' INT HUP QUIT TERM EXIT + +if [[ -z "${tmp_dir}" ]]; then + tmp_dir="$(mktemp -d)" + echo "Using temp dir: '${tmp_dir}'" + trap 'cleanup' INT HUP QUIT TERM EXIT +elif [[ ! -r "${tmp_dir}" ]]; then + echo "Temp directory does not exist: '${tmp_dir}'." + exit 2 +fi llvm_host() { local url_base="releases.llvm.org/${llvm_version}" output_dir="${tmp_dir}/${url_base}" wget --recursive --level 1 --directory-prefix="${tmp_dir}" \ - --accept-regex "clang%2bllvm.*tar.xz$" "http://${url_base}/" + --accept-regex "(clang%2bllvm|LLVM)-.*tar.(xz|gz)$" "http://${url_base}/" } github_host() { - output_dir="${tmp_dir}" + output_dir="${tmp_dir}/${llvm_version}" + mkdir -p "${output_dir}" + if ((download)); then + echo "" + echo "====" + echo "Checksums for clang+llvm distributions are (${output_dir}):" + echo " # ${llvm_version}" + curl -s "https://api.github.com/repos/llvm/llvm-project/releases/tags/llvmorg-${llvm_version}" | + tee ./releases.json | + jq -r '.assets[]|select(any(.name; test("^(clang[+]llvm|LLVM)-.*tar.(xz|gz)$")))|" \""+(.browser_download_url|split("/")|.[-1]|sub("%2B";"+"))+"\": \""+.digest+"\","' + exit 0 + fi ( - cd "${output_dir}" - curl -s "https://api.github.com/repos/llvm/llvm-project/releases/tags/llvmorg-${llvm_version}" | \ - jq .assets[].browser_download_url | \ - tee ./urls.txt | \ - grep 'clang%2Bllvm.*tar.xz"$' | \ - tee ./filtered_urls.txt | \ - xargs -n1 curl -L -O + cd "${output_dir}" + curl -s "https://api.github.com/repos/llvm/llvm-project/releases/tags/llvmorg-${llvm_version}" | + tee ./releases.json | + jq '.assets[]|select(any(.name .digest; test("^(clang[+]llvm|LLVM)-.*tar.(xz|gz)$")))|.browser_download_url' | + tee ./filtered_urls.txt | + xargs -n1 curl -L -O -C - ) } -if (( use_github_host )); then +if ((use_github_host)); then github_host else llvm_host @@ -72,9 +97,10 @@ fi echo "" echo "====" -echo "Checksums for clang+llvm distributions are:" -find "${output_dir}" -type f -name '*.xz' -exec shasum -a 256 {} \; | \ - sed -e "s@${output_dir}/@@" | \ - awk '{ printf "\"%s\": \"%s\",\n", $2, $1 }' | \ - sed -e 's/%2[Bb]/+/' | \ +echo "Checksums for clang+llvm distributions are (${output_dir}):" +echo " # ${llvm_version}" +find "${output_dir}" -type f \( -name 'clang%2?llvm-*.tar.*' -o -name 'LLVM-*.tar.*' \) \( -name '*.gz' -o -name '*.xz' \) -exec shasum -a 256 {} \; | + sed -e "s@${output_dir}/@@" | + awk '{ printf " \"%s\": \"%s\",\n", $2, $1 }' | + sed -e 's/%2[Bb]/+/' | sort