Files
impala/bin/clean.sh
Tim Armstrong 75a857c0ce IMPALA-4259: build Impala without any test cluster setup.
The main outcome of this change is to avoid making unnecessary
modification to the Impala or other source trees when we don't need the
test cluster.

To achieve that, this refactors the script to make the flow easier
to understand and makes it more consistent which build steps are
executed in which modes.

Change-Id: I429da7bc6681b16c07fe58bb3efac6d1a8579137
Reviewed-on: http://gerrit.cloudera.org:8080/4685
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Internal Jenkins
2016-10-13 05:45:47 +00:00

84 lines
2.8 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.
# Removes compiled or generated artifacts. Should be used before switching branches
# between releases. In addition must be used before switching from a toolchain enabled
# branch to a non-toolchain branch due to caching in CMake generated files.
set -euo pipefail
trap 'echo Error in $0 at line $LINENO: $(cd "'$PWD'" && awk "NR == $LINENO" $0)' ERR
# If the project was never build, no Makefile will exist and thus make clean will fail.
# Combine the make command with the bash noop to always return true.
"${MAKE_CMD:-make}" clean || :
# clean the external data source project
pushd ${IMPALA_HOME}/ext-data-source
rm -rf api/generated-sources/*
${IMPALA_HOME}/bin/mvn-quiet.sh clean
popd
# clean fe
# don't use git clean because we need to retain Eclipse conf files
pushd $IMPALA_FE_DIR
rm -rf target
rm -f src/test/resources/{core,hbase,hive}-site.xml
rm -rf generated-sources/*
[ -z "$IMPALA_LOGS_DIR" ] || rm -rf "${IMPALA_LOGS_DIR}"/*
mkdir -p $IMPALA_ALL_LOGS_DIRS
popd
# clean be
pushd "$IMPALA_HOME/be"
# remove everything listed in .gitignore
git rev-parse 2>/dev/null && git clean -Xdfq
popd
# clean shell build artifacts
pushd "$IMPALA_HOME/shell"
# remove everything listed in .gitignore
git rev-parse 2>/dev/null && git clean -Xdfq
popd
# Clean stale .pyc, .pyo files and __pycache__ directories.
pushd "${IMPALA_HOME}"
find . -type f -name "*.py[co]" -delete
find . -type d -name "__pycache__" -delete
popd
# clean llvm
rm -f "$IMPALA_HOME/llvm-ir/"impala*.ll
rm -f "$IMPALA_HOME/be/generated-sources/impala-ir/"*
# Cleanup Impala-lzo
if [ -e "$IMPALA_LZO" ]; then
pushd "$IMPALA_LZO"
git rev-parse 2>/dev/null && git clean -fdx
popd
fi
# When switching to and from toolchain, make sure to remove all CMake generated files
FIND_ARGS=("$IMPALA_HOME" -iname '*cmake*' -not -name CMakeLists.txt \
-not -path "$IMPALA_HOME/cmake_modules*" \
-not -path "$IMPALA_HOME/thirdparty*")
if [[ -n "$IMPALA_TOOLCHAIN" ]]; then
FIND_ARGS+=(-not -path "$IMPALA_TOOLCHAIN/*")
fi
find "${FIND_ARGS[@]}" | xargs rm -Rf