From 0be8bab5d71001dd039ab5ca016609f6bb1cb349 Mon Sep 17 00:00:00 2001 From: xiaofan Date: Thu, 5 Dec 2024 03:11:16 +0000 Subject: [PATCH] support riscv64 Signed-off-by: xiaofan (cherry picked from commit 910e020d4b7bffb4d6586a7ca40ccf55287d7db2) --- og-riscv64-support.patch | 81 ++++++++++++++++++++++++++++++++++++++++ opengauss-server.spec | 19 +++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 og-riscv64-support.patch diff --git a/og-riscv64-support.patch b/og-riscv64-support.patch new file mode 100644 index 0000000..0644981 --- /dev/null +++ b/og-riscv64-support.patch @@ -0,0 +1,81 @@ +From bd23d5c22df1b5174c073c933d40c1a17204f2a2 Mon Sep 17 00:00:00 2001 +From: huangji +Date: Tue, 5 Nov 2024 09:40:31 +0000 +Subject: [PATCH 4/4] add riscv64 support + +Signed-off-by: huangji +--- + config/config.guess | 3 +++ + configure | 2 ++ + src/common/port/CMakeLists.txt | 8 ++++++++ + src/include/storage/lock/s_lock.h | 2 +- + 4 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/config/config.guess b/config/config.guess +index 15f22ac..71c5ca3 100644 +--- a/config/config.guess ++++ b/config/config.guess +@@ -963,6 +963,9 @@ EOF + loongarch*:Linux:*:*) + echo "$UNAME_MACHINE"-linux-"$LIBC" + exit ;; ++ riscv32:Linux:*:* | riscv64:Linux:*:*) ++ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" ++ exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +diff --git a/configure b/configure +index d4f0bf5..c600ba8 100755 +--- a/configure ++++ b/configure +@@ -29069,6 +29069,8 @@ if [ "$PLATFORM_ARCH"X == "aarch64"X ] ; then + else + CFLAGS="-march=armv8-a+crc $CFLAGS" + fi ++elif [ "$PLATFORM_ARCH"X == "riscv64"X ] ; then ++ CFLAGS="-march=rv64g $CFLAGS" + elif [ "$PLATFORM_ARCH"X == "x86_64"X ] ; then + CFLAGS="-mcx16 $CFLAGS_SSE42 $CFLAGS" + else +diff --git a/src/common/port/CMakeLists.txt b/src/common/port/CMakeLists.txt +index b9a6a28..e511eb0 100755 +--- a/src/common/port/CMakeLists.txt ++++ b/src/common/port/CMakeLists.txt +@@ -94,6 +94,10 @@ if("${BUILD_TUPLE}" STREQUAL "loongarch64") + list(REMOVE_ITEM TGT_port_SRC ${CMAKE_CURRENT_SOURCE_DIR}/pg_crc32c_choose.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pg_crc32c_sse42.cpp) + endif() + ++if("${BUILD_TUPLE}" STREQUAL "riscv64") ++ list(REMOVE_ITEM TGT_port_SRC ${CMAKE_CURRENT_SOURCE_DIR}/pg_crc32c_choose.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pg_crc32c_sse42.cpp) ++endif() ++ + SET(TGT_pgport_INC + ${PROJECT_SRC_DIR}/common/backend + ${PROJECT_SRC_DIR}/common/port +@@ -167,6 +171,10 @@ if("${BUILD_TUPLE}" STREQUAL "loongarch64") + list(REMOVE_ITEM TGT_pgport_srv_SRC ${CMAKE_CURRENT_SOURCE_DIR}/port_srv/pg_crc32c_choose.cpp ${CMAKE_CURRENT_SOURCE_DIR}/port_srv/pg_crc32c_sse42.cpp) + endif() + ++if("${BUILD_TUPLE}" STREQUAL "riscv64") ++ list(REMOVE_ITEM TGT_pgport_srv_SRC ${CMAKE_CURRENT_SOURCE_DIR}/port_srv/pg_crc32c_choose.cpp ${CMAKE_CURRENT_SOURCE_DIR}/port_srv/pg_crc32c_sse42.cpp) ++endif() ++ + SET(TGT_pgport_srv_INC + ${PROJECT_SRC_DIR}/common/backend + ${PROJECT_SRC_DIR}/common/port +diff --git a/src/include/storage/lock/s_lock.h b/src/include/storage/lock/s_lock.h +index 715d84a..bf7b041 100644 +--- a/src/include/storage/lock/s_lock.h ++++ b/src/include/storage/lock/s_lock.h +@@ -283,7 +283,7 @@ static __inline__ int tas(volatile slock_t* lock) + * the int-width variant of the builtin works on more chips than other widths. + */ + +-#if defined(__aarch64__) || defined(__aarch64) ++#if defined(__aarch64__) || defined(__aarch64) || defined(__riscv) + + #ifdef ENABLE_THREAD_CHECK + extern "C" { +-- +2.33.0 diff --git a/opengauss-server.spec b/opengauss-server.spec index fd02cdf..bc45e00 100755 --- a/opengauss-server.spec +++ b/opengauss-server.spec @@ -13,7 +13,7 @@ Name: opengauss Version: 6.0.0 -Release: 17 +Release: 18 Summary: openGauss is an open source relational database management system License: MulanPSL-2.0 and MIT and BSD and zlib and TCL and Apache-2.0 and BSL-1.0 URL: https://gitee.com/opengauss/openGauss-server @@ -38,6 +38,7 @@ Patch1: og-delete-obs.patch Patch2: og-openssl3-adptor.patch Patch3: og-security.patch Patch4: og-syntax.patch +Patch5: og-riscv64-support.patch Patch11: zlib.patch Patch12: zlib-CVE-2022-37434.patch Patch21: krb5-backport-Add-a-simple-DER-support-header.patch @@ -82,6 +83,7 @@ pushd openGauss-server-%{version} %patch -P2 -p1 %patch -P3 -p1 %patch -P4 -p1 +%patch -P5 -p1 popd pushd %{zlib_name}-%{zlib_version} @@ -126,6 +128,9 @@ CONFIGURE_EXTRA_FLAG="--64" %ifarch sw_64 CONFIGURE_EXTRA_FLAG="" %endif +%ifarch riscv64 + CONFIGURE_EXTRA_FLAG="" +%endif ./configure ${CONFIGURE_EXTRA_FLAG} --prefix=${zlib_dir} sed -i '21a CFLAGS += -fPIC' Makefile MAKE_EXTRA_FLAG="-m64" @@ -135,6 +140,9 @@ MAKE_EXTRA_FLAG="-m64" %ifarch sw_64 MAKE_EXTRA_FLAG="" %endif +%ifarch riscv64 + MAKE_EXTRA_FLAG="" +%endif make CFLAGS="-fPIE -fPIC" SFLAGS="-O2 -fPIC -fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,relro,-z,now ${MAKE_EXTRA_FLAG} -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN" %{?_smp_mflags} make install cd contrib/minizip/ @@ -167,6 +175,10 @@ cp -r ${xgboost_dir} ${build_target}/xgboost/llt popd ########### build opengauss ########### +%ifarch riscv64 +CMAKE_EXTRA_FLAG="-DENABLE_BBOX=OFF" +rm -rf openGauss-server-%{version}/contrib/dolphin +%endif pushd openGauss-server-%{version} opengauss_source_dir=$(pwd) export BUILD_TUPLE=$(uname -m) @@ -180,7 +192,7 @@ export PREFIX_HOME=${opengauss_source_dir}/mppdb_temp_install mkdir -p tmp_build cd tmp_build cmake .. -DENABLE_MULTIPLE_NODES=OFF -DENABLE_THREAD_SAFETY=ON -DWITH_OPENEULER_OS=ON -DENABLE_OPENEULER_MAJOR=ON \ - -DENABLE_LLVM_COMPILE=OFF -DENABLE_OBS=OFF -DENABLE_OPENSSL3=ON + -DENABLE_LLVM_COMPILE=OFF -DENABLE_OBS=OFF -DENABLE_OPENSSL3=ON ${CMAKE_EXTRA_FLAG} make %{?_smp_mflags} make install @@ -433,6 +445,9 @@ fi %changelog +* Thu Dec 5 2024 xiaofan - 6.0.0-18 +- Support riscv64 + * Mon Dec 2 2024 liuheng - 6.0.0-17 - Adaptation upgrade -- Gitee