From 395c18e8feff6ad020d1a8abfe2c013ab0c96211 Mon Sep 17 00:00:00 2001 From: Noah Zoschke Date: Fri, 4 Nov 2011 09:47:06 -0700 Subject: [PATCH 1/6] whitespace => indent function --- bin/compile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/compile b/bin/compile index 11a3716..ecb9109 100755 --- a/bin/compile +++ b/bin/compile @@ -48,7 +48,7 @@ if [ "$NAME" = "Python/Django" ]; then SETTINGS_FILE=$(ls **/settings.py | head -1) PROJECT=$(dirname $SETTINGS_FILE) - echo " Injecting code into $SETTINGS_FILE to read from DATABASE_URL" + echo "Injecting code into $SETTINGS_FILE to read from DATABASE_URL" | indent cat >>$SETTINGS_FILE < Date: Fri, 4 Nov 2011 09:47:32 -0700 Subject: [PATCH 2/6] fix comment --- bin/detect | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/detect b/bin/detect index 37252b5..034e4c8 100755 --- a/bin/detect +++ b/bin/detect @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# bin/name +# bin/detect BUILD_DIR=$1 [ -f $BUILD_DIR/requirements.txt ] || exit 1 # fail fast if no requirements.txt From b1f05b93df412dba298e54315da06797b0ca73ca Mon Sep 17 00:00:00 2001 From: Noah Zoschke Date: Fri, 4 Nov 2011 09:47:47 -0700 Subject: [PATCH 3/6] dont cd --- bin/release | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bin/release b/bin/release index 7c036e2..33950ac 100755 --- a/bin/release +++ b/bin/release @@ -1,12 +1,10 @@ #!/usr/bin/env bash # bin/release -BIN_DIR=$(dirname $0) +BIN_DIR=$(cd $(dirname $0); pwd) # absolute path BUILD_DIR=$1 NAME=$($BIN_DIR/detect $BUILD_DIR) || exit 1 -cd $BUILD_DIR - cat < Date: Fri, 4 Nov 2011 10:07:02 -0700 Subject: [PATCH 4/6] bring readme in line --- Readme.md | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/Readme.md b/Readme.md index 0ed3ff5..f59fb33 100644 --- a/Readme.md +++ b/Readme.md @@ -1,21 +1,43 @@ -Python Build Pack -==================== -The Python Build Pack (PBP) is a build pack for running Python and Django -apps on Heroku. +Heroku buildpack: Python +======================== -If `requirements.txt` is present, the PBP considers the directory a Python app -with packages to install via pip. +This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpack) for Python apps. +It uses [virtualenv](http://www.virtualenv.org/) and [pip](http://www.pip-installer.org/). -Furthermore, if `${PROJECT}/settings.py` is present, the PBP considers the -directory a Python/Django app, and patches `settings.py` to parse the Heroku -DATABASE_URL config vars. It then sets default process types to use the Django -web server. +Usage +----- -External Build Pack ----------------------- -Cutting-edge development is taking place in this repo. To use this on Heroku, -set a `BUILDPACK_URL` config var with a fully authenticated URL to this repo: +Example usage: - $ heroku config:add BUILDPACK_URL=https://nzoschke:XXXXXXX@github.com/heroku/heroku-buildpack-python.git + $ ls + Procfile requirements.txt web.py -On next push, slug-compiler will use this BP instead of the built-in one. \ No newline at end of file + $ heroku create --stack cedar --buildpack git@github.com:heroku/heroku-buildpack-python.git + + $ git push heroku master + ... + -----> Heroku receiving push + -----> Fetching custom build pack... done + -----> Python app detected + -----> Preparing virtualenv version 1.6.4 + New python executable in ./bin/python + Installing setuptools............done. + Installing pip...............done. + -----> Installing dependencies using pip version 1.0.2 + Downloading/unpacking Flask==0.7.2 (from -r requirements.txt (line 1)) + Downloading/unpacking Werkzeug>=0.6.1 (from Flask==0.7.2->-r requirements.txt (line 1)) + Downloading/unpacking Jinja2>=2.4 (from Flask==0.7.2->-r requirements.txt (line 1)) + Installing collected packages: Flask, Werkzeug, Jinja2 + Successfully installed Flask Werkzeug Jinja2 + Cleaning up... + +The buildpack will detect your app as Python if it has the file `requirements.txt` in the root. It will detect your app as Python/Django if there is an additional `settings.py` in a project subdirectory. + +It will use virtualenv and pip to install your dependencies, vendoring a copy of the Python runtime into your slug. The `bin/`, `include/` and `lib/` directories will be cached between builds to allow for faster pip install time. + +Hacking +------- + +To use this buildpack, fork it on Github. Push up changes to your fork, then create a test app with `--buildpack ` and push to it. + +To change the vendored virtualenv, unpack the desired version to the `src/` folder, and update the virtualenv() function in `bin/compile` to prepend the virtualenv module directory to the path. \ No newline at end of file From 16d651ce32a9e47094fd796cf73a535d3bee1e61 Mon Sep 17 00:00:00 2001 From: Noah Zoschke Date: Fri, 4 Nov 2011 10:10:16 -0700 Subject: [PATCH 5/6] clarity about virtualenv/pip relationship --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index f59fb33..87040d3 100644 --- a/Readme.md +++ b/Readme.md @@ -40,4 +40,4 @@ Hacking To use this buildpack, fork it on Github. Push up changes to your fork, then create a test app with `--buildpack ` and push to it. -To change the vendored virtualenv, unpack the desired version to the `src/` folder, and update the virtualenv() function in `bin/compile` to prepend the virtualenv module directory to the path. \ No newline at end of file +To change the vendored virtualenv, unpack the desired version to the `src/` folder, and update the virtualenv() function in `bin/compile` to prepend the virtualenv module directory to the path. The virtualenv release vendors its own versions of pip and setuptools. From 7502ee058383b957760fd92d666ab30ebc89de51 Mon Sep 17 00:00:00 2001 From: Noah Zoschke Date: Fri, 4 Nov 2011 10:12:40 -0700 Subject: [PATCH 6/6] reference self --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 87040d3..f761e1e 100644 --- a/Readme.md +++ b/Readme.md @@ -12,7 +12,7 @@ Example usage: $ ls Procfile requirements.txt web.py - $ heroku create --stack cedar --buildpack git@github.com:heroku/heroku-buildpack-python.git + $ heroku create --stack cedar --buildpack git@github.com:nzoschke/heroku-buildpack-python.git $ git push heroku master ...