mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
f74d4db8c5
* fixed the bug for pypy-5.8.0 * enable shellcheck in makefile Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * make compile script shellcheck compatible Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * let's see what this says * fix pip installation Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck detect script * shellcheck release Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck test-compile Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck warnings/utils * updated makefile Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck collectstatic Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck cryptography Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck eggpath fixes Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck gdal * shellcheck goes-libs Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck mercurial Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * nltk shellcheck * shellcheck pip-install Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck pip-uninstall Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck pipenv Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck pylibmc Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * shellcheck python Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * update makefile Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * final update to makefile Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * fix tests Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * actually fix the tests Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * update pipenv-python-version Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * requested fixes Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * update spellcheck sources * attempted fix for shell globbing Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * further attempted fix Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * switch nltk styling Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * no more need for temp app for installing pip Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * attempt at staged build for shellcheck Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * attempted fix of travis file Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * reorder travis file * add shellcheck to install * make things clearer in travis file Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * better travis file Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * attempt at better travis file Signed-off-by: Kenneth Reitz <me@kennethreitz.org> * better travis file Signed-off-by: Kenneth Reitz <me@kennethreitz.org>
85 lines
1.8 KiB
Bash
Executable File
85 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
shopt -s extglob
|
|
shopt -s nullglob
|
|
|
|
# The standard library.
|
|
if [[ ! -f /tmp/stdlib.sh ]]; then
|
|
curl --retry 3 -s https://lang-common.s3.amazonaws.com/buildpack-stdlib/v2/stdlib.sh > /tmp/stdlib.sh
|
|
fi
|
|
# shellcheck source=/dev/null
|
|
source /tmp/stdlib.sh
|
|
|
|
if [ "$(uname)" == Darwin ]; then
|
|
sed() { command sed -l "$@"; }
|
|
else
|
|
sed() { command sed -u "$@"; }
|
|
fi
|
|
|
|
# Syntax sugar.
|
|
indent() {
|
|
sed "s/^/ /"
|
|
}
|
|
|
|
|
|
# Clean up pip output
|
|
cleanup() {
|
|
sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/No files were found to uninstall/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
|
|
}
|
|
|
|
# Buildpack Steps.
|
|
puts-step() {
|
|
echo "-----> $*"
|
|
}
|
|
|
|
# Buildpack Warnings.
|
|
puts-warn() {
|
|
echo " ! $*"
|
|
}
|
|
|
|
# Does some serious copying.
|
|
deep-cp() {
|
|
declare source="$1" target="$2"
|
|
|
|
mkdir -p "$target"
|
|
|
|
# cp doesn't like being called without source params,
|
|
# so make sure they expand to something first.
|
|
# subshell to avoid surprising caller with shopts.
|
|
(
|
|
shopt -s nullglob dotglob
|
|
set -- "$source"/!(tmp|.|..)
|
|
[[ $# == 0 ]] || cp -a "$@" "$target"
|
|
)
|
|
}
|
|
|
|
|
|
sub-env() {
|
|
|
|
WHITELIST=${2:-''}
|
|
BLACKLIST=${3:-'^(GIT_DIR|STACK|PYTHONHOME|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$'}
|
|
|
|
# Python-specific variables.
|
|
export PYHONHOME=$BUILD_DIR/.heroku/python
|
|
export PYTHONPATH=$BUILD_DIR/
|
|
|
|
(
|
|
if [ -d "$ENV_DIR" ]; then
|
|
# shellcheck disable=SC2045
|
|
for e in $(ls "$ENV_DIR"); do
|
|
echo "$e" | grep -E "$WHITELIST" | grep -qvE "$BLACKLIST" &&
|
|
export "$e=$(cat "$ENV_DIR/$e")"
|
|
:
|
|
done
|
|
fi
|
|
|
|
$1
|
|
|
|
)
|
|
}
|
|
|
|
# Measure the size of the Python installation.
|
|
measure-size() {
|
|
echo "$(du -s .heroku/python 2>/dev/null || echo 0) | awk '{print $1}')"
|
|
}
|
|
|