You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
7 months ago
|
#!/bin/bash
|
||
|
#
|
||
|
# Copyright 2014 Google Inc. All Rights Reserved.
|
||
|
#
|
||
|
# Generates a zip of the google api python client and dependencies.
|
||
|
#
|
||
|
# Author: afshar@google.com (Ali Afshar)
|
||
|
|
||
|
# Exit on failure.
|
||
|
set -e
|
||
|
|
||
|
# Where to build the zip.
|
||
|
ROOT_PATH=$(pwd)/build/gae
|
||
|
BUILD_PATH=${ROOT_PATH}/build
|
||
|
LIB_PATH=${ROOT_PATH}/lib
|
||
|
ENV_PATH=${ROOT_PATH}/ve
|
||
|
LOG_PATH=${ROOT_PATH}/gae_zip_build.log
|
||
|
|
||
|
# The api client version
|
||
|
APICLIENT_VERSION=$(python -c "import apiclient; print apiclient.__version__")
|
||
|
|
||
|
# Where to create the zip.
|
||
|
DIST_PATH=$(pwd)/dist/gae
|
||
|
ZIP_NAME=google-api-python-client-gae-${APICLIENT_VERSION}.zip
|
||
|
ZIP_PATH=${DIST_PATH}/${ZIP_NAME}
|
||
|
|
||
|
# Make sure we are all clean.
|
||
|
echo "Cleaning build env"
|
||
|
rm -rf ${ROOT_PATH}
|
||
|
mkdir -p ${ROOT_PATH}
|
||
|
|
||
|
# We must not use the system pip, since that exposes a bug uninstalling httplib2
|
||
|
# instead, install the dev version of pip.
|
||
|
echo "Creating virtualenv and installing pip==dev"
|
||
|
virtualenv --no-site-packages ${ENV_PATH} >> ${LOG_PATH}
|
||
|
${ENV_PATH}/bin/pip install --upgrade pip==dev >> ${LOG_PATH}
|
||
|
|
||
|
# Install the library with dependencies.
|
||
|
echo "Building google-api-python client"
|
||
|
${ENV_PATH}/bin/pip install -b ${BUILD_PATH} -t ${LIB_PATH} . >> ${LOG_PATH}
|
||
|
|
||
|
# Prune the things we don't want.
|
||
|
echo "Pruning target library"
|
||
|
find ${LIB_PATH} -name "*.pyc" -exec rm {} \; >> ${LOG_PATH}
|
||
|
rm -rf ${LIB_PATH}/*.egg-info >> ${LOG_PATH}
|
||
|
|
||
|
# Create the zip.
|
||
|
echo "Creating zip"
|
||
|
mkdir -p ${DIST_PATH}
|
||
|
pushd ${LIB_PATH} >> ${LOG_PATH}
|
||
|
zip -r ${ZIP_PATH} * >> ${LOG_PATH}
|
||
|
popd >> ${LOG_PATH}
|
||
|
|
||
|
# We are done.
|
||
|
echo "Built zip in ${ZIP_PATH}"
|
||
|
|
||
|
# Sanity test the zip.
|
||
|
# TODO (afshar): Run the complete test suite.
|
||
|
echo "Sanity testing the zip:"
|
||
|
export SANITY_MODS="httplib2 apiclient uritemplate oauth2client"
|
||
|
export SANITY_ZIP=${ZIP_PATH}
|
||
|
export PYTHONPATH=${ZIP_PATH}
|
||
|
${ENV_PATH}/bin/python -c "import sys, os
|
||
|
sys.path.pop(0) # remove the pwd
|
||
|
for name in os.getenv('SANITY_MODS').split():
|
||
|
mod = __import__(name)
|
||
|
assert os.getenv('SANITY_ZIP') in mod.__file__
|
||
|
print ' ', os.path.relpath(mod.__file__)"
|