kyuubi/build/dist
Cheng Pan 562c45865f
[KYUUBI #398][FOLLOWUP] exclude unused jars
![pan3793](https://badgen.net/badge/Hello/pan3793/green) [![Closes #401](https://badgen.net/badge/Preview/Closes%20%23401/blue)](https://github.com/yaooqinn/kyuubi/pull/401) ![47](https://badgen.net/badge/%2B/47/red) ![155](https://badgen.net/badge/-/155/green) ![3](https://badgen.net/badge/commits/3/yellow) [&#10088;?&#10089;](https://pullrequestbadge.com/?utm_medium=github&utm_source=yaooqinn&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->

<!--
Thanks for sending a pull request!

Here are some tips for you:
  1. If this is your first time, please read our contributor guidelines: https://kyuubi.readthedocs.io/en/latest/community/contributions.html
  2. If the PR is related to an issue in https://github.com/yaooqinn/kyuubi/issues, add '[KYUUBI #XXXX]' in your PR title, e.g., '[KYUUBI #XXXX] Your PR title ...'.
  3. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP][KYUUBI #XXXX] Your PR title ...'.
-->

### _Why are the changes needed?_
<!--
Please clarify why the changes are needed. For instance,
  1. If you add a feature, you can talk about the use case of it.
  2. If you fix a bug, you can clarify why it is a bug.
-->

### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

- [x] Add screenshots for manual tests if appropriate

- [x] [Run test](https://kyuubi.readthedocs.io/en/latest/tools/testing.html#running-tests) locally before make a pull request

Current kyuubi server dist jars
```
➜  kyuubi git:(KYUUBI-398-followup) ll dist/jars
total 122064
-rw-r--r--  1 chengpan  staff   346K Mar  5 01:00 commons-codec-1.15.jar
-rw-r--r--  1 chengpan  staff   511K Mar  5 01:00 commons-lang3-3.10.jar
-rw-r--r--  1 chengpan  staff   2.3M Mar  5 01:00 curator-client-2.12.0.jar
-rw-r--r--  1 chengpan  staff   197K Mar  5 01:00 curator-framework-2.12.0.jar
-rw-r--r--  1 chengpan  staff   277K Mar  5 01:00 curator-recipes-2.12.0.jar
-rw-r--r--  1 chengpan  staff   2.3M Mar  5 01:00 curator-test-2.12.0.jar
-rw-r--r--  1 chengpan  staff   4.5K Mar  5 01:00 failureaccess-1.0.1.jar
-rw-r--r--  1 chengpan  staff   2.7M Mar  5 01:00 guava-30.1-jre.jar
-rw-r--r--  1 chengpan  staff    17M Mar  5 01:00 hadoop-client-api-3.2.2.jar
-rw-r--r--  1 chengpan  staff    22M Mar  5 01:00 hadoop-client-runtime-3.2.2.jar
-rw-r--r--  1 chengpan  staff   1.5M Mar  5 01:00 hive-service-rpc-2.3.7.jar
-rw-r--r--  1 chengpan  staff   1.4M Mar  5 01:00 htrace-core4-4.1.0-incubating.jar
-rw-r--r--  1 chengpan  staff   697K Mar  5 01:00 javassist-3.18.1-GA.jar
-rw-r--r--  1 chengpan  staff    16K Mar  5 01:00 jcl-over-slf4j-1.7.30.jar
-rw-r--r--  1 chengpan  staff   325K Mar  5 01:00 kyuubi-common-1.1.0-SNAPSHOT.jar
-rw-r--r--  1 chengpan  staff    34K Mar  5 01:00 kyuubi-ha-1.1.0-SNAPSHOT.jar
-rw-r--r--  1 chengpan  staff    81K Mar  5 01:00 kyuubi-main-1.1.0-SNAPSHOT.jar
-rw-r--r--  1 chengpan  staff   306K Mar  5 01:00 libfb303-0.9.3.jar
-rw-r--r--  1 chengpan  staff   229K Mar  5 01:00 libthrift-0.9.3.jar
-rw-r--r--  1 chengpan  staff   478K Mar  5 01:00 log4j-1.2.17.jar
-rw-r--r--  1 chengpan  staff   5.0M Mar  5 01:00 scala-library-2.12.10.jar
-rw-r--r--  1 chengpan  staff    41K Mar  5 01:00 slf4j-api-1.7.30.jar
-rw-r--r--  1 chengpan  staff    12K Mar  5 01:00 slf4j-log4j12-1.7.30.jar
-rw-r--r--  1 chengpan  staff   890K Mar  5 01:00 zookeeper-3.4.14.jar
```

Closes #401 from pan3793/KYUUBI-398-followup.

c96586b [Cheng Pan] reorder deps
207f0b1 [Cheng Pan] restore docs
0f5f2e7 [Cheng Pan] [KYUUBI #398][FOLLOWUP] exclude unused jars

Authored-by: Cheng Pan <379377944@qq.com>
Signed-off-by: Kent Yao <yao@apache.org>
2021-03-05 08:57:23 +08:00

215 lines
6.2 KiB
Bash
Executable File

#!/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.
#
#
# Script to create a binary distribution for easy deploys of Spark.
# The distribution directory defaults to dist/ but can be overridden below.
# The distribution contains fat (assembly) jars that include the Scala library,
# so it is completely self contained.
# It does not contain source or *.class files.
set -o pipefail
set -e
set -x
KYUUBI_HOME="$(cd "`dirname "$0"`/.."; pwd)"
DISTDIR="$KYUUBI_HOME/dist"
MAKE_TGZ=false
SPARK_PROVIDED=false
NAME=none
MVN="$KYUUBI_HOME/build/mvn"
function usage {
set +x
echo "./build/dist - Tool for making binary distributions of Kyuubi"
echo ""
echo "Usage:"
echo "+--------------------------------------------------------------------------------------+"
echo "| ./build/dist [--name <custom_name>] [--tgz] [--spark-provided] <maven build options> |"
echo "+--------------------------------------------------------------------------------------+"
echo "name: - custom binary name, using project version if undefined"
echo "tgz: - whether to make a whole bundled package"
echo "spark-provided: - whether to make a package without Spark binary"
echo ""
}
function exit_with_usage {
usage
exit 1
}
# Parse arguments
while (( "$#" )); do
case $1 in
--tgz)
MAKE_TGZ=true
;;
--spark-provided)
SPARK_PROVIDED=true
;;
--name)
NAME="$2"
shift
;;
--help)
exit_with_usage
;;
--*)
echo "Error: $1 is not supported"
exit_with_usage
;;
-*)
break
;;
*)
echo "Error: $1 is not supported"
exit_with_usage
;;
esac
shift
done
# Setup java
if [[ -z "$JAVA_HOME" ]]; then
if [[ `command -v java` ]]; then
# If java is in /usr/bin/java, we want /usr
JAVA_HOME="$(dirname $(dirname $(which java)))"
fi
fi
if [[ -z "$JAVA_HOME" ]]; then
echo "Error: JAVA_HOME is not set, cannot proceed."
exit -1
fi
echo "JAVA_HOME is set to $JAVA_HOME"
if [[ $(command -v git) ]]; then
GITREV=$(git rev-parse --short HEAD 2>/dev/null || :)
if [[ ! -z "$GITREV" ]]; then
GITREVSTRING="(git revision $GITREV)"
fi
unset GITREV
fi
VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
JAVA_VERSION=$("$MVN" help:evaluate -Dexpression=java.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SPARK_VERSION=$("$MVN" help:evaluate -Dexpression=spark.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=spark.hadoop.binary.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
HIVE_VERSION=$("$MVN" help:evaluate -Dexpression=hive.version $@ 2>/dev/null\
| grep -v "INFO"\
| grep -v "WARNING"\
| tail -n 1)
echo "Building Kyuubi package of version $VERSION against Spark version - $SPARK_VERSION"
if [[ "$NAME" == "none" ]]; then
SPARK_HADOOP_VERSION_SUFFIX="-hadoop${SPARK_HADOOP_VERSION}"
if [[ "$SPARK_PROVIDED" == "true" ]]; then
NAME="without-spark"$SPARK_HADOOP_VERSION_SUFFIX
else
NAME="spark-"${SPARK_VERSION:0:3}$SPARK_HADOOP_VERSION_SUFFIX
fi
fi
if [[ "$MAKE_TGZ" == "true" ]]; then
echo "Making kyuubi-$VERSION-bin-$NAME.tar.gz"
else
echo "Making distribution for Kyuubi $VERSION named $NAME in '$DISTDIR'..."
fi
MVN_DIST_OPT="-DskipTests"
if [[ "$SPARK_PROVIDED" == "true" ]]; then
MVN_DIST_OPT="$MVN_DIST_OPT -Pspark-provided"
fi
BUILD_COMMAND=("$MVN" -T 1C clean package $MVN_DIST_OPT $@)
echo -e "\nBuilding with..."
echo -e "\$ ${BUILD_COMMAND[@]}\n"
"${BUILD_COMMAND[@]}"
# Make directories
rm -rf "$DISTDIR"
mkdir -p "$DISTDIR/pid"
mkdir -p "$DISTDIR/logs"
mkdir -p "$DISTDIR/work"
mkdir -p "$DISTDIR/externals/engines/spark"
echo "Kyuubi $VERSION $GITREVSTRING built for" > "$DISTDIR/RELEASE"
echo "Java $JAVA_VERSION" >> "$DISTDIR/RELEASE"
echo "Scala $SCALA_VERSION" >> "$DISTDIR/RELEASE"
echo "Spark $SPARK_VERSION" >> "$DISTDIR/RELEASE"
echo "Hadoop $HADOOP_VERSION" >> "$DISTDIR/RELEASE"
echo "Hive $HIVE_VERSION" >> "$DISTDIR/RELEASE"
echo "Build flags: $@" >> "$DISTDIR/RELEASE"
# Copy kyuubi server jars
cp -r "$KYUUBI_HOME/kyuubi-assembly/target/scala-$SCALA_VERSION/jars/" "$DISTDIR/jars"
# Copy spark engines
cp "$KYUUBI_HOME/externals/kyuubi-spark-sql-engine/target/kyuubi-spark-sql-engine-$VERSION.jar" "$DISTDIR/externals/engines/spark"
if [[ "$SPARK_PROVIDED" != "true" ]]; then
# Copy spark binary dist
cp -r "$KYUUBI_HOME/externals/kyuubi-download/target/spark-$SPARK_VERSION-bin-hadoop${SPARK_HADOOP_VERSION}$HIVE_VERSION_SUFFIX/" \
"$DISTDIR/externals/spark-$SPARK_VERSION-bin-hadoop${SPARK_HADOOP_VERSION}$HIVE_VERSION_SUFFIX/"
fi
# Copy license and ASF files
cp "$KYUUBI_HOME/LICENSE" "$DISTDIR"
cp -r "$KYUUBI_HOME/bin" "$DISTDIR"
cp -r "$KYUUBI_HOME/conf" "$DISTDIR"
if [[ "$MAKE_TGZ" == "true" ]]; then
TARDIR_NAME=kyuubi-$VERSION-bin-$NAME
TARDIR="$KYUUBI_HOME/$TARDIR_NAME"
rm -rf "$TARDIR"
cp -r "$DISTDIR" "$TARDIR"
tar czf "$TARDIR_NAME.tar.gz" -C "$KYUUBI_HOME" "$TARDIR_NAME"
rm -rf "$TARDIR"
fi