mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 15:00:19 +00:00
5f6941f04a
Mercurial is installed in the stack image for all stacks, so the pip install of packages from Mercurial VCS URLs works without the need for the buildpack to install it itself. See: https://github.com/heroku/stack-images/pull/141 https://github.com/heroku/stack-images/search?q=mercurial Closes @W-7906950@.
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/gdal bin/steps/geo-libs 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
|