Commit 390bf4fbc3 for qemu.org

commit 390bf4fbc311297cb91f620937d8c566ab35c8db
Author: Brian Cain <brian.cain@oss.qualcomm.com>
Date:   Sat Jul 11 11:54:33 2026 -0700

    tests/docker: hexagon fix podman untar, 22.1.8

    The debian-hexagon-cross image previously unpacked the codelinaro
    clang+llvm hexagon toolchain by piping a .tar.zst archive straight
    into "tar --zstd -xC". GNU tar restores the archive's stored file
    modes on extraction, including lchmod() on symlinks. Under rootless
    podman, where the build runs in a user namespace on overlay storage,
    those chmod()/lchmod() calls are rejected with EPERM:

      tar: .../libclang_rt.builtins.a: Cannot change mode to rwxrwxrwx: \
           Operation not permitted
      tar: .../x86_64-linux-gnu: Cannot change mode to rwxr-xr-x: \
           Operation not permitted
      tar: Exiting with failure status due to previous errors

    tar then exits non-zero and aborts the build, so debian-hexagon-cross
    only builds reliably under docker, not rootless podman.

    So instead we can switch to a different packaging.  clang, lld
    come from LLVM Debian builds from apt.llvm.org, instead of custom ones for
    hexagon.  And only the hexagon linux sysroot is required, avoiding the
    tar issues.

    Reviewed-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
    Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
    Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>

diff --git a/tests/docker/dockerfiles/debian-hexagon-cross.docker b/tests/docker/dockerfiles/debian-hexagon-cross.docker
index 23e8bb2fb2..e07a2be37e 100644
--- a/tests/docker/dockerfiles/debian-hexagon-cross.docker
+++ b/tests/docker/dockerfiles/debian-hexagon-cross.docker
@@ -17,13 +17,13 @@ RUN apt-get update && \
 # Install common build utilities
     apt-get install -y --no-install-recommends \
         curl \
+        wget \
+        gnupg \
+        lsb-release \
         ccache \
         xz-utils \
         zstd \
         ca-certificates \
-        libc++1 \
-        libc++abi1 \
-        libunwind-19 \
         bison \
         flex \
         git \
@@ -43,15 +43,22 @@ RUN apt-get update && \
     ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc && \
     dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt

-ENV TOOLCHAIN_INSTALL=/opt
-ENV TOOLCHAIN_RELEASE=22.1.0
-ENV TOOLCHAIN_BASENAME=clang+llvm-${TOOLCHAIN_RELEASE}-cross-hexagon-unknown-linux-musl
-ENV TOOLCHAIN_URL=https://artifacts.codelinaro.org/artifactory/codelinaro-toolchain-for-hexagon/${TOOLCHAIN_RELEASE}_/${TOOLCHAIN_BASENAME}.tar.zst
+ENV LLVM_VERSION=22
+ENV TOOLCHAIN_RELEASE=22.1.8
+ENV TOOLCHAIN_URL=https://artifacts.codelinaro.org/artifactory/codelinaro-toolchain-for-hexagon/${TOOLCHAIN_RELEASE}________/hexagon-debs-${TOOLCHAIN_RELEASE}________.tar.gz
 ENV CCACHE_WRAPPERSDIR=/usr/libexec/ccache-wrappers
-
-RUN curl -#SL "$TOOLCHAIN_URL" | tar --zstd -xC "$TOOLCHAIN_INSTALL"
-ENV PATH=$PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin
 ENV MAKE=/usr/bin/make
+
+RUN curl -#SL https://apt.llvm.org/llvm.sh -o /tmp/llvm.sh && \
+    chmod +x /tmp/llvm.sh && \
+    DEBIAN_FRONTEND=noninteractive eatmydata /tmp/llvm.sh ${LLVM_VERSION} && \
+    rm -f /tmp/llvm.sh && \
+    mkdir -p /tmp/hexagon-debs && \
+    curl -#SL "$TOOLCHAIN_URL" | tar -xzC /tmp/hexagon-debs && \
+    DEBIAN_FRONTEND=noninteractive eatmydata \
+    apt-get install -y /tmp/hexagon-debs/*.deb && \
+    rm -rf /tmp/hexagon-debs
+
 # As a final step configure the user (if env is defined)
 ARG USER
 ARG UID