Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
H
heroku-buildpack-python
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
heroku-buildpack-python
Commits
0e11dbad
Commit
0e11dbad
authored
Jul 17, 2014
by
Kenneth Reitz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpwatch
parent
96cf5718
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
45 deletions
+46
-45
compile
bin/compile
+46
-45
No files found.
bin/compile
View file @
0e11dbad
...
...
@@ -26,6 +26,7 @@ LEGACY_TRIGGER="lib/python2.7"
PROFILE_PATH
=
"
$BUILD_DIR
/.profile.d/python.sh"
DEFAULT_PYTHON_VERSION
=
"python-2.7.8"
DEFAULT_PYTHON_STACK
=
"cedar"
PYTHON_EXE
=
"/app/.heroku/python/bin/python"
PIP_VERSION
=
"1.5.6"
SETUPTOOLS_VERSION
=
"3.6"
...
...
@@ -43,11 +44,11 @@ BUILDPACK_VERSION=v28
# Sanitizing environment variables.
unset
GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH
#
bpwatch init $LOGPLEX_KEY
#
bpwatch build python $BUILDPACK_VERSION $REQUEST_ID
bpwatch init
$LOGPLEX_KEY
bpwatch build python
$BUILDPACK_VERSION
$REQUEST_ID
TMP_APP_DIR
=
$CACHE_DIR
/tmp_app_dir
#
bpwatch start compile
bpwatch start compile
# We'll need to send these statics to other scripts we `source`.
...
...
@@ -61,19 +62,19 @@ APP_DIR='/app'
TMP_APP_DIR
=
$CACHE_DIR
/tmp_app_dir
# Copy Anvil app dir to temporary storage...
#
bpwatch start anvil_appdir_stage
bpwatch start anvil_appdir_stage
if
[
"
$SLUG_ID
"
]
;
then
mkdir
-p
$TMP_APP_DIR
deep-mv
$APP_DIR
$TMP_APP_DIR
else
deep-rm
$APP_DIR
fi
#
bpwatch stop anvil_appdir_stage
bpwatch stop anvil_appdir_stage
# Copy Application code in.
#
bpwatch start appdir_stage
bpwatch start appdir_stage
deep-mv
$BUILD_DIR
$APP_DIR
#
bpwatch stop appdir_stage
bpwatch stop appdir_stage
# Set new context.
ORIG_BUILD_DIR
=
$BUILD_DIR
...
...
@@ -93,9 +94,9 @@ export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:$BUILD_DIR/.heroku/ven
cd
$BUILD_DIR
# Experimental pre_compile hook.
#
bpwatch start pre_compile
bpwatch start pre_compile
source
$BIN_DIR
/steps/hooks/pre_compile
#
bpwatch stop pre_compile
bpwatch stop pre_compile
# If no requirements given, assume `setup.py develop`.
if
[
!
-f
requirements.txt
]
;
then
...
...
@@ -104,9 +105,9 @@ if [ ! -f requirements.txt ]; then
fi
# Sticky runtimes.
#
if [ -f $CACHE_DIR/.heroku/python-version ]; then
#
DEFAULT_PYTHON_VERSION=$(cat $CACHE_DIR/.heroku/python-version)
#
fi
if
[
-f
$CACHE_DIR
/.heroku/python-version
]
;
then
DEFAULT_PYTHON_VERSION
=
$(
cat
$CACHE_DIR
/.heroku/python-version
)
fi
# If no runtime given, assume default version.
if
[
!
-f
runtime.txt
]
;
then
...
...
@@ -117,17 +118,17 @@ fi
mkdir
-p
$CACHE_DIR
# Purge "old-style" virtualenvs.
#
bpwatch start clear_old_venvs
bpwatch start clear_old_venvs
[
-d
$CACHE_DIR
/
$LEGACY_TRIGGER
]
&&
rm
-fr
$CACHE_DIR
/.heroku/bin
$CACHE_DIR
/.heroku/lib
$CACHE_DIR
/.heroku/include
[
-d
$CACHE_DIR
/
$VIRTUALENV_LOC
]
&&
rm
-fr
$CACHE_DIR
/.heroku/venv
$CACHE_DIR
/.heroku/src
#
bpwatch stop clear_old_venvs
bpwatch stop clear_old_venvs
# Restore old artifacts from the cache.
#
bpwatch start restore_cache
bpwatch start restore_cache
for
dir
in
$CACHED_DIRS
;
do
cp
-R
$CACHE_DIR
/
$dir
.
&> /dev/null
||
true
done
#
bpwatch stop restore_cache
bpwatch stop restore_cache
set
+e
# Create set-aside `.heroku` folder.
...
...
@@ -142,10 +143,10 @@ PYTHON_VERSION=$(cat runtime.txt)
# Install Python.
if
[
-f
.heroku/python-version
]
;
then
if
[
!
$(
cat
.heroku/python-version
)
=
$PYTHON_VERSION
]
;
then
#
bpwatch start uninstall_python
bpwatch start uninstall_python
puts-step
"Found
$(
cat
.heroku/python-version
)
, removing."
rm
-fr
.heroku/python
#
bpwatch stop uninstall_python
bpwatch stop uninstall_python
else
SKIP_INSTALL
=
1
fi
...
...
@@ -153,7 +154,7 @@ fi
if
[
!
"
$SKIP_INSTALL
"
]
;
then
#
bpwatch start install_python
bpwatch start install_python
puts-step
"Preparing Python runtime (
$PYTHON_VERSION
)"
# Prepare destination directory.
...
...
@@ -166,7 +167,7 @@ if [ ! "$SKIP_INSTALL" ]; then
exit
1
fi
#
bpwatch stop install_python
bpwatch stop install_python
# Record for future reference.
echo
$PYTHON_VERSION
>
.heroku/python-version
...
...
@@ -181,9 +182,9 @@ fi
if
[
"
$FRESH_PYTHON
"
]
||
[[
!
$(
pip
--version
)
==
*
$PIP_VERSION
*
]]
;
then
WORKING_DIR
=
$(
pwd
)
#
bpwatch start prepare_environment
bpwatch start prepare_environment
#
bpwatch start install_setuptools
bpwatch start install_setuptools
# Prepare it for the real world
puts-step
"Installing Setuptools (
$SETUPTOOLS_VERSION
)"
cd
$ROOT_DIR
/vendor/
...
...
@@ -191,9 +192,9 @@ if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
cd
$ROOT_DIR
/vendor/setuptools-
$SETUPTOOLS_VERSION
/
python setup.py
install
&> /dev/null
cd
$WORKING_DIR
#
bpwatch stop install_setuptoools
bpwatch stop install_setuptoools
#
bpwatch start install_pip
bpwatch start install_pip
puts-step
"Installing Pip (
$PIP_VERSION
)"
cd
$ROOT_DIR
/vendor/
...
...
@@ -202,8 +203,8 @@ if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
python setup.py
install
&> /dev/null
cd
$WORKING_DIR
#
bpwatch stop install_pip
#
bpwatch stop prepare_environment
bpwatch stop install_pip
bpwatch stop prepare_environment
fi
set
-e
...
...
@@ -211,9 +212,9 @@ hash -r
# Pylibmc support.
# See [`bin/steps/pylibmc`](pylibmc.html).
#
bpwatch start pylibmc_install
bpwatch start pylibmc_install
source
$BIN_DIR
/steps/pylibmc
#
bpwatch stop pylibmc_install
bpwatch stop pylibmc_install
# DEBUGGING
...
...
@@ -224,27 +225,27 @@ echo $STACK
# Install Mercurial if it appears to be required.
if
(
grep
-Fiq
"hg+"
requirements.txt
)
then
#
bpwatch start mercurial_install
bpwatch start mercurial_install
/app/.heroku/python/bin/pip
install
mercurial | cleanup | indent
#
bpwatch stop mercurial_install
bpwatch stop mercurial_install
fi
# Install dependencies with Pip.
puts-step
"Installing dependencies using Pip (
$PIP_VERSION
)"
#
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
#
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
[
!
"
$FRESH_PYTHON
"
]
&&
bpwatch start pip_install
[
"
$FRESH_PYTHON
"
]
&&
bpwatch start pip_install_first
/app/.heroku/python/bin/pip
install
-r
requirements.txt
--exists-action
=
w
--src
=
./.heroku/src
--allow-all-external
| cleanup | indent
#
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
#
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first
[
!
"
$FRESH_PYTHON
"
]
&&
bpwatch stop pip_install
[
"
$FRESH_PYTHON
"
]
&&
bpwatch stop pip_install_first
# Django collectstatic support.
#
bpwatch start collectstatic
bpwatch start collectstatic
sub-env
$BIN_DIR
/steps/collectstatic
#
bpwatch stop collectstatic
bpwatch stop collectstatic
# ### Finalize
#
...
...
@@ -261,27 +262,27 @@ set-default-env PYTHONPATH /app/
# Experimental post_compile hook.
#
bpwatch start post_compile
bpwatch start post_compile
source
$BIN_DIR
/steps/hooks/post_compile
#
bpwatch stop post_compile
bpwatch stop post_compile
# Store new artifacts in cache.
#
bpwatch start dump_cache
bpwatch start dump_cache
for
dir
in
$CACHED_DIRS
;
do
rm
-rf
$CACHE_DIR
/
$dir
cp
-R
$dir
$CACHE_DIR
/
done
#
bpwatch stop dump_cache
bpwatch stop dump_cache
# ### Fin.
#
bpwatch start appdir_commit
bpwatch start appdir_commit
deep-mv
$BUILD_DIR
$ORIG_BUILD_DIR
#
bpwatch stop appdir_commit
bpwatch stop appdir_commit
#
bpwatch start anvil_appdir_commit
bpwatch start anvil_appdir_commit
if
[
"
$SLUG_ID
"
]
;
then
deep-mv
$TMP_APP_DIR
$APP_DIR
fi
#
bpwatch stop anvil_appdir_commit
#
bpwatch stop compile
bpwatch stop anvil_appdir_commit
bpwatch stop compile
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment