| #!/usr/bin/env 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 -o pipefail |
| set -e |
| |
| # Go to the Spark project root directory |
| FWDIR="$(cd "`dirname "$0"`"/..; pwd)" |
| cd "$FWDIR" |
| |
| SPARK_PROFILES=${1:-"-Pmesos -Pkubernetes -Pyarn -Pspark-ganglia-lgpl -Pkinesis-asl -Phive-thriftserver -Phive"} |
| # Apache Spark doesn't have Scala 2.13 maven artifacts yet. |
| # TODO(SPARK-36151) Enable MiMa for Scala 2.13 artifacts after Spark 3.2.0 release |
| if [[ "$SPARK_PROFILES" == *"-Pscala-2.13"* ]]; then |
| exit 0 |
| fi |
| TOOLS_CLASSPATH="$(build/sbt -DcopyDependencies=false "export tools/fullClasspath" | grep jar | tail -n1)" |
| OLD_DEPS_CLASSPATH="$(build/sbt -DcopyDependencies=false $SPARK_PROFILES "export oldDeps/fullClasspath" | grep jar | tail -n1)" |
| |
| rm -f .generated-mima* |
| |
| if [[ -x "$JAVA_HOME/bin/java" ]]; then |
| JAVA_CMD="$JAVA_HOME/bin/java" |
| else |
| JAVA_CMD=java |
| fi |
| |
| $JAVA_CMD \ |
| -Xmx2g \ |
| -cp "$TOOLS_CLASSPATH:$OLD_DEPS_CLASSPATH" \ |
| org.apache.spark.tools.GenerateMIMAIgnore |
| |
| echo -e "q\n" | build/sbt -mem 4096 -DcopyDependencies=false "$@" mimaReportBinaryIssues | grep -v -e "info.*Resolving" |
| ret_val=$? |
| |
| if [ $ret_val != 0 ]; then |
| echo "NOTE: Exceptions to binary compatibility can be added in project/MimaExcludes.scala" |
| fi |
| |
| rm -f .generated-mima* |
| exit $ret_val |