From 582b5a6df6d6217f04c87d589dced0ccb07677e4 Mon Sep 17 00:00:00 2001 From: zhangzikang1992 Date: Thu, 23 May 2024 10:28:28 +0800 Subject: [PATCH] Add supprot for loongarch64 --- 9001-add-supprot-for-loongarch64.patch | 273 +++++++++++++++++++++++++ ceph.spec | 9 +- 2 files changed, 281 insertions(+), 1 deletion(-) create mode 100644 9001-add-supprot-for-loongarch64.patch diff --git a/9001-add-supprot-for-loongarch64.patch b/9001-add-supprot-for-loongarch64.patch new file mode 100644 index 0000000..e5a4695 --- /dev/null +++ b/9001-add-supprot-for-loongarch64.patch @@ -0,0 +1,273 @@ +From b914e57a20fe0e8e7f0592c3bc041dc8d511cbdd Mon Sep 17 00:00:00 2001 +From: zhangzikang +Date: Wed, 22 May 2024 16:59:10 +0800 +Subject: [PATCH] add supprot for loongarch64 + +--- + CMakeLists.txt | 2 +- + src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake | 2 ++ + .../cpp/src/arrow/vendored/double-conversion/utils.h | 2 +- + .../cpp/src/arrow/vendored/fast_float/float_common.h | 2 +- + src/boost/boost/predef/architecture.h | 1 + + src/boost/boostcpp.jam | 5 +++-- + .../libs/config/checks/architecture/Jamfile.jam | 1 + + .../libs/config/checks/architecture/loongarch.cpp | 12 ++++++++++++ + src/common/Cycles.h | 4 ++++ + src/jaegertracing/opentelemetry-cpp/CMakeLists.txt | 2 ++ + .../third_party/benchmark/src/cycleclock.h | 2 +- + .../tools/vcpkg/ports/halide/CONTROL | 6 +++++- + .../tools/vcpkg/ports/halide/portfile.cmake | 1 + + .../tools/vcpkg/ports/llvm/portfile.cmake | 1 + + .../tools/vcpkg/ports/llvm/vcpkg.json | 4 ++++ + .../range/range_tree/lib/portability/toku_time.h | 4 ++++ + 16 files changed, 44 insertions(+), 7 deletions(-) + create mode 100644 src/boost/libs/config/checks/architecture/loongarch.cpp + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 884135cd8..c955d55c7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -275,7 +275,7 @@ if(WITH_BLUESTORE_PMEM) + endif() + + CMAKE_DEPENDENT_OPTION(WITH_SPDK "Enable SPDK" OFF +- "CMAKE_SYSTEM_PROCESSOR MATCHES i386|i686|amd64|x86_64|AMD64|aarch64" OFF) ++ "CMAKE_SYSTEM_PROCESSOR MATCHES i386|i686|amd64|x86_64|AMD64|aarch64|loongarch64" OFF) + if(WITH_SPDK) + if(NOT WITH_BLUESTORE) + message(SEND_ERROR "Please enable WITH_BLUESTORE for using SPDK") +diff --git a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake +index c1a1ba043..5f2a6cf37 100644 +--- a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake ++++ b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake +@@ -32,6 +32,8 @@ if(NOT DEFINED ARROW_CPU_FLAG) + set(ARROW_CPU_FLAG "ppc") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") + set(ARROW_CPU_FLAG "s390x") ++ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") ++ set(ARROW_CPU_FLAG "loongarch") + else() + set(ARROW_CPU_FLAG "x86") + endif() +diff --git a/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h b/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h +index 4328344d7..b86276950 100644 +--- a/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h ++++ b/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h +@@ -93,7 +93,7 @@ int main(int argc, char** argv) { + #if defined(_M_X64) || defined(__x86_64__) || \ + defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ + defined(__hppa__) || defined(__ia64__) || \ +- defined(__mips__) || \ ++ defined(__mips__) || defined(__loongarch__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ +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 f7b7662b9..8d11067f8 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 +@@ -6,7 +6,7 @@ + #include + + #if (defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) \ +- || defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) \ ++ || defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__loongarch__)\ + || defined(__MINGW64__) \ + || defined(__s390x__) \ + || (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) \ +diff --git a/src/boost/boost/predef/architecture.h b/src/boost/boost/predef/architecture.h +index b131a8928..a6fd00c36 100644 +--- a/src/boost/boost/predef/architecture.h ++++ b/src/boost/boost/predef/architecture.h +@@ -30,6 +30,7 @@ http://www.boost.org/LICENSE_1_0.txt) + #include + #include + #include ++#include + #include + + #endif +diff --git a/src/boost/boostcpp.jam b/src/boost/boostcpp.jam +index 082536e2a..28099d877 100644 +--- a/src/boost/boostcpp.jam ++++ b/src/boost/boostcpp.jam +@@ -634,7 +634,7 @@ rule address-model ( ) + return @boostcpp.deduce-address-model ; + } + +-local deducable-architectures = arm mips1 power riscv s390x sparc x86 combined ; ++local deducable-architectures = arm mips1 power riscv s390x sparc x86 combined loongarch ; + feature.feature deduced-architecture : $(deducable-architectures) : propagated optional composite hidden ; + for a in $(deducable-architectures) + { +@@ -645,7 +645,7 @@ rule deduce-architecture ( properties * ) + { + local result ; + local filtered = [ toolset-properties $(properties) ] ; +- local names = arm mips1 power riscv s390x sparc x86 combined ; ++ local names = arm mips1 power riscv s390x sparc x86 loongarch combined ; + local idx = [ configure.find-builds "default architecture" : $(filtered) + : /boost/architecture//arm + : /boost/architecture//mips1 +@@ -654,6 +654,7 @@ rule deduce-architecture ( properties * ) + : /boost/architecture//s390x + : /boost/architecture//sparc + : /boost/architecture//x86 ++ : /boost/architecture//loongarch + : /boost/architecture//combined ] ; + result = $(names[$(idx)]) ; + +diff --git a/src/boost/libs/config/checks/architecture/Jamfile.jam b/src/boost/libs/config/checks/architecture/Jamfile.jam +index 2ba54f9ad..faf57eb13 100644 +--- a/src/boost/libs/config/checks/architecture/Jamfile.jam ++++ b/src/boost/libs/config/checks/architecture/Jamfile.jam +@@ -23,4 +23,5 @@ obj power : power.cpp ; + obj riscv : riscv.cpp ; + obj sparc : sparc.cpp ; + obj x86 : x86.cpp ; ++obj loongarch : loongarch.cpp ; + obj s390x : s390x.cpp ; +diff --git a/src/boost/libs/config/checks/architecture/loongarch.cpp b/src/boost/libs/config/checks/architecture/loongarch.cpp +new file mode 100644 +index 000000000..ecd84e0a4 +--- /dev/null ++++ b/src/boost/libs/config/checks/architecture/loongarch.cpp +@@ -0,0 +1,12 @@ ++// loongarch.cpp ++// ++// Copyright (c) 2012 Steven Watanabe ++// ++// Distributed under the Boost Software License Version 1.0. (See ++// accompanying file LICENSE_1_0.txt or copy at ++// http://www.boost.org/LICENSE_1_0.txt) ++ ++#if !defined(__loongarch) && !defined(__loongarch__) && !defined(__loongarch64__) \ ++ && !defined(__loong) && !defined(__LOONGARCH__) ++#error "Not LOONGARCH" ++#endif +diff --git a/src/common/Cycles.h b/src/common/Cycles.h +index b546479c2..1bae9d616 100644 +--- a/src/common/Cycles.h ++++ b/src/common/Cycles.h +@@ -84,6 +84,10 @@ class Cycles { + uint64_t tsc; + asm volatile("stck %0" : "=Q" (tsc) : : "cc"); + return tsc; ++#elif defined(__loongarch__) ++ struct timeval tv; ++ gettimeofday(&tv, nullptr); ++ return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; + #else + #warning No high-precision counter available for your OS/arch + return 0; +diff --git a/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt b/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt +index 6d2b27435..46b54793e 100755 +--- a/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt ++++ b/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt +@@ -64,6 +64,8 @@ else() + set(ARCH riscv) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x.*|S390X.*)") + set(ARCH s390x) ++ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(loongarch64.*|LOONGARCH64.*)") ++ set(ARCH loongarch) + else() + message( + FATAL_ERROR +diff --git a/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h b/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h +index 9bef594be..e7d523fea 100644 +--- a/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h ++++ b/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h +@@ -204,7 +204,7 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() { + asm volatile("rdcycle %0" : "=r"(cycles)); + return cycles; + #endif +-#elif defined(__e2k__) || defined(__elbrus__) ++#elif defined(__e2k__) || defined(__elbrus__) || defined(__loongarch__) + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; +diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL +index 8ffcc93dd..512bfdf8c 100644 +--- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL ++++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL +@@ -12,7 +12,7 @@ Build-Depends: halide[core,target-x86] (x86|x64), halide[core,target-arm] (arm&! + + Feature: target-all + Description: Include all targets +-Build-Depends: halide[core,target-aarch64,target-amdgpu,target-arm,target-d3d12compute,target-hexagon,target-metal,target-mips,target-nvptx,target-opencl,target-opengl,target-powerpc,target-riscv,target-x86] ++Build-Depends: halide[core,target-aarch64,target-amdgpu,target-arm,target-d3d12compute,target-hexagon,target-metal,target-mips,target-nvptx,target-opencl,target-opengl,target-powerpc,target-riscv,target-x86,target-loongarch] + + Feature: target-aarch64 + Description: Include AArch64 target +@@ -62,3 +62,7 @@ Feature: target-x86 + Description: Include X86 target + Build-Depends: llvm[core,target-x86] + ++Feature: target-loongarch ++Description: Include LOONGARCH target ++Build-Depends: llvm[core,target-loongarch] ++ +diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake +index b8e08adda..51e106739 100644 +--- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake ++++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake +@@ -27,6 +27,7 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + target-powerpc TARGET_POWERPC + target-riscv TARGET_RISCV + target-x86 TARGET_X86 ++ target-loongarch TARGET_LOONGARCH + ) + + vcpkg_configure_cmake( +diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake +index 356a25bf1..c793fceb4 100644 +--- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake ++++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake +@@ -181,6 +181,7 @@ set(known_llvm_targets + WebAssembly + X86 + XCore ++ LOONGARCH + ) + + set(LLVM_TARGETS_TO_BUILD "") +diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json +index 4590e5111..c34d78292 100644 +--- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json ++++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json +@@ -258,6 +258,7 @@ + "target-systemz", + "target-webassembly", + "target-x86", ++ "target-loongarch", + "target-xcore" + ] + } +@@ -308,6 +309,9 @@ + "target-x86": { + "description": "Build with X86 backend." + }, ++ "target-loongarch": { ++ "description": "Build with LOONGARCH backend." ++ }, + "target-xcore": { + "description": "Build with XCore backend." + }, +diff --git a/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +index 46111e7f0..4555b8f71 100644 +--- a/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h ++++ b/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +@@ -154,6 +154,10 @@ static inline tokutime_t toku_time_now(void) { + uint64_t cycles; + asm volatile("rdcycle %0" : "=r"(cycles)); + return cycles; ++#elif defined(__loongarch__) ++ struct timeval tv; ++ gettimeofday(&tv, nullptr); ++ return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; + #else + #error No timer implementation for this platform + #endif +-- +2.33.0 + diff --git a/ceph.spec b/ceph.spec index ad932c5..df47348 100644 --- a/ceph.spec +++ b/ceph.spec @@ -174,7 +174,7 @@ ################################################################################# Name: ceph Version: 18.2.2 -Release: 3 +Release: 4 %if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler} Epoch: 2 %endif @@ -197,6 +197,10 @@ Patch2: 0002-fix-compilation-with-cython3.patch Patch3: 0003-fix-CVE-2023-46159.patch Patch4: 0004-fix-mds-metadata-lost-in-one-case.patch +%ifarch loongarch64 +Patch5: 9001-add-supprot-for-loongarch64.patch +%endif + %if 0%{?suse_version} # _insert_obs_source_lines_here ExclusiveArch: x86_64 aarch64 ppc64le s390x @@ -2633,6 +2637,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Wed May 22 2024 zhangzikang - 2:18.2.2-4 +- Add supprot for loongarch64 + * Wed Apr 10 2024 cenhuilin - 2:18.2.2-3 - mon: fix mds metadata lost in one case