Skip to content

Commit 90af491

Browse files
committed
Add a script to install into a zip that can be unzipped and used on Google App
Engine. http://codereview.appspot.com/6476053/
1 parent 5c120db commit 90af491

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

tools/gae-zip-creator.sh

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/bin/bash
2+
#
3+
# Copyright 2012, Google Inc
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"
44+
find ${TARGET_PATH} -name "*.pyc" -exec rm {} \; >> ${LOG_PATH}
45+
rm -rf ${TARGET_PATH}/*.egg-info >> ${LOG_PATH}
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:"
60+
export SANITY_MODS="gflags httplib2 apiclient uritemplate oauth2client"
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__)"

0 commit comments

Comments
 (0)