diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index 3effb88b606e..74747efad5b5 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -75,7 +75,7 @@ jobs: name: ${{ matrix.title }} runs-on: ${{ matrix.runs-on }} if: ${{ !contains(github.event.pull_request.title, 'WIP') }} - timeout-minutes: 75 + timeout-minutes: ${{ matrix.timeout || 75 }} strategy: fail-fast: false matrix: @@ -102,6 +102,15 @@ jobs: runs-on: ubuntu-24.04-arm title: ARM64 Ubuntu 22.04 C++ ubuntu: 22.04 + - arch: riscv64 + clang-tools: 18 + image: ubuntu-cpp + llvm: 18 + runs-on: ubuntu-24.04-riscv + timeout: 300 + title: RISCV64 Ubuntu 24.04 C++ + ubuntu: 24.04 + buildkit: "0" env: ARCH: ${{ matrix.arch }} ARROW_SIMD_LEVEL: ${{ matrix.simd-level }} @@ -128,17 +137,32 @@ jobs: python-version: 3 - name: Setup Python on self-hosted runner if: | - contains(matrix.runs-on, 'self-hosted') + contains(matrix.runs-on, 'self-hosted') || + matrix.arch == 'riscv64' run: | sudo apt update sudo apt install -y --no-install-recommends python3 python3-dev python3-pip - python3 -m pip install -U pip + python3 -m pip install --break-system-packages -U pip + echo "$HOME/.local/bin" >> $GITHUB_PATH + - name: Setup Docker on RISE runner + if: matrix.arch == 'riscv64' + run: | + # Install Docker Compose v2 plugin (not in Ubuntu riscv64 repos) + # Can't upgrade Docker daemon mid-job (no systemd to restart) + # so we disable BuildKit to work around the HTTP/HTTPS issue + COMPOSE_VERSION="v5.1.1" + sudo mkdir -p /usr/local/lib/docker/cli-plugins + sudo curl -SL "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-riscv64" \ + -o /usr/local/lib/docker/cli-plugins/docker-compose + sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose + docker compose version - name: Setup Archery - run: python3 -m pip install -e dev/archery[docker] + run: python3 -m pip install --break-system-packages -e dev/archery[docker] - name: Execute Docker Build env: ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }} ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} + DOCKER_BUILDKIT: ${{ matrix.buildkit || '1' }} run: | # GH-40558: reduce ASLR to avoid ASAN/LSAN crashes sudo sysctl -w vm.mmap_rnd_bits=28 diff --git a/ci/scripts/install_minio.sh b/ci/scripts/install_minio.sh index 5efa03e82e20..5a7d05fc11a4 100755 --- a/ci/scripts/install_minio.sh +++ b/ci/scripts/install_minio.sh @@ -34,7 +34,7 @@ archs=([x86_64]=amd64 [s390x]=s390x) arch=$(uname -m) -if [ -z "${archs[$arch]}" ]; then +if [ -z "${archs[$arch]:-}" ]; then echo "Unsupported architecture: ${arch}" exit 0 fi