You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by gu...@apache.org on 2022/12/19 02:08:21 UTC

[bigtop] branch master updated: BIGTOP-3893: Fix Hadoop3.3.4 build issues on ppc64le (#1077)

This is an automated email from the ASF dual-hosted git repository.

guyuqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bigtop.git


The following commit(s) were added to refs/heads/master by this push:
     new d590ea671 BIGTOP-3893: Fix Hadoop3.3.4 build issues on ppc64le (#1077)
d590ea671 is described below

commit d590ea671237297514864dbe1c8f32baa26255bd
Author: Yuqi Gu <yu...@arm.com>
AuthorDate: Mon Dec 19 10:08:16 2022 +0800

    BIGTOP-3893: Fix Hadoop3.3.4 build issues on ppc64le (#1077)
---
 .../src/common/hadoop/do-component-build           |  7 +++++
 bigtop_toolchain/manifests/grpc.pp                 | 30 +++++++++++++++++++---
 bigtop_toolchain/manifests/protobuf.pp             | 14 ++++++++++
 3 files changed, 47 insertions(+), 4 deletions(-)

diff --git a/bigtop-packages/src/common/hadoop/do-component-build b/bigtop-packages/src/common/hadoop/do-component-build
index 27703d862..60ff0de96 100644
--- a/bigtop-packages/src/common/hadoop/do-component-build
+++ b/bigtop-packages/src/common/hadoop/do-component-build
@@ -39,6 +39,13 @@ if [ $HOSTTYPE = "powerpc64le" ] ; then
         #cleanup
         rm -rf ${LEVELDBJNI_HOME}
         rm -rf ${LEVELDB_HOME}
+
+        mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 \
+                -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-2.5.0/bin/protoc
+        mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.6.1 \
+                -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-3.6.1/bin/protoc
+        mvn install:install-file -DgroupId=io.grpc -DartifactId=protoc-gen-grpc-java -Dversion=1.26.0 \
+                -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/src/grpc-java-1.26.0/compiler/build/exe/java_plugin/protoc-gen-grpc-java
 fi
 ## BIGTOP-2288
 
diff --git a/bigtop_toolchain/manifests/grpc.pp b/bigtop_toolchain/manifests/grpc.pp
index 4c9e41088..acb0a41d7 100644
--- a/bigtop_toolchain/manifests/grpc.pp
+++ b/bigtop_toolchain/manifests/grpc.pp
@@ -13,35 +13,57 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# There is no pre-built binary of grpc-java for ppc64le before grpc-java-1.48.0 (2022-08-01).
+# Build some versions of grpc-java Binaries in Bigtop toolchain.
 class bigtop_toolchain::grpc {
 
   require bigtop_toolchain::jdk
   require bigtop_toolchain::protobuf
 
   $grpc_version = '1.28.0'
-  $proto_version = '3.17.3'
   $proto_home = "/usr/local/protobuf-3.17.3"
 
   if ($architecture == 'ppc64le') {
 
-  exec { "download grpc-java ${grpc_version}":
+    # grpc-java 1.28.0 + protobuf-3.17.3 for zeppelin build on ppc64le.
+    exec { "download grpc-java ${grpc_version}":
       cwd  => "/usr/src",
       command => "/usr/bin/wget https://github.com/grpc/grpc-java/archive/refs/tags/v${grpc_version}.tar.gz && mkdir -p grpc-java-${grpc_version} && /bin/tar -xvzf v${grpc_version}.tar.gz -C grpc-java-${grpc_version} --strip-components=1",
       creates => "/usr/src/grpc-java-${grpc_version}",
-  }
+    }
 
     file { "/usr/src/grpc-java-${grpc_version}/grpc-java-${grpc_version}-add-support-for-ppc64le.patch":
       source => "puppet:///modules/bigtop_toolchain/grpc-java-${grpc_version}-add-support-for-ppc64le.patch",
       require => Exec["download grpc-java ${grpc_version}"],
     }
 
-  exec { "build grpc-java ${grpc_version}":
+    exec { "build grpc-java ${grpc_version}":
       cwd => "/usr/src/grpc-java-${grpc_version}",
       command => "/usr/bin/patch -p1 < grpc-java-${grpc_version}-add-support-for-ppc64le.patch && export LDFLAGS=-L/${proto_home}/lib && export CXXFLAGS=-I/${proto_home}/include && export LD_LIBRARY_PATH=/${proto_home}/lib && cd compiler && ../gradlew java_pluginExecutable -PskipAndroid=true",
       creates => "/usr/local/grpc-java-${grpc_version}",
       require => File["/usr/src/grpc-java-${grpc_version}/grpc-java-${grpc_version}-add-support-for-ppc64le.patch"],
       timeout => 3000
     }
+
+    # grpc-java 1.26.0 + protobuf-3.6.1 for Hadoop-3.3.4 build on ppc64le.
+    exec { "download grpc-java 1.26.0":
+      cwd  => "/usr/src",
+      command => "/usr/bin/wget https://github.com/grpc/grpc-java/archive/refs/tags/v1.26.0.tar.gz && mkdir -p grpc-java-1.26.0 && /bin/tar -xvzf v1.26.0.tar.gz -C grpc-java-1.26.0 --strip-components=1",
+      creates => "/usr/src/grpc-java-1.26.0",
+    }
+
+    file { "/usr/src/grpc-java-1.26.0/grpc-java-1.26.0-add-support-for-ppc64le.patch":
+      source => "puppet:///modules/bigtop_toolchain/grpc-java-${grpc_version}-add-support-for-ppc64le.patch",
+      require => Exec["download grpc-java ${grpc_version}"],
+    }
+
+    exec { "build grpc-java 1.26.0":
+      cwd => "/usr/src/grpc-java-1.26.0",
+      command => "/usr/bin/patch -p1 < grpc-java-1.26.0-add-support-for-ppc64le.patch && export LDFLAGS=-L//usr/local/protobuf-3.6.1/lib && export CXXFLAGS=-I//usr/local/protobuf-3.6.1/include && export LD_LIBRARY_PATH=//usr/local/protobuf-3.6.1/lib && cd compiler && ../gradlew java_pluginExecutable -PskipAndroid=true",
+      creates => "/usr/local/grpc-java-1.26.0",
+      require => File["/usr/src/grpc-java-1.26.0/grpc-java-1.26.0-add-support-for-ppc64le.patch"],
+      timeout => 3000
+    }
   }
 
 }
diff --git a/bigtop_toolchain/manifests/protobuf.pp b/bigtop_toolchain/manifests/protobuf.pp
index 120cbfab7..3dedd49a7 100644
--- a/bigtop_toolchain/manifests/protobuf.pp
+++ b/bigtop_toolchain/manifests/protobuf.pp
@@ -87,6 +87,20 @@ class bigtop_toolchain::protobuf {
       require => Exec["download protobuf 3.17.3"],
       timeout => 3000
     }
+
+    exec { "download protobuf 3.6.1":
+      cwd  => "/usr/src",
+      command => "/usr/bin/wget https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.6.1.tar.gz && mkdir -p protobuf-3.6.1 && /bin/tar -xvzf v3.6.1.tar.gz -C protobuf-3.6.1 --strip-components=1",
+      creates => "/usr/src/protobuf-3.6.1",
+    }
+
+    exec { "install protobuf 3.6.1":
+      cwd => "/usr/src/protobuf-3.6.1",
+      command => "/usr/src/protobuf-3.6.1/autogen.sh && /usr/src/protobuf-3.6.1/configure --prefix=/usr/local/protobuf-3.6.1 --disable-shared --with-pic && /usr/bin/make install",
+      creates => "/usr/local/protobuf-3.6.1",
+      require => Exec["download protobuf 3.6.1"],
+      timeout => 3000
+    }
   }
 
 }