[MINOR] feat(build): Allow to build distribution without some modules (#1525)
### What changes were proposed in this pull request?
Allow to not build some modules when running `./build_distribution.sh`:
./build_distribution.sh --without-mr --without-tez --without-spark --without-dashboard
### Why are the changes needed?
Some modules may not be needed and especially `dashboard` takes very long to build.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Manually.
diff --git a/build_distribution.sh b/build_distribution.sh
index fe9ce21..1483be7 100755
--- a/build_distribution.sh
+++ b/build_distribution.sh
@@ -37,18 +37,25 @@
echo "+------------------------------------------------------------------------------------------------------+"
echo "| ./build_distribution.sh [--spark2-profile <spark2 profile id>] [--spark2-mvn <custom maven options>] |"
echo "| [--spark3-profile <spark3 profile id>] [--spark3-mvn <custom maven options>] |"
- echo "| [--hadoop-profile <hadoop profile id>] |"
+ echo "| [--hadoop-profile <hadoop profile id>] [--without-mr] [--without-tez] |"
+ echo "| [--without-spark] [--without-spark2] [--without-spark3] [--without-dashboard]|"
+ echo "| [--name <custom name>] |"
echo "| <maven build options> |"
echo "+------------------------------------------------------------------------------------------------------+"
exit 1
}
-MVN_OPTS="-Pdashboard"
SPARK2_PROFILE_ID="spark2"
SPARK2_MVN_OPTS=""
SPARK3_PROFILE_ID="spark3"
SPARK3_MVN_OPTS=""
HADOOP_PROFILE_ID="hadoop2.8"
+WITH_MR="true"
+WITH_TEZ="true"
+WITH_SPARK="true"
+WITH_SPARK2="true"
+WITH_SPARK3="true"
+WITH_DASHBOARD="true"
NAME=none
while (( "$#" )); do
case $1 in
@@ -72,6 +79,25 @@
HADOOP_PROFILE_ID=$2
shift
;;
+ --without-mr)
+ WITH_MR="false"
+ ;;
+ --without-tez)
+ WITH_TEZ="false"
+ ;;
+ --without-spark)
+ WITH_SPARK2="false"
+ WITH_SPARK3="false"
+ ;;
+ --without-spark2)
+ WITH_SPARK2="false"
+ ;;
+ --without-spark3)
+ WITH_SPARK3="false"
+ ;;
+ --without-dashboard)
+ WITH_DASHBOARD="false"
+ ;;
--name)
NAME="$2"
shift
@@ -139,7 +165,7 @@
# Store the command as an array because $MVN variable might have spaces in it.
# Normal quoting tricks don't work.
# See: http://mywiki.wooledge.org/BashFAQ/050
-BUILD_COMMAND=("$MVN" clean package -DskipTests $MVN_OPTS $@)
+BUILD_COMMAND=("$MVN" clean package -DskipTests $@)
# Actually build the jar
echo -e "\nBuilding with..."
@@ -170,13 +196,6 @@
cp $COORDINATOR_JAR ${COORDINATOR_JAR_DIR}
cp "${RSS_HOME}"/coordinator/target/jars/* ${COORDINATOR_JAR_DIR}
-DASHBOARD_JAR_DIR="${DISTDIR}/jars/dashboard"
-mkdir -p $DASHBOARD_JAR_DIR
-DASHBOARD_JAR="${RSS_HOME}/dashboard/target/dashboard-${VERSION}.jar"
-echo "copy $DASHBOARD_JAR to ${DASHBOARD_JAR_DIR}"
-cp $DASHBOARD_JAR $DASHBOARD_JAR_DIR
-cp "${RSS_HOME}"/dashboard/target/jars/* ${DASHBOARD_JAR_DIR}
-
CLI_JAR_DIR="${DISTDIR}/jars/cli"
mkdir -p $CLI_JAR_DIR
CLI_JAR="${RSS_HOME}/cli/target/cli-${VERSION}.jar"
@@ -187,52 +206,78 @@
CLIENT_JAR_DIR="${DISTDIR}/jars/client"
mkdir -p $CLIENT_JAR_DIR
-BUILD_COMMAND_SPARK2=("$MVN" clean package -P$SPARK2_PROFILE_ID -pl client-spark/spark2-shaded -DskipTests -am $@ $SPARK2_MVN_OPTS)
# Actually build the jar
-echo -e "\nBuilding with..."
-echo -e "\$ ${BUILD_COMMAND_SPARK2[@]}\n"
+if [ "$WITH_SPARK2" == "true" ]; then
+ BUILD_COMMAND_SPARK2=("$MVN" clean package -P$SPARK2_PROFILE_ID -pl client-spark/spark2-shaded -DskipTests -am $@ $SPARK2_MVN_OPTS)
-"${BUILD_COMMAND_SPARK2[@]}"
+ echo -e "\nBuilding with..."
+ echo -e "\$ ${BUILD_COMMAND_SPARK2[@]}\n"
+ "${BUILD_COMMAND_SPARK2[@]}"
-SPARK_CLIENT2_JAR_DIR="${CLIENT_JAR_DIR}/spark2"
-mkdir -p $SPARK_CLIENT2_JAR_DIR
+ SPARK_CLIENT2_JAR_DIR="${CLIENT_JAR_DIR}/spark2"
+ mkdir -p $SPARK_CLIENT2_JAR_DIR
+ SPARK_CLIENT2_JAR="${RSS_HOME}/client-spark/spark2-shaded/target/rss-client-spark2-shaded-${VERSION}.jar"
+ echo "copy $SPARK_CLIENT2_JAR to ${SPARK_CLIENT2_JAR_DIR}"
+ cp $SPARK_CLIENT2_JAR ${SPARK_CLIENT2_JAR_DIR}
+fi
-SPARK_CLIENT2_JAR="${RSS_HOME}/client-spark/spark2-shaded/target/rss-client-spark2-shaded-${VERSION}.jar"
-echo "copy $SPARK_CLIENT2_JAR to ${SPARK_CLIENT2_JAR_DIR}"
-cp $SPARK_CLIENT2_JAR ${SPARK_CLIENT2_JAR_DIR}
+if [ "$WITH_SPARK3" == "true" ]; then
+ BUILD_COMMAND_SPARK3=("$MVN" clean package -P$SPARK3_PROFILE_ID -pl client-spark/spark3-shaded -DskipTests -am $@ $SPARK3_MVN_OPTS)
-BUILD_COMMAND_SPARK3=("$MVN" clean package -P$SPARK3_PROFILE_ID -pl client-spark/spark3-shaded -DskipTests -am $@ $SPARK3_MVN_OPTS)
+ echo -e "\nBuilding with..."
+ echo -e "\$ ${BUILD_COMMAND_SPARK3[@]}\n"
+ "${BUILD_COMMAND_SPARK3[@]}"
-echo -e "\nBuilding with..."
-echo -e "\$ ${BUILD_COMMAND_SPARK3[@]}\n"
-"${BUILD_COMMAND_SPARK3[@]}"
+ SPARK_CLIENT3_JAR_DIR="${CLIENT_JAR_DIR}/spark3"
+ mkdir -p $SPARK_CLIENT3_JAR_DIR
+ SPARK_CLIENT3_JAR="${RSS_HOME}/client-spark/spark3-shaded/target/rss-client-spark3-shaded-${VERSION}.jar"
+ echo "copy $SPARK_CLIENT3_JAR to ${SPARK_CLIENT3_JAR_DIR}"
+ cp $SPARK_CLIENT3_JAR $SPARK_CLIENT3_JAR_DIR
+fi
-SPARK_CLIENT3_JAR_DIR="${CLIENT_JAR_DIR}/spark3"
-mkdir -p $SPARK_CLIENT3_JAR_DIR
-SPARK_CLIENT3_JAR="${RSS_HOME}/client-spark/spark3-shaded/target/rss-client-spark3-shaded-${VERSION}.jar"
-echo "copy $SPARK_CLIENT3_JAR to ${SPARK_CLIENT3_JAR_DIR}"
-cp $SPARK_CLIENT3_JAR $SPARK_CLIENT3_JAR_DIR
+if [ "$WITH_MR" == "true" ]; then
+ BUILD_COMMAND_MR=("$MVN" clean package -Pmr,$HADOOP_PROFILE_ID -pl client-mr/core -DskipTests -am $@)
-BUILD_COMMAND_MR=("$MVN" clean package -Pmr,$HADOOP_PROFILE_ID -pl client-mr/core -DskipTests -am $@)
-echo -e "\nBuilding with..."
-echo -e "\$ ${BUILD_COMMAND_MR[@]}\n"
-"${BUILD_COMMAND_MR[@]}"
-MR_CLIENT_JAR_DIR="${CLIENT_JAR_DIR}/mr"
-mkdir -p $MR_CLIENT_JAR_DIR
-MR_CLIENT_JAR="${RSS_HOME}/client-mr/core/target/shaded/rss-client-mr-${VERSION}-shaded.jar"
-echo "copy $MR_CLIENT_JAR to ${MR_CLIENT_JAR_DIR}"
-cp $MR_CLIENT_JAR $MR_CLIENT_JAR_DIR
+ echo -e "\nBuilding with..."
+ echo -e "\$ ${BUILD_COMMAND_MR[@]}\n"
+ "${BUILD_COMMAND_MR[@]}"
-BUILD_COMMAND_TEZ=("$MVN" clean package -Ptez,$HADOOP_PROFILE_ID -pl client-tez -DskipTests -am $@)
-echo -e "\nBuilding with..."
-echo -e "\$ ${BUILD_COMMAND_TEZ[@]}\n"
-"${BUILD_COMMAND_TEZ[@]}"
-TEZ_CLIENT_JAR_DIR="${CLIENT_JAR_DIR}/tez"
-mkdir -p $TEZ_CLIENT_JAR_DIR
-TEZ_CLIENT_JAR="${RSS_HOME}/client-tez/target/shaded/rss-client-tez-${VERSION}-shaded.jar"
-echo "copy $TEZ_CLIENT_JAR to ${TEZ_CLIENT_JAR_DIR}"
-cp $TEZ_CLIENT_JAR $TEZ_CLIENT_JAR_DIR
+ MR_CLIENT_JAR_DIR="${CLIENT_JAR_DIR}/mr"
+ mkdir -p $MR_CLIENT_JAR_DIR
+ MR_CLIENT_JAR="${RSS_HOME}/client-mr/core/target/shaded/rss-client-mr-${VERSION}-shaded.jar"
+ echo "copy $MR_CLIENT_JAR to ${MR_CLIENT_JAR_DIR}"
+ cp $MR_CLIENT_JAR $MR_CLIENT_JAR_DIR
+fi
+
+if [ "$WITH_TEZ" == "true" ]; then
+ BUILD_COMMAND_TEZ=("$MVN" clean package -Ptez,$HADOOP_PROFILE_ID -pl client-tez -DskipTests -am $@)
+
+ echo -e "\nBuilding with..."
+ echo -e "\$ ${BUILD_COMMAND_TEZ[@]}\n"
+ "${BUILD_COMMAND_TEZ[@]}"
+
+ TEZ_CLIENT_JAR_DIR="${CLIENT_JAR_DIR}/tez"
+ mkdir -p $TEZ_CLIENT_JAR_DIR
+ TEZ_CLIENT_JAR="${RSS_HOME}/client-tez/target/shaded/rss-client-tez-${VERSION}-shaded.jar"
+ echo "copy $TEZ_CLIENT_JAR to ${TEZ_CLIENT_JAR_DIR}"
+ cp $TEZ_CLIENT_JAR $TEZ_CLIENT_JAR_DIR
+fi
+
+if [ "$WITH_DASHBOARD" == "true" ]; then
+ BUILD_COMMAND_DASHBOARD=("$MVN" clean package -Pdashboard -pl dashboard -DskipTests -am $@)
+
+ echo -e "\nBuilding with..."
+ echo -e "\$ ${BUILD_COMMAND_DASHBOARD[@]}\n"
+ "${BUILD_COMMAND_DASHBOARD[@]}"
+
+ DASHBOARD_JAR_DIR="${DISTDIR}/jars/dashboard"
+ mkdir -p $DASHBOARD_JAR_DIR
+ DASHBOARD_JAR="${RSS_HOME}/dashboard/target/dashboard-${VERSION}.jar"
+ echo "copy $DASHBOARD_JAR to ${DASHBOARD_JAR_DIR}"
+ cp $DASHBOARD_JAR $DASHBOARD_JAR_DIR
+ cp "${RSS_HOME}"/dashboard/target/jars/* ${DASHBOARD_JAR_DIR}
+fi
cp -r bin $DISTDIR
cp -r conf $DISTDIR