From: Luca Boccassi Date: Fri, 29 May 2026 17:17:25 +0000 (+0100) Subject: ci: add build coverage for riscv64 X-Git-Tag: v261-rc3~18^2 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=refs%2Fpull%2F42431%2Fhead;p=thirdparty%2Fsystemd.git ci: add build coverage for riscv64 This is already a primary architecture in Ubuntu, and more distributions are adding support for it. It's too slow for emulation, but we can at least verify that compilation works. Use the arm worker, for two reasons: - it is already set up with ports.ubuntu.com so we don't have to muck with apt sources manually - it is used a lot less than the x86 worker --- diff --git a/.github/workflows/build-test.sh b/.github/workflows/build-test.sh index 784340ec450..9c3d2e73382 100755 --- a/.github/workflows/build-test.sh +++ b/.github/workflows/build-test.sh @@ -96,6 +96,9 @@ if [[ -n "$CROSS_ARCH" ]]; then armhf) triplet=arm-linux-gnueabihf ;; + riscv64) + triplet=riscv64-linux-gnu + ;; *) fatal "Unsupported cross architecture: $CROSS_ARCH" ;; diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 2596b3edb5e..a5b20271395 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -42,6 +42,9 @@ jobs: - env: { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "bfd", CROSS_ARCH: "armhf" } runner: [ ubuntu-24.04-arm ] python-version: '' + - env: { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "bfd", CROSS_ARCH: "riscv64" } + runner: [ ubuntu-24.04-arm ] + python-version: '' - env: { COMPILER: "clang", COMPILER_VERSION: "18", LINKER: "lld" } runner: [ ubuntu-24.04-s390x ] python-version: '' diff --git a/.github/workflows/riscv64-gcc.cross b/.github/workflows/riscv64-gcc.cross new file mode 100644 index 00000000000..8096e451922 --- /dev/null +++ b/.github/workflows/riscv64-gcc.cross @@ -0,0 +1,21 @@ +[binaries] +c = 'riscv64-linux-gnu-gcc' +cpp = 'riscv64-linux-gnu-g++' +ar = 'riscv64-linux-gnu-gcc-ar' +nm = 'riscv64-linux-gnu-gcc-nm' +strip = 'riscv64-linux-gnu-strip' +pkgconfig = 'pkg-config' + +[properties] +needs_exe_wrapper = true +pkg_config_libdir = '/usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig' +c_args = ['-O2', '-pipe', '-g', '-feliminate-unused-debug-types'] +c_link_args = ['-fuse-ld=bfd', '-Wl,-O1', '-Wl,--hash-style=gnu', '-Wl,--as-needed', '-Wl,-z,relro,-z,now,-z,noexecstack'] +cpp_args = [] +cpp_link_args = ['-fuse-ld=bfd', '-Wl,-O1', '-Wl,--hash-style=gnu', '-Wl,--as-needed', '-Wl,-z,relro,-z,now,-z,noexecstack'] + +[host_machine] +system = 'linux' +cpu_family = 'riscv64' +cpu = 'riscv64' +endian = 'little'