116 lines
3.8 KiB
Plaintext
116 lines
3.8 KiB
Plaintext
|
#!/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.
|
||
|
#
|
||
|
|
||
|
# Stop on error
|
||
|
set -e
|
||
|
# Set nullglob for when we are checking existence based on globs
|
||
|
shopt -s nullglob
|
||
|
|
||
|
FWDIR="$(cd "$(dirname "$0")"/..; pwd)"
|
||
|
cd "$FWDIR"
|
||
|
|
||
|
echo "Constucting virtual env for testing"
|
||
|
VIRTUALENV_BASE=$(mktemp -d)
|
||
|
|
||
|
# Clean up the virtual env enviroment used if we created one.
|
||
|
function delete_virtualenv() {
|
||
|
echo "Cleaning up temporary directory - $VIRTUALENV_BASE"
|
||
|
rm -rf "$VIRTUALENV_BASE"
|
||
|
}
|
||
|
trap delete_virtualenv EXIT
|
||
|
|
||
|
# Some systems don't have pip or virtualenv - in those cases our tests won't work.
|
||
|
if ! hash virtualenv 2>/dev/null; then
|
||
|
echo "Missing virtualenv skipping pip installability tests."
|
||
|
exit 0
|
||
|
fi
|
||
|
if ! hash pip 2>/dev/null; then
|
||
|
echo "Missing pip, skipping pip installability tests."
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# Figure out which Python execs we should test pip installation with
|
||
|
PYTHON_EXECS=()
|
||
|
if hash python2 2>/dev/null; then
|
||
|
# We do this since we are testing with virtualenv and the default virtual env python
|
||
|
# is in /usr/bin/python
|
||
|
PYTHON_EXECS+=('python2')
|
||
|
elif hash python 2>/dev/null; then
|
||
|
# If python2 isn't installed fallback to python if available
|
||
|
PYTHON_EXECS+=('python')
|
||
|
fi
|
||
|
if hash python3 2>/dev/null; then
|
||
|
PYTHON_EXECS+=('python3')
|
||
|
fi
|
||
|
|
||
|
# Determine which version of PySpark we are building for archive name
|
||
|
PYSPARK_VERSION=$(python -c "exec(open('python/pyspark/version.py').read());print __version__")
|
||
|
PYSPARK_DIST="$FWDIR/python/dist/pyspark-$PYSPARK_VERSION.tar.gz"
|
||
|
# The pip install options we use for all the pip commands
|
||
|
PIP_OPTIONS="--upgrade --no-cache-dir --force-reinstall "
|
||
|
# Test both regular user and edit/dev install modes.
|
||
|
PIP_COMMANDS=("pip install $PIP_OPTIONS $PYSPARK_DIST"
|
||
|
"pip install $PIP_OPTIONS -e python/")
|
||
|
|
||
|
for python in "${PYTHON_EXECS[@]}"; do
|
||
|
for install_command in "${PIP_COMMANDS[@]}"; do
|
||
|
echo "Testing pip installation with python $python"
|
||
|
# Create a temp directory for us to work in and save its name to a file for cleanup
|
||
|
echo "Using $VIRTUALENV_BASE for virtualenv"
|
||
|
VIRTUALENV_PATH="$VIRTUALENV_BASE"/$python
|
||
|
rm -rf "$VIRTUALENV_PATH"
|
||
|
mkdir -p "$VIRTUALENV_PATH"
|
||
|
virtualenv --python=$python "$VIRTUALENV_PATH"
|
||
|
source "$VIRTUALENV_PATH"/bin/activate
|
||
|
# Upgrade pip
|
||
|
pip install --upgrade pip
|
||
|
|
||
|
echo "Creating pip installable source dist"
|
||
|
cd "$FWDIR"/python
|
||
|
$python setup.py sdist
|
||
|
|
||
|
|
||
|
echo "Installing dist into virtual env"
|
||
|
cd dist
|
||
|
# Verify that the dist directory only contains one thing to install
|
||
|
sdists=(*.tar.gz)
|
||
|
if [ ${#sdists[@]} -ne 1 ]; then
|
||
|
echo "Unexpected number of targets found in dist directory - please cleanup existing sdists first."
|
||
|
exit -1
|
||
|
fi
|
||
|
# Do the actual installation
|
||
|
cd "$FWDIR"
|
||
|
$install_command
|
||
|
|
||
|
cd /
|
||
|
|
||
|
echo "Run basic sanity check on pip installed version with spark-submit"
|
||
|
spark-submit "$FWDIR"/dev/pip-sanity-check.py
|
||
|
echo "Run basic sanity check with import based"
|
||
|
python "$FWDIR"/dev/pip-sanity-check.py
|
||
|
echo "Run the tests for context.py"
|
||
|
python "$FWDIR"/python/pyspark/context.py
|
||
|
|
||
|
cd "$FWDIR"
|
||
|
|
||
|
done
|
||
|
done
|
||
|
|
||
|
exit 0
|