pulumi/sdk/python/Makefile

113 lines
3.9 KiB
Makefile

PROJECT_NAME := Pulumi Python SDK
LANGHOST_PKG := github.com/pulumi/pulumi/sdk/python/cmd/pulumi-language-python/v3
VERSION := $(if ${PULUMI_VERSION},${PULUMI_VERSION},$(shell ../../scripts/pulumi-version.sh))
PYPI_VERSION := $(if ${PYPI_VERSION},${PYPI_VERSION},$(shell ../../scripts/pulumi-version.sh python))
ifeq ($(DEBUG),"true")
$(info VERSION = $(VERSION))
$(info PYPI_VERSION = $(PYPI_VERSION))
endif
PYENV := ./env
PYENVSRC := $(PYENV)/src
BLACK_FLAGS := ./lib/test ./lib/pulumi --exclude lib/pulumi/runtime/proto
PROJECT_PKGS := $(shell go list -C cmd/pulumi-language-python ./...)
include ../../build/common.mk
# Motivation: running `make TEST_ALL_DEPS= test_all` permits running
# `test_all` without the dependencies.
TEST_ALL_DEPS ?= build
ensure:: $(PYTHON).ensure .ensure.phony
.ensure.phony:
$(PYTHON) -m venv venv
. venv/*/activate && python -m pip install --upgrade pip setuptools wheel
. venv/*/activate && python -m pip install -r requirements.txt
mkdir -p $(PYENVSRC)
@touch .ensure.phony
build_package:: ensure
rm -rf $(PYENVSRC) && cp -R ./lib/. $(PYENVSRC)/
sed -i.bak 's/^VERSION = .*/VERSION = "$(PYPI_VERSION)"/g' $(PYENVSRC)/setup.py && rm $(PYENVSRC)/setup.py.bak
sed -i.bak 's/^_VERSION = .*/_VERSION = "$(VERSION)"/g' $(PYENVSRC)/pulumi/_version.py && rm $(PYENVSRC)/pulumi/_version.py.bak
cp ../../README.md $(PYENVSRC)
. venv/*/activate && cd $(PYENVSRC) && \
python setup.py build bdist_wheel --universal
. venv/*/activate && python -m pip install -e $(PYENVSRC)
build_plugin::
go install -C cmd/pulumi-language-python \
-ldflags "-X github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${VERSION}" ${LANGHOST_PKG}
build:: build_package build_plugin
lint:: ensure
. venv/*/activate && \
python -m black $(BLACK_FLAGS) --check
. venv/*/activate && \
MYPYPATH=./stubs python -m mypy ./lib/pulumi --config-file=mypy.ini
. venv/*/activate && \
python -m pylint ./lib/pulumi --rcfile=.pylintrc
. venv/*/activate && \
python -m pyright
lint_fix:: ensure
make format
make lint
format:: ensure
. venv/*/activate && \
python -m black $(BLACK_FLAGS)
install_package:: build_package
cp ./cmd/pulumi-language-python-exec "$(PULUMI_BIN)"
cp ./dist/pulumi-resource-pulumi-python "$(PULUMI_BIN)"
cp ./dist/pulumi-analyzer-policy-python "$(PULUMI_BIN)"
install_plugin:: build_plugin
GOBIN=$(PULUMI_BIN) go install -C cmd/pulumi-language-python \
-ldflags "-X github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${VERSION}" ${LANGHOST_PKG}
install:: install_package install_plugin
test_go:: $(TEST_ALL_DEPS)
@cd cmd/pulumi-language-python && \
$(GO_TEST) ${PROJECT_PKGS}
test_fast:: $(TEST_ALL_DEPS)
. venv/*/activate && ./scripts/test_fast.sh
test_auto:: $(TEST_ALL_DEPS)
. venv/*/activate && ./scripts/test_auto.sh
test_all:: test_fast test_auto test_go
dist::
go install -C cmd/pulumi-language-python \
-ldflags "-X github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${VERSION}" ${LANGHOST_PKG}
cp ./cmd/pulumi-language-python-exec "$$(go env GOPATH)"/bin/
cp ./dist/pulumi-resource-pulumi-python "$$(go env GOPATH)"/bin/
cp ./dist/pulumi-analyzer-policy-python "$$(go env GOPATH)"/bin/
brew:: BREW_VERSION := $(shell ../../scripts/get-version HEAD)
brew::
go install -C cmd/pulumi-language-python \
-ldflags "-X github.com/pulumi/pulumi/sdk/v3/go/common/version.Version=${BREW_VERSION}" ${LANGHOST_PKG}
cp ./cmd/pulumi-language-python-exec "$$(go env GOPATH)"/bin/
cp ./dist/pulumi-resource-pulumi-python "$$(go env GOPATH)"/bin/
cp ./dist/pulumi-analyzer-policy-python "$$(go env GOPATH)"/bin/
publish::
for file in ../../artifacts/sdk-python-*.whl; do \
basename=$$(basename $${file}); \
mv -vT "$${file}" "../../artifacts/$${basename##sdk-python-}"; \
done
twine upload \
-u "${PYPI_USERNAME}" -p "${PYPI_PASSWORD}" \
../../artifacts/*.whl \
--skip-existing \
--verbose