Ali Afshar | 90af491 | 2012-08-23 15:31:36 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
Craig Citro | 0e5b9bf | 2014-10-15 10:26:14 -0700 | [diff] [blame] | 3 | # Copyright 2014 Google Inc. All Rights Reserved. |
Ali Afshar | 90af491 | 2012-08-23 15:31:36 -0700 | [diff] [blame] | 4 | # |
| 5 | # Generates a zip of the google api python client and dependencies. |
| 6 | # |
| 7 | # Author: afshar@google.com (Ali Afshar) |
| 8 | |
| 9 | # Exit on failure. |
| 10 | set -e |
| 11 | |
| 12 | # Where to build the zip. |
| 13 | ROOT_PATH=$(pwd)/build/gae |
| 14 | BUILD_PATH=${ROOT_PATH}/build |
| 15 | LIB_PATH=${ROOT_PATH}/lib |
| 16 | ENV_PATH=${ROOT_PATH}/ve |
| 17 | LOG_PATH=${ROOT_PATH}/gae_zip_build.log |
| 18 | |
| 19 | # The api client version |
| 20 | APICLIENT_VERSION=$(python -c "import apiclient; print apiclient.__version__") |
| 21 | |
| 22 | # Where to create the zip. |
| 23 | DIST_PATH=$(pwd)/dist/gae |
| 24 | ZIP_NAME=google-api-python-client-gae-${APICLIENT_VERSION}.zip |
| 25 | ZIP_PATH=${DIST_PATH}/${ZIP_NAME} |
| 26 | |
| 27 | # Make sure we are all clean. |
| 28 | echo "Cleaning build env" |
| 29 | rm -rf ${ROOT_PATH} |
| 30 | mkdir -p ${ROOT_PATH} |
| 31 | |
| 32 | # We must not use the system pip, since that exposes a bug uninstalling httplib2 |
| 33 | # instead, install the dev version of pip. |
| 34 | echo "Creating virtualenv and installing pip==dev" |
| 35 | virtualenv --no-site-packages ${ENV_PATH} >> ${LOG_PATH} |
| 36 | ${ENV_PATH}/bin/pip install --upgrade pip==dev >> ${LOG_PATH} |
| 37 | |
| 38 | # Install the library with dependencies. |
| 39 | echo "Building google-api-python client" |
| 40 | ${ENV_PATH}/bin/pip install -b ${BUILD_PATH} -t ${LIB_PATH} . >> ${LOG_PATH} |
| 41 | |
| 42 | # Prune the things we don't want. |
| 43 | echo "Pruning target library" |
Ali Afshar | dcc9697 | 2012-08-29 07:36:17 -0700 | [diff] [blame] | 44 | find ${LIB_PATH} -name "*.pyc" -exec rm {} \; >> ${LOG_PATH} |
| 45 | rm -rf ${LIB_PATH}/*.egg-info >> ${LOG_PATH} |
Ali Afshar | 90af491 | 2012-08-23 15:31:36 -0700 | [diff] [blame] | 46 | |
| 47 | # Create the zip. |
| 48 | echo "Creating zip" |
| 49 | mkdir -p ${DIST_PATH} |
| 50 | pushd ${LIB_PATH} >> ${LOG_PATH} |
| 51 | zip -r ${ZIP_PATH} * >> ${LOG_PATH} |
| 52 | popd >> ${LOG_PATH} |
| 53 | |
| 54 | # We are done. |
| 55 | echo "Built zip in ${ZIP_PATH}" |
| 56 | |
| 57 | # Sanity test the zip. |
| 58 | # TODO (afshar): Run the complete test suite. |
| 59 | echo "Sanity testing the zip:" |
Joe Gregorio | 79daca0 | 2013-03-29 16:25:52 -0400 | [diff] [blame] | 60 | export SANITY_MODS="httplib2 apiclient uritemplate oauth2client" |
Ali Afshar | 90af491 | 2012-08-23 15:31:36 -0700 | [diff] [blame] | 61 | export SANITY_ZIP=${ZIP_PATH} |
| 62 | export PYTHONPATH=${ZIP_PATH} |
| 63 | ${ENV_PATH}/bin/python -c "import sys, os |
| 64 | sys.path.pop(0) # remove the pwd |
| 65 | for name in os.getenv('SANITY_MODS').split(): |
| 66 | mod = __import__(name) |
| 67 | assert os.getenv('SANITY_ZIP') in mod.__file__ |
| 68 | print ' ', os.path.relpath(mod.__file__)" |