diff --git a/1000-Added-support-for-building-the-riscv64-protoc-binari.patch b/1000-Added-support-for-building-the-riscv64-protoc-binari.patch new file mode 100644 index 0000000000000000000000000000000000000000..90cccad24716547fe2e4fa8ea4c44a9db1f064ea --- /dev/null +++ b/1000-Added-support-for-building-the-riscv64-protoc-binari.patch @@ -0,0 +1,56 @@ +From fd266072ee39ac69c6592570a10e4dc4b1b73974 Mon Sep 17 00:00:00 2001 +From: Dingli Zhang +Date: Mon, 6 May 2024 16:50:47 +0800 +Subject: [PATCH] Added support for building the riscv64 protoc binaries with + Kokoro + + +diff --git a/kokoro/release/protoc/linux/build.sh b/kokoro/release/protoc/linux/build.sh +index 44a95aab3..13be7b2ed 100755 +--- a/kokoro/release/protoc/linux/build.sh ++++ b/kokoro/release/protoc/linux/build.sh +@@ -22,6 +22,9 @@ protoc-artifacts/build-protoc.sh linux aarch_64 protoc + sudo apt install -y g++-powerpc64le-linux-gnu + protoc-artifacts/build-protoc.sh linux ppcle_64 protoc + ++sudo apt install -y g++-riscv64-linux-gnu ++protoc-artifacts/build-protoc.sh linux riscv64 protoc ++ + sudo apt install -y g++-s390x-linux-gnu + protoc-artifacts/build-protoc.sh linux s390_64 protoc + +diff --git a/protoc-artifacts/build-protoc.sh b/protoc-artifacts/build-protoc.sh +index 460284262..20ca05739 100755 +--- a/protoc-artifacts/build-protoc.sh ++++ b/protoc-artifacts/build-protoc.sh +@@ -93,6 +93,8 @@ checkArch () + assertEq $format "elf64-x86-64" $LINENO + elif [[ "$ARCH" == aarch_64 ]]; then + assertEq $format "elf64-little" $LINENO ++ elif [[ "$ARCH" == riscv64 ]]; then ++ assertEq $format "elf64-littleriscv" $LINENO + elif [[ "$ARCH" == s390_64 ]]; then + if [[ $host_machine == s390x ]];then + assertEq $format "elf64-s390" $LINENO +@@ -162,6 +164,9 @@ checkDependencies () + elif [[ "$ARCH" == aarch_64 ]]; then + dump_cmd='objdump -p '"$1"' | grep NEEDED' + white_list="libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld-linux-aarch64\.so\.1" ++ elif [[ "$ARCH" == riscv64 ]]; then ++ dump_cmd='objdump -p '"$1"' | grep NEEDED' ++ white_list="libz\.so\.1\|libm\.so\.6\|libc\.so\.6\|ld-linux-riscv64-lp64d\.so\.1" + fi + elif [[ "$OS" == osx ]]; then + dump_cmd='otool -L '"$1"' | fgrep dylib' +@@ -226,6 +231,8 @@ elif [[ "$(uname)" == Linux* ]]; then + elif [[ "$ARCH" == ppcle_64 ]]; then + CXXFLAGS="$CXXFLAGS -m64" + CONFIGURE_ARGS="$CONFIGURE_ARGS --host=powerpc64le-linux-gnu" ++ elif [[ "$ARCH" == riscv64 ]]; then ++ CONFIGURE_ARGS="$CONFIGURE_ARGS --host=riscv64-linux-gnu" + elif [[ "$ARCH" == s390_64 ]]; then + CXXFLAGS="$CXXFLAGS -m64" + CONFIGURE_ARGS="$CONFIGURE_ARGS --host=s390x-linux-gnu" +-- +2.41.0 + diff --git a/hbase.spec b/hbase.spec index 1dc6d0a32d5566c8d6de6b345daf53dd7825693d..04145277d6e889f57bfebb26561149724419170d 100644 --- a/hbase.spec +++ b/hbase.spec @@ -8,7 +8,7 @@ Name: hbase Version: 2.5.0 -Release: 3 +Release: 4 Summary: A database for Apache Hadoop License: Apache-2.0 and BSD and CPL-1.0 and EPL-1.0 and MIT URL: http://hbase.apache.org/ @@ -17,9 +17,13 @@ Source1: %{name}.logrotate Source2: %{name}-site.xml Source3: %{name}.service.template Source4: xmvn-reactor -Source5: protoc-3.21.1-linux-riscv64.exe +Source5: https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.1.tar.gz Patch0: upgrade_os-maven_plugin_to_1.7.1.patch -Patch1: fix-riscv64-support.patch + +# riscv64 +Patch1000: fix-riscv64-support.patch +Patch1001: 1000-Added-support-for-building-the-riscv64-protoc-binari.patch + BuildArch: noarch BuildRequires: cmake @@ -29,6 +33,7 @@ BuildRequires: systemd BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: java-1.8.0-openjdk-devel maven hostname maven-local protobuf2-devel protobuf2-compiler protobuf2 Requires: java-1.8.0-openjdk +BuildRequires: autoconf automake libtool pkgconfig zlib-devel libstdc++-static Requires(post): systemd Requires(preun): systemd @@ -62,11 +67,6 @@ This package contains the API documentation for %{name}. %prep %setup -qn %{name}-rel-%{version} %patch0 -p1 -%if "%{_arch}" == "riscv64" -%patch1 -p1 -mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=/usr/bin/protoc -mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.21.1 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=%{SOURCE5} -%endif mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/bin/protoc cp %{SOURCE4} ./.xmvn-reactor echo `pwd` > absolute_prefix.log @@ -74,6 +74,20 @@ sed -i 's/\//\\\//g' absolute_prefix.log absolute_prefix=`head -n 1 absolute_prefix.log` sed -i 's/absolute-prefix/'"$absolute_prefix"'/g' .xmvn-reactor +%if "%{_arch}" == "riscv64" +%patch1000 -p1 +mkdir -p ${HOME}/%{name}-prep_dir +# protoc +tar -mxf %{SOURCE5} -C ${HOME}/%{name}-prep_dir +pushd ${HOME}/%{name}-prep_dir/protobuf-3.21.1 +%patch1001 -p1 +./autogen.sh +./protoc-artifacts/build-protoc.sh linux riscv64 protoc +mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.21.1 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=protoc-artifacts/target/linux/riscv64/protoc.exe +popd +mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=/usr/bin/protoc +%endif + %build %if "%{_arch}" == "riscv64" export MAVEN_OPTS="-Xms2048M -Xmx8000M" @@ -273,6 +287,10 @@ fi %endif %changelog +* Tue Jun 25 2024 Dingli Zhang - 2.5.0-4 +- Remove riscv64 prebuilded files +- Build protoc in prep state for riscv64 + * Wed May 29 2024 Dingli Zhang - 2.5.0-3 - Fix riscv64 support - Upgrade os-maven-plugin to 1.7.1 diff --git a/protoc-3.21.1-linux-riscv64.exe b/v3.21.1.tar.gz similarity index 38% rename from protoc-3.21.1-linux-riscv64.exe rename to v3.21.1.tar.gz index 14f98c760013682731e704d07c027fda40199eb9..02ed70123403669f9e8fe82730dafc29198d31c7 100644 Binary files a/protoc-3.21.1-linux-riscv64.exe and b/v3.21.1.tar.gz differ