Compare commits

..

6 Commits

Author SHA1 Message Date
kennethreitz 17f992a106 Improvements (#471)
* only do this on heroku-16

* history

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* code comment

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>
2017-09-08 12:02:03 -04:00
kennethreitz 24895082d3 update the changelog (#470) 2017-09-08 11:56:35 -04:00
Zach McCormick 002780c2d9 Adding step to copy libjasper to vendor lib directory so that libgdal will load (#449) 2017-09-08 11:43:28 -04:00
Ed Morley df7f8f3507 Skip vendoring libffi/libmemcached on Heroku-16 (#465)
* Add a test for the cryptography (cffi) compile step

Since it's currently untested.

* Skip vendoring libffi/libmemcached on Heroku-16

Unlike for Cedar-14, Heroku-16 comes with these packages pre-installed:
https://github.com/heroku/stack-images/blob/5a341970cfc1f201014262ad64c3b3e47514f663/heroku-16/installed-packages.txt#L111
https://github.com/heroku/stack-images/blob/5a341970cfc1f201014262ad64c3b3e47514f663/heroku-16/installed-packages.txt#L172

As such the build scripts had already been made a no-op on Heroku-16:
https://github.com/heroku/heroku-buildpack-python/blob/fedae5ceda5a42f594012f911c3808dd5dc6fd9e/builds/libraries/vendor/libffi#L6-L9
https://github.com/heroku/heroku-buildpack-python/blob/fedae5ceda5a42f594012f911c3808dd5dc6fd9e/builds/libraries/vendor/libmemcache#L6-L9

...meaning the Heroku-16 archives for them on S3 contain zero files.

However until now, the buildpack was still unnecessarily downloading
and extracting these empty archives - and not just on the first compile
(like on cedar-14), but every compile since the directory check will
never succeed.
2017-09-08 11:27:46 -04:00
Ed Morley 312a468cce Correct changelog entries for v108, v109 and v110 (#469)
Found by diffing the published buildpack archives and looking at the
git log to see what changed. It looks like the v108 entry was
accidentally added in #405, when the release being published there
was actually v107. The setuptools update mentioned there never
happened, since the `SETUPTOOLS_VERSION` variable was found to be
unused and instead removed.
2017-09-06 12:35:17 -04:00
kennethreitz d4b8c2aeda Undo sub_env for pip install, it was a terrible idea (#467)
* fixed the bug for pypy-5.8.0

* update changelog

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* blacklist for old apps

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* only blacklist pythonhome/path

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* updated changelog

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* be more agressive with blacklisting

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* sub_env was a terrible idea

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>

* changelog update

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>
2017-09-05 11:11:59 -04:00
7 changed files with 48 additions and 11 deletions
+23 -6
View File
@@ -1,5 +1,22 @@
# Python Buildpack Changelog
# 117
Bug fix.
# 116
Vendoring improvements.
- Geos libraries should work on Heroku-16 now.
- The libffi/libmemcached vendoring step is now skipped on Heroku-16 (since they are installed in the base image).
# 115
Revert a pull request.
- No longer using `sub_env` for `pip install` step.
# 114
- Bugfixes.
@@ -8,7 +25,7 @@ Blacklisting `PYTHONHOME` and `PYTHONPATH` for older apps. Upgrades to nltk supp
# 113
- Updates to Pipenv support.
Updates to Pipenv support.
# 112
@@ -22,17 +39,17 @@ Linting, bugfixes.
# 110
Update default Python to 3.6.2.
# 109
Update Default Python to 3.6.1, bugfixes.
- Fixed automatic pip uninstall of dependencies removed from requirements.txt.
# 109
Fix output for collectstatic step.
# 108
Updated setuptools.
Fix output for collectstatic step.
# 107
+6 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# This script serves as the Cryptography build step of the
# This script serves as the cffi build step of the
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
# compiler.
#
@@ -9,6 +9,11 @@
#
# This script is invoked by [`bin/compile`](/).
if [[ "$STACK" == "heroku-16" ]]; then
# libffi is pre-installed in the stack image so there is no need to vendor it.
return 0
fi
# The location of the pre-compiled libffi binary.
VENDORED_LIBFFI="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/libffi.tar.gz"
+6
View File
@@ -30,6 +30,12 @@ if [[ "$BUILD_WITH_GEO_LIBRARIES" ]]; then
curl "$VENDORED_GDAL" -s | tar zxv -C .heroku/vendor &> /dev/null
curl "$VENDORED_GEOS" -s | tar zxv -C .heroku/vendor &> /dev/null
curl "$VENDORED_PROJ" -s | tar zxv -C .heroku/vendor &> /dev/null
# Copy libjasper from build image to slug.
if [[ "$STACK" == "heroku-16" ]]; then
cp /usr/lib/x86_64-linux-gnu/libjasper.so* ".heroku/vendor/lib/."
fi
fi
GDAL=$(pwd)/vendor
+1 -3
View File
@@ -6,10 +6,8 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
puts-step "Installing requirements with pip"
set +e
BLACKLIST='PYTHONHOME|PYTHONPATH'
export BLACKLIST
sub_env /app/.heroku/python/bin/pip install -r "$BUILD_DIR/requirements.txt" --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee "$WARNINGS_LOG" | cleanup | indent
/app/.heroku/python/bin/pip install -r "$BUILD_DIR/requirements.txt" --exists-action=w --src=/app/.heroku/src --disable-pip-version-check --no-cache-dir 2>&1 | tee "$WARNINGS_LOG" | cleanup | indent
PIP_STATUS="${PIPESTATUS[0]}"
set -e
+5 -1
View File
@@ -9,6 +9,11 @@
#
# This script is invoked by [`bin/compile`](/).
if [[ "$STACK" == "heroku-16" ]]; then
# libmemcached is pre-installed in the stack image so there is no need to vendor it.
return 0
fi
# The location of the pre-compiled libmemcached binary.
VENDORED_MEMCACHED="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor/libmemcache.tar.gz"
@@ -16,7 +21,6 @@ VENDORED_MEMCACHED="https://lang-python.s3.amazonaws.com/$STACK/libraries/vendor
# shellcheck source=bin/utils
source "$BIN_DIR/utils"
# If pylibmc exists within requirements, use vendored libmemcached.
if (pip-grep -s requirements.txt pylibmc &> /dev/null) then
+1
View File
@@ -0,0 +1 @@
cffi
+6
View File
@@ -47,6 +47,12 @@ testPsycopg2() {
assertCapturedSuccess
}
testCffi() {
compile "cffi"
assertCaptured "cffi"
assertCapturedSuccess
}
testPylibmc() {
compile "pylibmc"
assertCaptured "pylibmc"