Skip to content

Commit 5301ff5

Browse files
committed
Merge pull request #6 from cloudControl/pip-upgrade
Always use latest setuptools and pip
2 parents 69ac8e4 + 97ff23a commit 5301ff5

165 files changed

Lines changed: 21 additions & 51547 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

bin/compile

Lines changed: 21 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
3131
# Python version. This will be used in the future to specify custom Pythons.
3232
DEFAULT_PYTHON_VERSION="python-2.7.8"
3333
PYTHON_EXE="$APP_PYTHON_HOME_DIR/bin/python"
34-
PIP_VERSION="1.3.1"
35-
DISTRIBUTE_VERSION="0.6.36"
3634

3735
# Setup bpwatch
3836
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
@@ -71,6 +69,7 @@ BUILDPACK_PYTHON_HOME=$BUILD_DIR/$PAASPROVIDER_DIR/python
7169
export PATH=$APP_PYTHON_HOME_DIR/bin:$PATH
7270
export PYTHONUNBUFFERED=1
7371
export LANG=en_US.UTF-8
72+
hash -r
7473

7574
# Switch to the repo's context.
7675
cd $BUILD_DIR
@@ -108,95 +107,49 @@ bpwatch start restore_cache
108107
done
109108
bpwatch stop restore_cache
110109

111-
set +e
112110
# Create set-aside `$PAASPROVIDER_DIR` folder.
113-
mkdir $PAASPROVIDER_DIR &> /dev/null
114-
set -e
111+
mkdir $PAASPROVIDER_DIR &> /dev/null || true
115112

116113
mkdir -p $(dirname $PROFILE_PATH)
117114

118-
set +e
119115
PYTHON_VERSION=$(cat runtime.txt)
120116

121117
# Install Python.
122-
if [ -f $PAASPROVIDER_DIR/python-version ]; then
123-
if [ ! $(cat $PAASPROVIDER_DIR/python-version) = $PYTHON_VERSION ]; then
124-
bpwatch start uninstall_python
125-
puts-step "Found $(cat $PAASPROVIDER_DIR/python-version), removing."
126-
rm -fr $PAASPROVIDER_DIR/python
127-
bpwatch stop uninstall_python
128-
else
129-
SKIP_INSTALL=1
130-
fi
131-
fi
132-
118+
if [[ $(cat $PAASPROVIDER_DIR/python-version 2>/dev/null) == "$PYTHON_VERSION" ]]; then
119+
puts-step "Using Python runtime ($PYTHON_VERSION)"
120+
else
121+
puts-step "Preparing Python runtime ($PYTHON_VERSION)"
122+
rm -fr "$PAASPROVIDER_DIR/python" 2>/dev/null
133123

134-
if [ ! "$SKIP_INSTALL" ]; then
135-
bpwatch start install_python
136-
puts-step "Preparing Python runtime ($PYTHON_VERSION)"
137-
curl "$ARTIFACT_SOURCE_URL/$PYTHON_VERSION.tar.bz2" -s -L | tar jx &> /dev/null
138-
if [[ $? != 0 ]] ; then
139-
puts-warn "Requested runtime ($PYTHON_VERSION) was not found."
140-
puts-warn "Aborting."
141-
exit 1
142-
fi
143-
mv python $PAASPROVIDER_DIR/python
144-
bpwatch stop install_python
124+
if ! curl -sSL "$ARTIFACT_SOURCE_URL/$PYTHON_VERSION.tar.bz2" | tar -jxC "$PAASPROVIDER_DIR"; then
125+
puts-warn "Requested runtime ($PYTHON_VERSION) was not found."
126+
puts-warn "Aborting."
127+
exit 1
128+
fi
145129

146130
# Record for future reference.
147131
echo $PYTHON_VERSION > $PAASPROVIDER_DIR/python-version
148-
FRESH_PYTHON=true
149-
150-
hash -r
151-
else
152-
puts-step "Using Python runtime ($PYTHON_VERSION)"
132+
hash python
153133
fi
154134

155-
# If Pip isn't up to date:
156-
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
157-
WORKING_DIR=$(pwd)
158-
159-
bpwatch start prepare_environment
160-
161-
bpwatch start install_distribute
162-
# Prepare it for the real world
163-
puts-step "Installing Distribute ($DISTRIBUTE_VERSION)"
164-
cd $ROOT_DIR/vendor/distribute-$DISTRIBUTE_VERSION/
165-
python setup.py install &> /dev/null
166-
cd $WORKING_DIR
167-
bpwatch stop install_distribute
168135

169-
bpwatch start install_pip
170-
puts-step "Installing Pip ($PIP_VERSION)"
171-
cd $ROOT_DIR/vendor/pip-$PIP_VERSION/
172-
python setup.py install &> /dev/null
173-
cd $WORKING_DIR
174-
175-
bpwatch stop install_pip
176-
bpwatch stop prepare_environment
136+
local_pip="$BUILDPACK_PYTHON_HOME/bin/pip"
137+
if [[ ! -a $local_pip ]]; then
138+
curl -sSL "https://bootstrap.pypa.io/get-pip.py" | python | indent
177139
fi
178-
179-
set -e
180-
hash -r
140+
"$local_pip" install --disable-pip-version-check -U setuptools pip | cleanup | indent
181141

182142
# Install Mercurial if it appears to be required.
183143
if (grep -Fiq "hg+" requirements.txt) then
184144
bpwatch start mercurial_install
185-
$APP_PYTHON_HOME_DIR/bin/pip install --use-mirrors mercurial | cleanup | indent
145+
"$local_pip" install --use-mirrors mercurial | cleanup | indent
186146
bpwatch stop mercurial_install
187147
fi
188148

189149
# Install dependencies with Pip.
190-
puts-step "Installing dependencies using Pip ($PIP_VERSION)"
191-
192-
193-
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
194-
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
195-
196-
$APP_PYTHON_HOME_DIR/bin/pip install --use-mirrors -r requirements.txt --exists-action=w --src=./$PAASPROVIDER_DIR/src | indent
150+
puts-step "Installing dependencies using ($($local_pip --version))"
197151

198-
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
199-
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first
152+
"$local_pip" install -r requirements.txt --src=./$PAASPROVIDER_DIR/src | indent
200153

201154
# Django collectstatic support.
202155
bpwatch start collectstatic
@@ -212,7 +165,7 @@ set-env PYTHONHOME $APP_PYTHON_HOME_DIR
212165
set-env PATH '$PYTHONHOME/bin:$PATH'
213166
set-default-env LANG en_US.UTF-8
214167
set-default-env PYTHONHASHSEED random
215-
set-default-env PYTHONPATH $APP_DIR/
168+
set-default-env PYTHONPATH $APP_DIR
216169

217170

218171
# Experimental post_compile hook.

0 commit comments

Comments
 (0)