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 115 116 117 118 119 120 121 122 123 124 125
|
CWD=$(shell pwd)
VARIANT ?= ubuntu
PYTHON ?= python3
NUM_ITER ?= 100
distro ?= redhat
READ_VERSION=$(shell $(PYTHON) $(CWD)/tools/read-version || echo read-version-failed)
CODE_VERSION=$(shell $(PYTHON) -c "from cloudinit import version; print(version.version_string())")
GENERATOR_F=./systemd/cloud-init-generator
DS_IDENTIFY=./tools/ds-identify
BENCHMARK=./tools/benchmark.sh
all: check
check: check_version test
style-check: lint
lint:
@$(CWD)/tools/run-lint
unittest: clean_pyc
$(PYTHON) -m pytest -v tests/unittests cloudinit
render-template:
$(PYTHON) ./tools/render-template --variant=$(VARIANT) $(FILE) $(subst .tmpl,,$(FILE))
# from systemd-generator(7) regarding generators:
# "We do recommend C code however, since generators are executed
# synchronously and hence delay the entire boot if they are slow."
#
# Our generator is a shell script. Make it easy to measure the
# generator. This should be monitored for performance regressions
benchmark-generator: FILE=$(GENERATOR_F).tmpl
benchmark-generator: VARIANT="benchmark"
benchmark-generator: export ITER=$(NUM_ITER)
benchmark-generator: render-template
$(BENCHMARK) $(GENERATOR_F)
benchmark-ds-identify: export ITER=$(NUM_ITER)
benchmark-ds-identify:
$(BENCHMARK) $(DS_IDENTIFY)
ci-deps-ubuntu:
@$(PYTHON) $(CWD)/tools/read-dependencies --distro ubuntu --test-distro
ci-deps-centos:
@$(PYTHON) $(CWD)/tools/read-dependencies --distro centos --test-distro
test: unittest
check_version:
@if [ "$(READ_VERSION)" != "$(CODE_VERSION)" ]; then \
echo "Error: read-version version '$(READ_VERSION)'" \
"not equal to code version '$(CODE_VERSION)'"; \
exit 2; \
else true; fi
config/cloud.cfg:
$(PYTHON) ./tools/render-template --is-yaml config/cloud.cfg.tmpl config/cloud.cfg
clean_pyc:
@find . -type f -name "*.pyc" -delete
@find . -type d -name __pycache__ -delete
clean_pytest:
rm -rf .cache htmlcov
clean_packaging:
rm -rf srpm cloud_init.egg-info/ \
cloud-init-*.tar.gz \
cloud-init-*.tar.gz.asc \
cloud-init.dsc \
cloud-init_*.build \
cloud-init_*.buildinfo \
cloud-init_*.changes \
cloud-init_*.deb \
cloud-init_*.dsc \
cloud-init_*.orig.tar.gz \
cloud-init_*.tar.xz \
cloud-init_*.upload
clean_release:
rm -rf new-upstream-changes.txt commit.msg
clean: clean_pyc clean_pytest clean_packaging clean_release
rm -rf doc/rtd_html .tox .coverage tags $(GENERATOR_F)
rpm:
$(PYTHON) ./packages/brpm --distro=$(distro)
srpm:
$(PYTHON) ./packages/brpm --srpm --distro=$(distro)
deb:
@which debuild || \
{ echo "Missing devscripts dependency. Install with:"; \
echo sudo apt-get install devscripts; exit 1; }
$(PYTHON) ./packages/bddeb
deb-src:
@which debuild || \
{ echo "Missing devscripts dependency. Install with:"; \
echo sudo apt-get install devscripts; exit 1; }
$(PYTHON) ./packages/bddeb -S -d
doc:
tox -e doc
fmt:
tox -e do_format && tox -e check_format
fmt-tip:
tox -e do_format_tip && tox -e check_format_tip
.PHONY: all check test lint clean rpm srpm deb deb-src
.PHONY: check_version clean_pyc
.PHONY: unittest style-check render-template benchmark-generator
.PHONY: clean_pytest clean_packaging clean_release doc
|