mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
42076f1bf4
The standalone Geo buildpack offers more modern GDAL/GEOS/PROJ library versions, and can be used by apps in all languages, not just Python: https://github.com/heroku/heroku-geo-buildpack As such the Python buildpack's undocumented built-in support was deprecated back in April 2020, with a scheduled removal date of 6th October 2020: https://devcenter.heroku.com/changelog-items/1759 https://help.heroku.com/D5INLB1A/python-s-build_with_geo_libraries-legacy-feature-is-now-deprecated Metrics show very few builds continuing to use the built-in support. Apps with the `BUILD_WITH_GEO_LIBRARIES` env var set will now be shown a warning directing them to the standalone buildpack, as well as apps that hit GDAL related pip install errors but aren't using the env var. This also moves us one step closer to being able to remove the vendored copy of pip-pop (which is partially broken on newer pip). Closes @W-7654424@.
59 lines
2.2 KiB
Makefile
59 lines
2.2 KiB
Makefile
# These targets are not files
|
|
.PHONY: check test builder-image buildenv deploy-runtimes tools
|
|
|
|
STACK ?= heroku-18
|
|
STACKS ?= heroku-16 heroku-18 heroku-20
|
|
TEST_CMD ?= test/run-versions && test/run-features && test/run-deps
|
|
ENV_FILE ?= builds/dockerenv.default
|
|
BUILDER_IMAGE_PREFIX := heroku-python-build
|
|
|
|
# Converts a stack name of `heroku-NN` to its build Docker image tag of `heroku/heroku:NN-build`.
|
|
STACK_IMAGE_TAG := heroku/$(subst -,:,$(STACK))-build
|
|
|
|
check:
|
|
@shellcheck -x bin/compile bin/detect bin/release bin/test-compile bin/utils bin/warnings bin/default_pythons
|
|
@shellcheck -x bin/steps/collectstatic bin/steps/eggpath-fix bin/steps/eggpath-fix2 bin/steps/nltk bin/steps/pip-install bin/steps/pip-uninstall bin/steps/pipenv bin/steps/pipenv-python-version bin/steps/python
|
|
@shellcheck -x bin/steps/hooks/*
|
|
|
|
test:
|
|
@echo "Running tests using: STACK=$(STACK) TEST_CMD='$(TEST_CMD)'"
|
|
@echo
|
|
@docker run --rm -it -v $(PWD):/buildpack:ro -e "STACK=$(STACK)" "$(STACK_IMAGE_TAG)" bash -c 'cp -r /buildpack /buildpack_test && cd /buildpack_test && $(TEST_CMD)'
|
|
@echo
|
|
|
|
builder-image:
|
|
@echo "Generating binary builder image for $(STACK)..."
|
|
@echo
|
|
@docker build --pull -f builds/$(STACK).Dockerfile -t "$(BUILDER_IMAGE_PREFIX)-$(STACK)" .
|
|
@echo
|
|
|
|
buildenv: builder-image
|
|
@echo "Starting build environment for $(STACK)..."
|
|
@echo
|
|
@echo "Usage..."
|
|
@echo
|
|
@echo " $$ bob build runtimes/python-X.Y.Z"
|
|
@echo
|
|
@docker run --rm -it --env-file="$(ENV_FILE)" -v $(PWD)/builds:/app/builds "$(BUILDER_IMAGE_PREFIX)-$(STACK)" bash
|
|
|
|
deploy-runtimes:
|
|
ifndef RUNTIMES
|
|
$(error No runtimes specified! Use: "make deploy-runtimes RUNTIMES='python-X.Y.Z ...' [STACKS='heroku-18 ...'] [ENV_FILE=...]")
|
|
endif
|
|
@echo "Using: RUNTIMES='$(RUNTIMES)' STACKS='$(STACKS)' ENV_FILE='$(ENV_FILE)'"
|
|
@echo
|
|
@set -eu; for stack in $(STACKS); do \
|
|
$(MAKE) builder-image STACK=$${stack}; \
|
|
for runtime in $(RUNTIMES); do \
|
|
echo "Generating/deploying $${runtime} for $${stack}..."; \
|
|
echo; \
|
|
docker run --rm -it --env-file="$(ENV_FILE)" "$(BUILDER_IMAGE_PREFIX)-$${stack}" bob deploy "runtimes/$${runtime}"; \
|
|
echo; \
|
|
done; \
|
|
done
|
|
|
|
tools:
|
|
git clone https://github.com/kennethreitz/pip-pop.git
|
|
mv pip-pop/bin/* vendor/pip-pop/
|
|
rm -rf pip-pop
|