From 9cc19146e63edbf1aeeedbeb4105bb63971be8c7 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Fri, 17 Jun 2022 07:27:26 +0530 Subject: [PATCH 01/13] Added ppc64le support ..on the lines of https://github.com/grpc/grpc-java/pull/6441 --- buildscripts/kokoro/linux_artifacts.sh | 4 ++++ buildscripts/kokoro/unix.sh | 4 ++++ buildscripts/kokoro/upload_artifacts.sh | 3 +++ buildscripts/make_dependencies.sh | 2 ++ compiler/build.gradle | 5 ++++- compiler/check-artifact.sh | 4 ++++ 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/buildscripts/kokoro/linux_artifacts.sh b/buildscripts/kokoro/linux_artifacts.sh index e23b2bcc628..44b9ed911be 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 ppc64le platform +sudo apt-get install -y g++-10-powerpc64-linux-gnu +SKIP_TESTS=true ARCH=ppcle_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh \ No newline at end of file diff --git a/buildscripts/kokoro/unix.sh b/buildscripts/kokoro/unix.sh index 91ee67f1d98..ba5bfec4773 100755 --- a/buildscripts/kokoro/unix.sh +++ b/buildscripts/kokoro/unix.sh @@ -90,6 +90,10 @@ if [[ -z "${ALL_ARTIFACTS:-}" ]]; 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" + elif [[ $ARCH == "ppcle_64" ]]; 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" fi ./gradlew grpc-compiler:build grpc-compiler:publish $GRADLE_FLAGS \ -Dorg.gradle.parallel=false -PrepositoryDir=$LOCAL_MVN_TEMP diff --git a/buildscripts/kokoro/upload_artifacts.sh b/buildscripts/kokoro/upload_artifacts.sh index 06d037831ec..ade37ee89bb 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 ppc64le platform +[[ "$(find "$LOCAL_MVN_ARTIFACTS" -type f -iname 'protoc-gen-grpc-java-*-linux-ppcle_64.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 5e7561c4313..acd243f2a72 100755 --- a/buildscripts/make_dependencies.sh +++ b/buildscripts/make_dependencies.sh @@ -36,6 +36,8 @@ else --prefix="$INSTALL_DIR" elif [[ "$ARCH" == aarch* ]]; then ./configure --disable-shared --host=aarch64-linux-gnu --prefix="$INSTALL_DIR" + elif [[ "$ARCH" == ppc* ]]; then + ./configure --disable-shared --host=ppc64le-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 1ff8aed2179..c1563453065 100644 --- a/compiler/build.gradle +++ b/compiler/build.gradle @@ -50,7 +50,10 @@ model { } } gcc(Gcc) { - target("ppcle_64") + target("ppcle_64") { + cppCompiler.executable = 'powerpc64-linux-gnu-g++-10' + linker.executable = 'powerpc64-linux-gnu-g++-10' + } target("aarch_64") { cppCompiler.executable = 'aarch64-linux-gnu-g++' linker.executable = 'aarch64-linux-gnu-g++' diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index 13ae89c744a..67f6ec5f106 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -61,6 +61,8 @@ checkArch () assertEq "$format" "elf64-x86-64" $LINENO elif [[ "$ARCH" == aarch_64 ]]; then assertEq "$format" "elf64-little" $LINENO + elif [[ "$ARCH" == ppcle_64 ]]; then + assertEq "$format" "elf64-powerpcle" $LINENO else fail "Unsupported arch: $ARCH" fi @@ -108,6 +110,8 @@ 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" == ppcle_64 ]]; then + white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2\|libstdc++\.so\.6\|libgcc_s\.so\.1" fi elif [[ "$OS" == osx ]]; then dump_cmd='otool -L '"$1"' | fgrep dylib' From 36fece5e55b3e0358794ee0c08e6c429bd02cb1e Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Tue, 21 Jun 2022 21:45:32 +0530 Subject: [PATCH 02/13] Update unix.sh Remove code duplication --- buildscripts/kokoro/unix.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/buildscripts/kokoro/unix.sh b/buildscripts/kokoro/unix.sh index ba5bfec4773..67e395749f8 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 ppc64le arch: +# ARCH=ppcle_64 ./buildscripts/kokoro/unix.sh # This script assumes `set -e`. Removing it may lead to undefined behavior. set -exu -o pipefail @@ -86,11 +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 - 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" - elif [[ $ARCH == "ppcle_64" ]]; then + if [ "$ARCH" = "aarch_64" ] || [ "$ARCH" = "ppcle_64" ]; 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" From dd0ac7efd770478094106238f4220ba92c814dfb Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Tue, 21 Jun 2022 21:50:16 +0530 Subject: [PATCH 03/13] Remove libstdc++, libgcc_s from ppcle_64 white_list --- compiler/check-artifact.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index 67f6ec5f106..735c6400207 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -111,7 +111,7 @@ checkDependencies () 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" == ppcle_64 ]]; then - white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2\|libstdc++\.so\.6\|libgcc_s\.so\.1" + white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2" fi elif [[ "$OS" == osx ]]; then dump_cmd='otool -L '"$1"' | fgrep dylib' From 84e91f98cc6bbab33ec333cd70b3677ac3df9c24 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Tue, 21 Jun 2022 21:55:32 +0530 Subject: [PATCH 04/13] Add dump_cmd for ppc64le --- compiler/check-artifact.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index 735c6400207..60fcf744029 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -111,6 +111,7 @@ checkDependencies () 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" == ppcle_64 ]]; then + dump_cmd='ppc64le-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2" fi elif [[ "$OS" == osx ]]; then From 81a120fffd85a528b377577f391f3a461c8f02c8 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 05:16:53 +0530 Subject: [PATCH 05/13] Fix dump_cmd to powerpc64-linux-gnu-objdump --- compiler/check-artifact.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index 60fcf744029..22ef7647985 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -111,7 +111,7 @@ checkDependencies () 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" == ppcle_64 ]]; then - dump_cmd='ppc64le-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' + dump_cmd='powerpc64-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2" fi elif [[ "$OS" == osx ]]; then From 2d9c4f17aa10d2895a526cf3dc15ad3d99fae16b Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 05:25:11 +0530 Subject: [PATCH 06/13] Fix package name to g++-powerpc64-linux-gnu --- buildscripts/kokoro/linux_artifacts.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildscripts/kokoro/linux_artifacts.sh b/buildscripts/kokoro/linux_artifacts.sh index 44b9ed911be..cc5a3bc246f 100755 --- a/buildscripts/kokoro/linux_artifacts.sh +++ b/buildscripts/kokoro/linux_artifacts.sh @@ -51,5 +51,5 @@ sudo apt-get install -y g++-aarch64-linux-gnu SKIP_TESTS=true ARCH=aarch_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh # for ppc64le platform -sudo apt-get install -y g++-10-powerpc64-linux-gnu -SKIP_TESTS=true ARCH=ppcle_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh \ No newline at end of file +sudo apt-get install -y g++-powerpc64-linux-gnu +SKIP_TESTS=true ARCH=ppcle_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh From 9f8452846e504b656f390649956f002d00de569e Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 05:27:00 +0530 Subject: [PATCH 07/13] Fix ppcle_64 compiler and linker exe --- compiler/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/build.gradle b/compiler/build.gradle index c1563453065..55467d381ef 100644 --- a/compiler/build.gradle +++ b/compiler/build.gradle @@ -51,8 +51,8 @@ model { } gcc(Gcc) { target("ppcle_64") { - cppCompiler.executable = 'powerpc64-linux-gnu-g++-10' - linker.executable = 'powerpc64-linux-gnu-g++-10' + cppCompiler.executable = 'powerpc64-linux-gnu-g++' + linker.executable = 'powerpc64-linux-gnu-g++' } target("aarch_64") { cppCompiler.executable = 'aarch64-linux-gnu-g++' From 4731487a2799a86782f317c55329191c711ee488 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 06:41:06 +0530 Subject: [PATCH 08/13] Switch to powerpc64le-linux-gnu-g++ --- compiler/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/build.gradle b/compiler/build.gradle index 55467d381ef..1f2c66f4d15 100644 --- a/compiler/build.gradle +++ b/compiler/build.gradle @@ -51,8 +51,8 @@ model { } gcc(Gcc) { target("ppcle_64") { - cppCompiler.executable = 'powerpc64-linux-gnu-g++' - linker.executable = 'powerpc64-linux-gnu-g++' + cppCompiler.executable = 'powerpc64le-linux-gnu-g++' + linker.executable = 'powerpc64le-linux-gnu-g++' } target("aarch_64") { cppCompiler.executable = 'aarch64-linux-gnu-g++' From bd78360d6e2ffa3abd2574da2682eb8cf78bb13c Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 06:41:59 +0530 Subject: [PATCH 09/13] Switch to powerpc64le-linux-gnu-objdump --- compiler/check-artifact.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index 22ef7647985..bdce460dff6 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -111,7 +111,7 @@ checkDependencies () 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" == ppcle_64 ]]; then - dump_cmd='powerpc64-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' + dump_cmd='powerpc64le-linux-gnu-objdump -x '"$1"' |grep "NEEDED"' white_list="linux-vdso64\.so\.1\|libpthread\.so\.0\|libm\.so\.6\|libc\.so\.6\|ld64\.so\.2" fi elif [[ "$OS" == osx ]]; then From 8fbad7656f39f60b245a6b47d02c11266cb7eaec Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 06:42:32 +0530 Subject: [PATCH 10/13] Switch to g++-powerpc64le-linux-gnu --- buildscripts/kokoro/linux_artifacts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildscripts/kokoro/linux_artifacts.sh b/buildscripts/kokoro/linux_artifacts.sh index cc5a3bc246f..619917bdceb 100755 --- a/buildscripts/kokoro/linux_artifacts.sh +++ b/buildscripts/kokoro/linux_artifacts.sh @@ -51,5 +51,5 @@ sudo apt-get install -y g++-aarch64-linux-gnu SKIP_TESTS=true ARCH=aarch_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh # for ppc64le platform -sudo apt-get install -y g++-powerpc64-linux-gnu +sudo apt-get install -y g++-powerpc64le-linux-gnu SKIP_TESTS=true ARCH=ppcle_64 "$GRPC_JAVA_DIR"/buildscripts/kokoro/unix.sh From fb9c1b979552502a77800ffb36d94cfb28803aa9 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Wed, 22 Jun 2022 21:17:42 +0530 Subject: [PATCH 11/13] Set --host=powerpc64le-linux-gnu --- buildscripts/make_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildscripts/make_dependencies.sh b/buildscripts/make_dependencies.sh index acd243f2a72..dbc4ad8bb73 100755 --- a/buildscripts/make_dependencies.sh +++ b/buildscripts/make_dependencies.sh @@ -37,7 +37,7 @@ else elif [[ "$ARCH" == aarch* ]]; then ./configure --disable-shared --host=aarch64-linux-gnu --prefix="$INSTALL_DIR" elif [[ "$ARCH" == ppc* ]]; then - ./configure --disable-shared --host=ppc64le-linux-gnu --prefix="$INSTALL_DIR" + ./configure --disable-shared --host=powerpc64le-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 From 07068ac381e823df9912c7b503ea0996bff35b93 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Thu, 23 Jun 2022 05:10:47 +0530 Subject: [PATCH 12/13] Use powerpc64le-linux-gnu-objdump for ppcle_64 exe --- compiler/check-artifact.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/check-artifact.sh b/compiler/check-artifact.sh index bdce460dff6..0baf9d74f3c 100755 --- a/compiler/check-artifact.sh +++ b/compiler/check-artifact.sh @@ -62,6 +62,8 @@ checkArch () elif [[ "$ARCH" == aarch_64 ]]; then assertEq "$format" "elf64-little" $LINENO elif [[ "$ARCH" == ppcle_64 ]]; then + format="$(powerpc64le-linux-gnu-objdump -f "$1" | grep -o "file format .*$" | grep -o "[^ ]*$")" + echo Format=$format assertEq "$format" "elf64-powerpcle" $LINENO else fail "Unsupported arch: $ARCH" From 215009021c96a3dcb544d009d35471e143f03fb7 Mon Sep 17 00:00:00 2001 From: sumitd2 <91451282+sumitd2@users.noreply.github.com> Date: Thu, 23 Jun 2022 21:22:42 +0530 Subject: [PATCH 13/13] Slight modification to the if statement --- buildscripts/kokoro/unix.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildscripts/kokoro/unix.sh b/buildscripts/kokoro/unix.sh index 67e395749f8..a0c256ac3dd 100755 --- a/buildscripts/kokoro/unix.sh +++ b/buildscripts/kokoro/unix.sh @@ -88,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" ] || [ "$ARCH" = "ppcle_64" ]; then + if [[ "$ARCH" = "aarch_64" || "$ARCH" = "ppcle_64" ]]; 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"