blob: dc170b429a540904f32eed0dad672eda9fb7521a [file] [log] [blame]
#!/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
# Zeppelin doesn't support Scala 2.12+ as of v0.9.0,
# so we use Scala 2.11 here.
# Though Zeppelin itself will be built with Scala 2.11,
# it works with other components built with Scala 2.12,
# e.g., Spark 3.x, through corresponding interpreters.
ZEPPELIN_SCALA_BINARY_VERSION=2.11
./dev/change_scala_version.sh ${ZEPPELIN_SCALA_BINARY_VERSION}
# We build Zeppelin with minimal interpreters here
# so as to reduce artifact size (cf. BIGTOP-2269).
# If we include all of these interpreters into
# the artifact, its size is 1.5GB as of v0.9.0,
# while it's around 750MB without them.
# Users can install them later via Zeppelin's "netinst" feature.
EXCLUDE_INTERPRETERS=!beam,!hbase,!pig,!jdbc,!flink,!ignite,!kylin,!lens,!cassandra,!elasticsearch,!bigquery,!alluxio,!scio,!groovy,!sap,!java,!geode,!neo4j,!hazelcastjet,!submarine,!sparql,!mongodb,!ksql,!scalding
# We don't specify scala.version or spark.version here,
# because Zeppelin builds shims for all of Spark 1.x (w/ Scala 2.10),
# Spark 2.x (w/ Scala 2.11), and Spark 3.x (w/ Scala 2.12) by default.
# Rather, explicitly specifying their version seems to cause build failure.
ZEPPELIN_LIVY_VERSION=${LIVY_VERSION}-incubating
BUILD_OPTS="-Dhadoop3.2.version=${HADOOP_VERSION} \
-Dlivy.version=${ZEPPELIN_LIVY_VERSION} \
-Pscala-${ZEPPELIN_SCALA_BINARY_VERSION} \
-Phadoop3 \
-Pbuild-distr"
if [ "$ZEPPELIN_RUN_TESTS" = "true" ]; then
BUILD_OPTS="$BUILD_OPTS -DskipTests=false"
else
BUILD_OPTS="$BUILD_OPTS -DskipTests"
fi
export MAVEN_OPTS="-Xmx1500m -Xms1500m"
# BIGTOP-2742:
# The default zeppelin PIDFILE includes the literal $(hostname) string, which is carried into the init script's pidfile declaration.
# But pidfile does not subshell out to generate the expected string.
# The zeppelin process does indeed start up, but systemctl reports a failure because it's looking for a non-existent pidfile.
#
# Workaround:
# Remove unnecessary $HOSTNAME from zeppelin-daemon.sh and also make the same adjustment to zeppelin.svc.
# TODO:
# Request the issue to zeppelin upstream, If accepted, remove this workaround.
sed -i "s/^.*ZEPPELIN_PID=.*$/ZEPPELIN_PID=\"\$\{ZEPPELIN_PID_DIR\}\/zeppelin\-\$\{ZEPPELIN_IDENT_STRING\}\.pid\"/" bin/zeppelin-daemon.sh
mvn $BUILD_OPTS clean package -pl ''$EXCLUDE_INTERPRETERS'' -am
mkdir -p build/dist
tar -C build/dist --strip-components=1 -xzf zeppelin-distribution/target/zeppelin-*.tar.gz