From: Ludovic Henry Date: Sun, 12 Apr 2026 08:15:27 +0000 (+0200) Subject: ci: Add glibc build and release on linux-riscv64 (#1718) X-Git-Tag: v4.13.3~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=add35ac4264cae55682506d12daa60c1abf7bd7f;p=thirdparty%2Fccache.git ci: Add glibc build and release on linux-riscv64 (#1718) (cherry picked from commit 564105b39dc140171e962c257f8eaca83725ed9f) --- diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0cb053b9..536f0201 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -318,6 +318,33 @@ jobs: path: install/ccache retention-days: 3 + build_linux_riscv64_binary_glibc: + timeout-minutes: 30 + name: Linux riscv64 binary (glibc) + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + steps: + - name: Prepare environment + run: | + sudo apt-get update + sudo apt-get install -y g++-riscv64-linux-gnu libc6-dev-arm64-cross + - name: Get source + uses: actions/checkout@v4 + - name: Build binary + env: + CMAKE_GENERATOR: Ninja + CMAKE_PARAMS: | + -D CMAKE_TOOLCHAIN_FILE=../toolchains/riscv64-linux-gnu.cmake + -D CMAKE_EXE_LINKER_FLAGS_INIT=-static-libstdc++ + run: ci/build-binary + - name: Upload binary + uses: actions/upload-artifact@v4 + with: + name: linux-riscv64-glibc-binary + path: install/ccache + retention-days: 3 + build_linux_musl_static_binary: timeout-minutes: 30 name: Linux ${{ matrix.arch }} binary (musl static) @@ -644,6 +671,7 @@ jobs: - build_linux_aarch64_binary_glibc - build_linux_musl_static_binary - build_linux_x86_64_binary_glibc + - build_linux_riscv64_binary_glibc - build_windows_binary runs-on: ubuntu-24.04 steps: diff --git a/ci/generate-release-notes b/ci/generate-release-notes index f0b52228..9fd9dc94 100755 --- a/ci/generate-release-notes +++ b/ci/generate-release-notes @@ -9,7 +9,7 @@ url_prefix="https://github.com/ccache/ccache/releases/download/v${version}" source_extensions=(tar.gz tar.xz) linux_bin_extensions=(tar.gz tar.xz) -linux_archs=(aarch64 x86_64) +linux_archs=(aarch64 riscv64 x86_64) # windows_archs=(aarch64 i686 x86_64) windows_archs=(aarch64 x86_64) @@ -41,7 +41,12 @@ for arch in "${linux_archs[@]}"; do add "Linux ${arch} binary release glibc ${ext}" "ccache-${version}-linux-${arch}-glibc.${ext}" done for ext in "${linux_bin_extensions[@]}"; do - add "Linux ${arch} binary release musl static ${ext}" "ccache-${version}-linux-${arch}-musl-static.${ext}" + if [ "${arch}" == "riscv64" ]; then + # Not available, lacking native Github-hosted runners + true + else + add "Linux ${arch} binary release musl static ${ext}" "ccache-${version}-linux-${arch}-musl-static.${ext}" + fi done done for arch in "${windows_archs[@]}"; do diff --git a/ci/prepare-release b/ci/prepare-release index 76a3c081..d5e98e08 100755 --- a/ci/prepare-release +++ b/ci/prepare-release @@ -76,6 +76,7 @@ prepare_source_release prepare_posix_binary_release darwin gz prepare_posix_binary_release linux-aarch64-glibc gz xz prepare_posix_binary_release linux-aarch64-musl-static gz xz +prepare_posix_binary_release linux-riscv64-glibc gz xz prepare_posix_binary_release linux-x86_64-glibc gz xz prepare_posix_binary_release linux-x86_64-musl-static gz xz diff --git a/toolchains/riscv64-linux-gnu.cmake b/toolchains/riscv64-linux-gnu.cmake new file mode 100644 index 00000000..d97a8d33 --- /dev/null +++ b/toolchains/riscv64-linux-gnu.cmake @@ -0,0 +1,8 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR riscv64) +set(TOOLCHAIN_PREFIX riscv64-linux-gnu) +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)