diff --git a/0006-Bump-maven-plugin-os-maven-plugin.patch b/0006-Bump-maven-plugin-os-maven-plugin.patch new file mode 100644 index 0000000000000000000000000000000000000000..262d2f36eb9a63d13dacf1753a2adfeab2e3fecb --- /dev/null +++ b/0006-Bump-maven-plugin-os-maven-plugin.patch @@ -0,0 +1,25 @@ +From 0786c142953ff58e4cb743072c228961f65a48b5 Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu +Date: Mon, 14 Oct 2024 19:07:32 +0800 +Subject: [PATCH] Bump maven plugin os maven plugin to 1.7.1 + +--- + pom.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pom.xml b/pom.xml +index 1a12ff8..d9461a2 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -258,7 +258,7 @@ flexible messaging model and an intuitive client API. + 3.1.2 + 4.0.2 + 3.4.3 +- 1.4.1.Final ++ 1.7.1 + 0.8.7 + 4.2.2 + 4.2.2 +-- +2.47.0 + diff --git a/0007-keep-gen-grpc-java-version.patch b/0007-keep-gen-grpc-java-version.patch new file mode 100644 index 0000000000000000000000000000000000000000..4111b6c3aa1478adf6c062cc22db0c28313b977c --- /dev/null +++ b/0007-keep-gen-grpc-java-version.patch @@ -0,0 +1,39 @@ +From ad1e0d0e08c98f9472a20a215a99a458f02edbfc Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu <274620705z@gmail.com> +Date: Wed, 16 Oct 2024 22:58:39 +0800 +Subject: [PATCH] keep gen-grpc-java version + +--- + pulsar-client/pom.xml | 2 +- + pulsar-functions/proto/pom.xml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pulsar-client/pom.xml b/pulsar-client/pom.xml +index 9b19613..9b480df 100644 +--- a/pulsar-client/pom.xml ++++ b/pulsar-client/pom.xml +@@ -240,7 +240,7 @@ + com.google.protobuf:protoc:${protoc3.version}:exe:${os.detected.classifier} + true + grpc-java +- io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier} ++ io.grpc:protoc-gen-grpc-java:1.45.1:exe:${os.detected.classifier} + + + +diff --git a/pulsar-functions/proto/pom.xml b/pulsar-functions/proto/pom.xml +index aeeb39a..2021657 100644 +--- a/pulsar-functions/proto/pom.xml ++++ b/pulsar-functions/proto/pom.xml +@@ -78,7 +78,7 @@ + com.google.protobuf:protoc:${protoc3.version}:exe:${os.detected.classifier} + true + grpc-java +- io.grpc:protoc-gen-grpc-java:${protoc-gen-grpc-java.version}:exe:${os.detected.classifier} ++ io.grpc:protoc-gen-grpc-java:1.45.1:exe:${os.detected.classifier} + + + +-- +2.47.0 + 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..189556cead0159f8678cac786e6bd2ed16da0469 --- /dev/null +++ b/1000-Added-support-for-building-the-riscv64-protoc-binari.patch @@ -0,0 +1,60 @@ +From 6e8e3fee1d6534e38652955a22350d4d0e2836f1 Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu <274620705z@gmail.com> +Date: Wed, 16 Oct 2024 14:46:55 +0800 +Subject: [PATCH] Added support for building the riscv64 protoc binaries with + Kokoro + +--- + kokoro/release/protoc/linux/build.sh | 3 +++ + protoc-artifacts/build-protoc.sh | 7 +++++++ + 2 files changed, 10 insertions(+) + +diff --git a/kokoro/release/protoc/linux/build.sh b/kokoro/release/protoc/linux/build.sh +index 44a95aa..13be7b2 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 4602842..20ca057 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.47.0 + diff --git a/1001-Added-support-for-building-the-riscv64-protoc-gen-gr.patch b/1001-Added-support-for-building-the-riscv64-protoc-gen-gr.patch new file mode 100644 index 0000000000000000000000000000000000000000..65e37890919aa31b34f325906fd89f0864da0698 --- /dev/null +++ b/1001-Added-support-for-building-the-riscv64-protoc-gen-gr.patch @@ -0,0 +1,185 @@ +From 007e1f61718b7affa4cddfe699591c9f4fdc340e Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu <274620705z@gmail.com> +Date: Wed, 16 Oct 2024 14:34:43 +0800 +Subject: [PATCH] Added support for building the riscv64 protoc-gen-grpc-java + binaries with Kokoro + +--- + build.gradle | 2 ++ + buildscripts/kokoro/linux_artifacts.sh | 4 ++++ + buildscripts/kokoro/unix.sh | 6 ++++-- + buildscripts/kokoro/upload_artifacts.sh | 3 +++ + buildscripts/make_dependencies.sh | 6 ++++-- + compiler/build.gradle | 3 +++ + compiler/check-artifact.sh | 6 ++++++ + settings.gradle | 2 +- + 8 files changed, 27 insertions(+), 5 deletions(-) + +diff --git a/build.gradle b/build.gradle +index 992a6cc..1e19fec 100644 +--- a/build.gradle ++++ b/build.gradle +@@ -22,6 +22,8 @@ subprojects { + version = "1.45.1" // CURRENT_GRPC_VERSION + + repositories { ++ maven { url 'file://@HOME@/.m2/repository'} ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/"} + maven { // The google mirror is less flaky than mavenCentral() + url "https://maven-central.storage-download.googleapis.com/maven2/" } + mavenCentral() +diff --git a/buildscripts/kokoro/linux_artifacts.sh b/buildscripts/kokoro/linux_artifacts.sh +index e23b2bc..168e706 100755 +--- a/buildscripts/kokoro/linux_artifacts.sh ++++ b/buildscripts/kokoro/linux_artifacts.sh +@@ -49,3 +49,7 @@ cp -r "$LOCAL_MVN_TEMP"/* "$MVN_ARTIFACT_DIR"/ + # for aarch64 platform + sudo apt-get install -y g++-aarch64-linux-gnu + SKIP_TESTS=true ARCH=aarch_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh ++ ++# for riscv64 platform ++sudo apt-get install -y g++-riscv64-linux-gnu ++SKIP_TESTS=true ARCH=riscv64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh +diff --git a/buildscripts/kokoro/unix.sh b/buildscripts/kokoro/unix.sh +index 91ee67f..0de695d 100755 +--- a/buildscripts/kokoro/unix.sh ++++ b/buildscripts/kokoro/unix.sh +@@ -9,6 +9,8 @@ + # ARCH=x86_32 ./buildscripts/kokoro/unix.sh + # For aarch64 arch: + # ARCH=aarch_64 ./buildscripts/kokoro/unix.sh ++# For riscv64 arch: ++# ARCH=riscv64 ./buildscripts/kokoro/unix.sh + + # This script assumes `set -e`. Removing it may lead to undefined behavior. + set -exu -o pipefail +@@ -36,7 +38,7 @@ GRADLE_FLAGS+=" -Pcheckstyle.ignoreFailures=false" + GRADLE_FLAGS+=" -PfailOnWarnings=true" + GRADLE_FLAGS+=" -PerrorProne=true" + GRADLE_FLAGS+=" -PskipAndroid=true" +-GRADLE_FLAGS+=" -Dorg.gradle.parallel=true" ++GRADLE_FLAGS+=" -Dorg.gradle.parallel=false" + export GRADLE_OPTS="-Xmx512m" + + # Make protobuf discoverable by :grpc-compiler +@@ -86,7 +88,7 @@ fi + LOCAL_MVN_TEMP=$(mktemp -d) + # Note that this disables parallel=true from GRADLE_FLAGS + if [[ -z "${ALL_ARTIFACTS:-}" ]]; then +- if [[ $ARCH == "aarch_64" ]]; then ++ if [[ $ARCH == "aarch_64" || $ARCH == "riscv64" ]]; then + GRADLE_FLAGS+=" -x grpc-compiler:generateTestProto -x grpc-compiler:generateTestLiteProto" + GRADLE_FLAGS+=" -x grpc-compiler:testGolden -x grpc-compiler:testLiteGolden" + GRADLE_FLAGS+=" -x grpc-compiler:testDeprecatedGolden -x grpc-compiler:testDeprecatedLiteGolden" +diff --git a/buildscripts/kokoro/upload_artifacts.sh b/buildscripts/kokoro/upload_artifacts.sh +index 06d0378..65f7cc1 100644 +--- a/buildscripts/kokoro/upload_artifacts.sh ++++ b/buildscripts/kokoro/upload_artifacts.sh +@@ -34,6 +34,9 @@ LOCAL_OTHER_ARTIFACTS="$KOKORO_GFILE_DIR"/github/grpc-java/artifacts/ + # for linux aarch64 platform + [[ "$(find "$LOCAL_MVN_ARTIFACTS" -type f -iname 'protoc-gen-grpc-java-*-linux-aarch_64.exe' | wc -l)" != '0' ]] + ++# for linux riscv64 platform ++[[ "$(find "$LOCAL_MVN_ARTIFACTS" -type f -iname 'protoc-gen-grpc-java-*-linux-riscv64.exe' | wc -l)" != '0' ]] ++ + # from macos job: + [[ "$(find "$LOCAL_MVN_ARTIFACTS" -type f -iname 'protoc-gen-grpc-java-*-osx-x86_64.exe' | wc -l)" != '0' ]] + # copy all x86 artifacts to aarch until native artifacts are built +diff --git a/buildscripts/make_dependencies.sh b/buildscripts/make_dependencies.sh +index 5e7561c..14668d0 100755 +--- a/buildscripts/make_dependencies.sh ++++ b/buildscripts/make_dependencies.sh +@@ -7,8 +7,8 @@ PROTOBUF_VERSION=3.19.2 + + # ARCH is x86_64 bit unless otherwise specified. + ARCH="${ARCH:-x86_64}" +-DOWNLOAD_DIR=/tmp/source +-INSTALL_DIR="/tmp/protobuf-cache/$PROTOBUF_VERSION/$(uname -s)-$ARCH" ++DOWNLOAD_DIR=/var/tmp/source ++INSTALL_DIR="/var/tmp/protobuf-cache/$PROTOBUF_VERSION/$(uname -s)-$ARCH" + mkdir -p $DOWNLOAD_DIR + + # Start with a sane default +@@ -36,6 +36,8 @@ else + --prefix="$INSTALL_DIR" + elif [[ "$ARCH" == aarch* ]]; then + ./configure --disable-shared --host=aarch64-linux-gnu --prefix="$INSTALL_DIR" ++ elif [[ "$ARCH" == riscv* ]]; then ++ ./configure --disable-shared --host=riscv64-linux-gnu --prefix="$INSTALL_DIR" + fi + # the same source dir is used for 32 and 64 bit builds, so we need to clean stale data first + make clean +diff --git a/compiler/build.gradle b/compiler/build.gradle +index 0b57665..3d99542 100644 +--- a/compiler/build.gradle ++++ b/compiler/build.gradle +@@ -55,6 +55,7 @@ model { + cppCompiler.executable = 'aarch64-linux-gnu-g++' + linker.executable = 'aarch64-linux-gnu-g++' + } ++ target("riscv64") + target("s390_64") + } + clang(Clang) { +@@ -66,6 +67,7 @@ model { + x86_64 { architecture "x86_64" } + ppcle_64 { architecture "ppcle_64" } + aarch_64 { architecture "aarch_64" } ++ riscv64 { architecture "riscv64" } + s390_64 { architecture "s390_64" } + } + +@@ -76,6 +78,7 @@ model { + 'x86_64', + 'ppcle_64', + 'aarch_64', ++ 'riscv64', + 's390_64' + ]) { + // If arch is not within the defined platforms, we do not specify the +diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh +index 13ae89c..e48ec22 100755 +--- a/compiler/check-artifact.sh ++++ b/compiler/check-artifact.sh +@@ -55,12 +55,15 @@ checkArch () + format="$(objdump -f "$1" | grep -o "file format .*$" | grep -o "[^ ]*$")" + echo Format=$format + if [[ "$OS" == linux ]]; then ++ host_machine="$(uname -m)"; + if [[ "$ARCH" == x86_32 ]]; then + assertEq "$format" "elf32-i386" $LINENO + elif [[ "$ARCH" == x86_64 ]]; then + 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 + else + fail "Unsupported arch: $ARCH" + fi +@@ -108,6 +111,9 @@ checkDependencies () + elif [[ "$ARCH" == aarch_64 ]]; then + dump_cmd='aarch64-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' + white_list="linux-vdso\.so\.1\|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="libm\.so\.6\|libc\.so\.6\|ld-linux-riscv64-lp64d\.so\.1" + fi + elif [[ "$OS" == osx ]]; then + dump_cmd='otool -L '"$1"' | fgrep dylib' +diff --git a/settings.gradle b/settings.gradle +index 8612f3c..4b565f0 100644 +--- a/settings.gradle ++++ b/settings.gradle +@@ -4,7 +4,7 @@ pluginManagement { + id "com.android.library" version "4.2.0" + id "com.github.johnrengelman.shadow" version "7.1.2" + id "com.github.kt3k.coveralls" version "2.12.0" +- id "com.google.osdetector" version "1.7.0" ++ id "com.google.osdetector" version "1.7.2" + id "com.google.protobuf" version "0.8.18" + id "digital.wup.android-maven-publish" version "3.6.3" + id "me.champeau.gradle.japicmp" version "0.3.0" +-- +2.47.0 + diff --git a/1002-Add-Huawei-Maven-repository.patch b/1002-Add-Huawei-Maven-repository.patch new file mode 100644 index 0000000000000000000000000000000000000000..4f052910b7bccbdd1a01cb40424b91f4de3a46a3 --- /dev/null +++ b/1002-Add-Huawei-Maven-repository.patch @@ -0,0 +1,83 @@ +From 797fc4515e2c3ea458eaf9280c7ea0ff68cf241e Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu <274620705z@gmail.com> +Date: Wed, 16 Oct 2024 16:53:16 +0800 +Subject: [PATCH] Add Huawei Maven repository + +--- + binder/build.gradle | 1 + + cronet/build.gradle | 1 + + examples/settings.gradle | 1 + + gae-interop-testing/gae-jdk8/build.gradle | 2 ++ + settings.gradle | 1 + + 5 files changed, 6 insertions(+) + +diff --git a/binder/build.gradle b/binder/build.gradle +index dc3da4c..467d743 100644 +--- a/binder/build.gradle ++++ b/binder/build.gradle +@@ -40,6 +40,7 @@ android { + } + + repositories { ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + google() + mavenCentral() + } +diff --git a/cronet/build.gradle b/cronet/build.gradle +index d66eaf3..5efa29b 100644 +--- a/cronet/build.gradle ++++ b/cronet/build.gradle +@@ -8,6 +8,7 @@ plugins { + description = "gRPC: Cronet Android" + + repositories { ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + google() + mavenCentral() + } +diff --git a/examples/settings.gradle b/examples/settings.gradle +index 0473750..427f822 100644 +--- a/examples/settings.gradle ++++ b/examples/settings.gradle +@@ -1,5 +1,6 @@ + pluginManagement { + repositories { ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + maven { // The google mirror is less flaky than mavenCentral() + url "https://maven-central.storage-download.googleapis.com/maven2/" + } +diff --git a/gae-interop-testing/gae-jdk8/build.gradle b/gae-interop-testing/gae-jdk8/build.gradle +index 325e465..4d8f26a 100644 +--- a/gae-interop-testing/gae-jdk8/build.gradle ++++ b/gae-interop-testing/gae-jdk8/build.gradle +@@ -15,6 +15,7 @@ + buildscript { + // Configuration for building + repositories { ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + maven { // The google mirror is less flaky than mavenCentral() + url "https://maven-central.storage-download.googleapis.com/maven2/" } + } +@@ -34,6 +35,7 @@ description = 'gRPC: gae interop testing (jdk8)' + repositories { + // repositories for Jar's you access in your code + mavenLocal() ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + maven { // The google mirror is less flaky than mavenCentral() + url "https://maven-central.storage-download.googleapis.com/maven2/" } + } +diff --git a/settings.gradle b/settings.gradle +index 8612f3c..3e98d0f 100644 +--- a/settings.gradle ++++ b/settings.gradle +@@ -20,6 +20,7 @@ pluginManagement { + } + } + repositories { ++ maven { url "https://mirrors.huaweicloud.com/repository/maven/" } + gradlePluginPortal() + google() + } +-- +2.47.0 + diff --git a/1003-Added-support-for-building-the-riscv64-protoc-binari.patch b/1003-Added-support-for-building-the-riscv64-protoc-binari.patch new file mode 100644 index 0000000000000000000000000000000000000000..d14f6ca336070393e6afce77d325c7254ff12118 --- /dev/null +++ b/1003-Added-support-for-building-the-riscv64-protoc-binari.patch @@ -0,0 +1,60 @@ +From 78ca33b7b7424fb7b80dbcbf3034cd266a8bee66 Mon Sep 17 00:00:00 2001 +From: IZUMI-Zu <274620705z@gmail.com> +Date: Wed, 16 Oct 2024 14:50:28 +0800 +Subject: [PATCH] Added support for building the riscv64 protoc binaries with + Kokoro + +--- + kokoro/release/protoc/linux/build.sh | 3 +++ + protoc-artifacts/build-protoc.sh | 7 +++++++ + 2 files changed, 10 insertions(+) + +diff --git a/kokoro/release/protoc/linux/build.sh b/kokoro/release/protoc/linux/build.sh +index 44a95aa..13be7b2 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 4602842..20ca057 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.47.0 + diff --git a/gradle-7.3.3-bin.zip b/gradle-7.3.3-bin.zip new file mode 100644 index 0000000000000000000000000000000000000000..87706cf981bd0c523181ab25265d455e8261e254 Binary files /dev/null and b/gradle-7.3.3-bin.zip differ diff --git a/protobuf-all-3.19.2.tar.gz b/protobuf-all-3.19.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..486b207492c8d72a51cbf8a5dcf768f1409aea1f Binary files /dev/null and b/protobuf-all-3.19.2.tar.gz differ diff --git a/pulsar.spec b/pulsar.spec index 28e42a943952c5eea7164b5975338b63a9ad0259..10794cecfd54329920c8d768512752189cfbff8f 100644 --- a/pulsar.spec +++ b/pulsar.spec @@ -1,6 +1,6 @@ %define debug_package %{nil} %define pulsar_ver 2.10.6 -%define pkg_ver 1 +%define pkg_ver 2 %define _prefix /opt/pulsar Summary: Cloud-Native, Distributed Messaging and Streaming Name: pulsar @@ -10,14 +10,35 @@ License: Apache-2.0 Group: Applications/Message URL: https://pulsar.apache.org Source0: https://archive.apache.org/dist/pulsar/pulsar-2.10.6/apache-pulsar-2.10.6-src.tar.gz +Source1: https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.19.6.tar.gz +Source2: https://github.com/grpc/grpc-java/archive/refs/tags/v1.45.1.tar.gz +Source3: https://services.gradle.org/distributions/gradle-7.3.3-bin.zip +Source4: https://github.com/google/protobuf/releases/download/v3.19.2/protobuf-all-3.19.2.tar.gz +Source5: https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.19.2.tar.gz + Patch0001: 0001-use-huawei-repository.patch Patch0002: 0002-CVE-2022-22970.patch Patch0003: 0003-CVE-2023-25194.patch Patch0004: 0004-CVE-2023-2976.patch Patch0005: 0005-CVE-2023-32732.patch + +%ifarch riscv64 +Patch0006: 0006-Bump-maven-plugin-os-maven-plugin.patch +Patch0007: 0007-keep-gen-grpc-java-version.patch +Patch1000: 1000-Added-support-for-building-the-riscv64-protoc-binari.patch +Patch1001: 1001-Added-support-for-building-the-riscv64-protoc-gen-gr.patch +Patch1002: 1002-Add-Huawei-Maven-repository.patch +patch1003: 1003-Added-support-for-building-the-riscv64-protoc-binari.patch +%endif + BuildRoot: /root/rpmbuild/BUILDROOT/ BuildRequires: java-1.8.0-openjdk-devel,maven,systemd Requires: java-1.8.0-openjdk,systemd + +%ifarch riscv64 +BuildRequires: autoconf automake libtool pkgconfig zlib-devel libstdc++-static +%endif + Provides: apache-pulsar Provides: mvn(org.apche.pulsar:pulsar) @@ -25,16 +46,60 @@ Provides: mvn(org.apche.pulsar:pulsar) Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API. %prep -%setup -q -n apache-pulsar-%{version}-src +%ifarch riscv64 +mkdir -p ${HOME}/%{name}-prep_dir +# protoc +tar -mxf %{SOURCE1} -C ${HOME}/%{name}-prep_dir +pushd ${HOME}/%{name}-prep_dir/protobuf-3.19.6 +%patch1000 -p1 +./autogen.sh +./protoc-artifacts/build-protoc.sh linux riscv64 protoc +mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.19.6 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=protoc-artifacts/target/linux/riscv64/protoc.exe +popd +# prepare gradle and protobuf for build protoc-gen-grpc-java +mkdir -p %{_tmppath}/source +cp %{SOURCE3} %{_tmppath}/source +tar xzf %{SOURCE4} -C %{_tmppath}/source +tar -mxf %{SOURCE5} -C ${HOME}/%{name}-prep_dir +pushd ${HOME}/%{name}-prep_dir/protobuf-3.19.2 +%patch1003 -p1 +./autogen.sh +./protoc-artifacts/build-protoc.sh linux riscv64 protoc +mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.19.2 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=protoc-artifacts/target/linux/riscv64/protoc.exe +popd + +# protoc-gen-grpc-java +tar -mxf %{SOURCE2} -C ${HOME}/%{name}-prep_dir +pushd ${HOME}/%{name}-prep_dir/grpc-java-1.45.1 +%patch1001 -p1 +%patch1002 -p1 +sed -i "s,@HOME@,${HOME},g" build.gradle +sed -i 's|https\\://services.gradle.org/distributions|file://%{_tmppath}/source|g' gradle/wrapper/gradle-wrapper.properties +SKIP_TESTS=true ARCH=riscv64 ./buildscripts/kokoro/unix.sh +mvn install:install-file -DgroupId=io.grpc -DartifactId=protoc-gen-grpc-java -Dversion=1.45.1 -Dclassifier=linux-riscv64 -Dpackaging=exe -Dfile=mvn-artifacts/io/grpc/protoc-gen-grpc-java/1.45.1/protoc-gen-grpc-java-1.45.1-linux-riscv64.exe +popd +%endif + +%setup -q -n apache-pulsar-%{version}-src %patch0001 -p1 %patch0002 -p1 %patch0003 -p1 %patch0004 -p1 %patch0005 -p1 +%ifarch riscv64 +%patch0006 -p1 +%patch0007 -p1 +%endif + %build +%ifarch riscv64 +export MAVEN_OPTS="-Xms2048M -Xmx8000M" +mvn clean install -Pcore-modules,-main -DskipTests -Dspotbugs.timeout=7200000 +%else mvn clean install -Pcore-modules,-main -DskipTests +%endif %install mkdir -p $RPM_BUILD_ROOT%{_prefix}/{lib,bin,conf,examples,instances,licenses} @@ -57,6 +122,9 @@ getent passwd pulsar >/dev/null || useradd -r -g pulsar -d / -s /sbin/nologin pu exit 0 %changelog +* Mon Oct 14 2024 binshuo - 2.10.6-2 +- Add support for riscv64 build + * Sun Apr 28 2024 dongjiao - 2.10.6-1 - update to 2.10.6 diff --git a/v1.45.1.tar.gz b/v1.45.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d794de04b3b938db31aa38a33448098c7e8535f Binary files /dev/null and b/v1.45.1.tar.gz differ diff --git a/v3.19.2.tar.gz b/v3.19.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..432fca4584ff9666bf55d085130f6cbe6d49291e Binary files /dev/null and b/v3.19.2.tar.gz differ diff --git a/v3.19.6.tar.gz b/v3.19.6.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ed632b2bd5e471942e19a14afcafe693f0e5907 Binary files /dev/null and b/v3.19.6.tar.gz differ