#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex

. `dirname $0`/bigtop.bom

. /etc/os-release
OS="$ID"

if [ $HOSTTYPE = "powerpc64le" ] ; then
  mvn install:install-file -DgroupId=io.grpc -DartifactId=protoc-gen-grpc-java -Dversion=1.28.0 -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/src/grpc-java-1.28.0/compiler/build/exe/java_plugin/protoc-gen-grpc-java "$@"
  # BIGTOP-3894
  # protobuf-3.19.2/3.17.3 doesn't offically support ppc64le;
  # Skip protoc backwards compatibility check here.
  sed -i -e :a -e '$!N;s/.*\n\(.*salesforce\)/\1/;ta' -e 'P;D' pom.xml
  sed -i '/com.salesforce.servicelibs/,+3d' pom.xml
  sed -i '/Proto lock for preventing/,+14d' core/transport/pom.xml

  # 'protobuf-3.17.3' was pre-installed in Bigtop toolchain for ppc64le.
  # And protoc grpc-java-1.28.0 was also built based on protobuf-3.17.3 in Bigtop toolchain.
  # So manually install 3.17.3 here to workaound the GLIBC issue on Centos-7.
  if [ "${OS}" = "centos" ]; then
    sed -i 's/3.19.6/3.17.3/g' pom.xml
    mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.17.3 \
      -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-3.17.3/bin/protoc "$@"
  fi

  sed -i "s|<nodeVersion>v10.11.0</nodeVersion>|<nodeVersion>v12.22.1</nodeVersion>|" webui/pom.xml
  sed -i "s|<npmVersion>6.4.1</npmVersion>|<npmVersion>6.14.7</npmVersion>|" webui/pom.xml
  mvn clean install -DskipTests -Dhadoop.version=${HADOOP_VERSION} -Dgrpc.version=1.28.0 -Dmaven.buildNumber.revisionOnScmFailure=v${ALLUXIO_VERSION} -Phadoop-3 -Pyarn "$@"

else
  #need to manually compile the libjnifuse*.so in openEuler and fedora.
  #The libjnifuse*.so files which alluxio need is not compiled by default, and uses the x86 ARCH version
  #so we need to compile libjnifuse*.so and copy it to the corresponding directory of alluxio
  if [ "${OS}" = "openEuler" ] || [ "${OS}" = "fedora" ]; then
    sed -i "s|<activeByDefault>false</activeByDefault>|<activeByDefault>true</activeByDefault>|g" integration/jnifuse/native/pom.xml
  fi

  mvn clean install -DskipTests -Dhadoop.version=${HADOOP_VERSION} -Dmaven.buildNumber.revisionOnScmFailure=v${ALLUXIO_VERSION} -Phadoop-3 -Pyarn "$@"

fi
