diff --git a/0042-add-riscv64-support-for-ceph-18.2.1.patch b/0042-add-riscv64-support-for-ceph-18.2.1.patch new file mode 100644 index 0000000000000000000000000000000000000000..b4e45a215225fc357c5e11bd2cf96522715d528f --- /dev/null +++ b/0042-add-riscv64-support-for-ceph-18.2.1.patch @@ -0,0 +1,53 @@ +From 085a579568f7d8bb0da922418b3ad6fbd787dc18 Mon Sep 17 00:00:00 2001 +From: yan yihao +Date: Thu, 29 May 2025 15:29:11 -0400 +Subject: [PATCH] riscv + +--- + src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake | 2 ++ + src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h | 1 + + src/common/Cycles.h | 4 ++++ + 3 files changed, 7 insertions(+) + +diff --git a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake +index e3367ca..e5c54cc 100644 +--- a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake ++++ b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake +@@ -34,6 +34,8 @@ if(NOT DEFINED ARROW_CPU_FLAG) + set(ARROW_CPU_FLAG "s390x") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") + set(ARROW_CPU_FLAG "loongarch") ++ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") ++ set(ARROW_CPU_FLAG "riscv64") + else() + set(ARROW_CPU_FLAG "x86") + endif() +diff --git a/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h b/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h +index 8d11067..297ac36 100644 +--- a/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h ++++ b/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h +@@ -9,6 +9,7 @@ + || defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__loongarch__)\ + || defined(__MINGW64__) \ + || defined(__s390x__) \ ++ || defined(__riscv) \ + || (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) \ + || defined(__EMSCRIPTEN__)) + #define FASTFLOAT_64BIT +diff --git a/src/common/Cycles.h b/src/common/Cycles.h +index 1bae9d6..9260d10 100644 +--- a/src/common/Cycles.h ++++ b/src/common/Cycles.h +@@ -88,6 +88,10 @@ class Cycles { + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; ++#elif defined(__riscv) && __riscv_xlen == 64 ++ uint64_t tsc; ++ asm volatile ("rdtime %0" : "=r" (tsc)); ++ return tsc; + #else + #warning No high-precision counter available for your OS/arch + return 0; +-- +2.41.0 diff --git a/ceph.spec b/ceph.spec index d131d0fd35fd3ad17e22d2ba4e72024da117d7ee..7b8fcc83611047799088f796fd61987c1dba30ea 100644 --- a/ceph.spec +++ b/ceph.spec @@ -1,4 +1,4 @@ -%define anolis_release 2 +%define anolis_release 3 # # spec file for package ceph # @@ -33,7 +33,7 @@ %else %bcond_with rbd_rwl_cache %endif -%ifarch %{arm64} loongarch64 +%ifarch %{arm64} loongarch64 riscv64 %bcond_with system_pmdk %else %bcond_without system_pmdk @@ -126,6 +126,7 @@ Patch0038: ceph-c99-2.patch Patch0039: 0039-src-common-dout.h.patch Patch0040: 0040-add-loongarch64-support-for-ceph-18.2.1.patch Patch0041: 0041-fix-close-can-not-be-find-in-TUDPTransport.cc.patch +Patch0042: 0042-add-riscv64-support-for-ceph-18.2.1.patch ################################################################################# # dependencies that apply across all distro families ################################################################################# @@ -2025,6 +2026,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Fri May 30 2025 Yihao Yan - 2:18.2.1-3 +- add support for riscv build + * Fri Mar 21 2025 Wenlong Zhang - 2:18.2.1-2 - add loongarch64 support for ceph