-
Notifications
You must be signed in to change notification settings - Fork 97
/
Makefile
114 lines (93 loc) · 3.37 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
export GO111MODULE=off
export GOPROXY=https://proxy.golang.org
PYTHON ?= $(shell command -v python3 2>/dev/null || command -v python || which python3)
DESTDIR ?= /
DESTDIR ?=
EPOCH_TEST_COMMIT ?= $(shell git merge-base $${DEST_BRANCH:-main} HEAD)
HEAD ?= HEAD
export PODMAN_VERSION ?= "5.3.0"
.PHONY: podman
podman:
rm dist/* || :
$(PYTHON) -m pip install --user -r requirements.txt
PODMAN_VERSION=$(PODMAN_VERSION) \
$(PYTHON) setup.py sdist bdist bdist_wheel
.PHONY: lint
lint: tox
$(PYTHON) -m tox -e black,pylint
.PHONY: tests
tests: tox
# see tox.ini for environment variable settings
$(PYTHON) -m tox -e coverage,py39,py310,py311,py312,py313
.PHONY: unittest
unittest:
coverage run -m unittest discover -s podman/tests/unit
coverage report -m --skip-covered --fail-under=80 --omit=./podman/tests/* --omit=.tox/* --omit=/usr/lib/*
.PHONY: integration
integration:
coverage run -m unittest discover -s podman/tests/integration
coverage report -m --skip-covered --fail-under=80 --omit=./podman/tests/* --omit=.tox/* --omit=/usr/lib/*
.PHONY: tox
tox:
ifeq (, $(shell which dnf))
else
-dnf install -y python3 python3.9 python3.10 python3.11 python3.12 python3.13
endif
# ensure tox is available. It will take care of other testing requirements
$(PYTHON) -m pip install --user tox
.PHONY: test-release
test-release: SOURCE = $(shell find dist -regex '.*/podman-[0-9][0-9\.]*.tar.gz' -print)
test-release:
twine upload --verbose -r testpypi dist/*whl $(SOURCE)
# pip install -i https://test.pypi.org/simple/ podman
.PHONY: release
release: SOURCE = $(shell find dist -regex '.*/podman-[0-9][0-9\.]*.tar.gz' -print)
release:
twine upload --verbose dist/*whl $(SOURCE)
# pip install podman
.PHONY: docs
docs:
sphinx-apidoc --separate --no-toc --force --templatedir docs/source/_templates/apidoc \
-o docs/source/ podman podman/tests
# HARD CODED COMMAND from readthedocs! We must conform!
# -T : traceback
# -E : do not use saved environment, always read all files
# -W : warnings reported as errors then --keep-going when getting warnings
# -b html : build html
# -d : path for cached environment and doctree files
# -D language=en : define language as en
# . : source directory
# _build/html : target
cd docs/source && python3 -m sphinx -T -E -W --keep-going -b html -d _build/doctrees -D language=en . _build/html
.PHONY: rpm
rpm: ## Build rpm packages
rpkg local
# .PHONY: install
HEAD ?= HEAD
# install:
# $(PYTHON) setup.py install --root ${DESTDIR}
# .PHONY: upload
# upload: clean
# PODMAN_VERSION=$(PODMAN_VERSION) $(PYTHON) setup.py sdist bdist_wheel
# twine check dist/*
# twine upload --verbose dist/*
# twine upload --verbose dist/*
.PHONY: clobber
clobber: uninstall clean
.PHONY: uninstall
uninstall:
$(PYTHON) -m pip uninstall --yes podman ||:
.PHONY: clean
clean:
rm -rf podman_py.egg-info dist build/*
find . -depth -name __pycache__ -exec rm -rf {} \;
find . -depth -name \*.pyc -exec rm -f {} \;
$(PYTHON) ./setup.py clean --all
.PHONY: validate
validate: .gitvalidation lint
.PHONY: .gitvalidation
.gitvalidation:
# I have no great ideas on how to install/check for git-validation
@echo "Validating vs commit '$(call err_if_empty,EPOCH_TEST_COMMIT)'"
GIT_CHECK_EXCLUDE="./vendor:docs/make.bat" git-validation -run DCO,short-subject,dangling-whitespace -range $(EPOCH_TEST_COMMIT)..$(HEAD)