Makefile 4.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
#
# NOTE: to build Avocado RPM packages extra deps not present out of the box
# are necessary. These packages are currently hosted at:
# https://copr.fedoraproject.org/coprs/lmr/Autotest/
#
# Since the RPM build steps are based on mock, edit your chroot config
# file (/etc/mock/<your-config>.cnf) and add the COPR repo configuration there.
#

PYTHON=$(shell which python)
VERSION=$(shell $(PYTHON) $(CURDIR)/avocado/core/version.py)
12 13 14
DESTDIR=/
BUILDIR=$(CURDIR)/debian/avocado
PROJECT=avocado
L
Lukáš Doktor 已提交
15 16
AVOCADO_DIRNAME=$(shell echo $${PWD\#\#*/})
AVOCADO_PLUGINS=$(filter-out ../$(AVOCADO_DIRNAME), $(wildcard ../*))
17 18 19 20 21
RELEASE_COMMIT=$(shell git log --pretty=format:'%H' -n 1 $(VERSION))
RELEASE_SHORT_COMMIT=$(shell git log --pretty=format:'%h' -n 1 $(VERSION))

COMMIT=$(shell git log --pretty=format:'%H' -n 1)
SHORT_COMMIT=$(shell git log --pretty=format:'%h' -n 1)
22 23 24 25 26 27 28

all:
	@echo "make source - Create source package"
	@echo "make install - Install on local system"
	@echo "make build-deb-src - Generate a source debian package"
	@echo "make build-deb-bin - Generate a binary debian package"
	@echo "make build-deb-all - Generate both source and binary debian packages"
29 30
	@echo "make srpm - Generate a source RPM package (.srpm)"
	@echo "make rpm  - Generate binary RPMs"
31
	@echo "make man - Generate the avocado man page"
32
	@echo "make check - Runs tree static check, unittests and functional tests"
33
	@echo "make clean - Get rid of scratch and byte files"
34 35 36 37 38 39 40 41
	@echo "Release related targets:"
	@echo "make source-release - Create source package for the latest tagged release"
	@echo "make srpm-release - Generate a source RPM package (.srpm) for the latest tagged release"
	@echo "make rpm-release  - Generate binary RPMs for the latest tagged release"

source: clean
	if test ! -d SOURCES; then mkdir SOURCES; fi
	git archive --prefix="avocado-$(COMMIT)/" -o "SOURCES/avocado-$(VERSION)-$(SHORT_COMMIT).tar.gz" HEAD
42

43
source-release: clean
44
	if test ! -d SOURCES; then mkdir SOURCES; fi
45
	git archive --prefix="avocado-$(RELEASE_COMMIT)/" -o "SOURCES/avocado-$(VERSION)-$(RELEASE_SHORT_COMMIT).tar.gz" $(VERSION)
46 47 48 49 50 51 52

install:
	$(PYTHON) setup.py install --root $(DESTDIR) $(COMPILE)

prepare-source:
	# build the source package in the parent directory
	# then rename it to project_version.orig.tar.gz
53
	dch -D "vivid" -M -v "$(VERSION)" "Automated (make builddeb) build."
54
	$(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../
55 56 57 58
	rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../*

build-deb-src: prepare-source
	# build the source package
59
	dpkg-buildpackage -S -elookkas@gmail.com -rfakeroot
60 61 62 63 64 65 66 67 68

build-deb-bin: prepare-source
	# build binary package
	dpkg-buildpackage -b -rfakeroot

build-deb-all: prepare-source
	# build both source and binary packages
	dpkg-buildpackage -i -I -rfakeroot

69 70 71 72 73 74 75 76 77 78 79
srpm: source
	if test ! -d BUILD/SRPM; then mkdir -p BUILD/SRPM; fi
	mock --resultdir BUILD/SRPM -D "commit $(COMMIT)" --buildsrpm --spec avocado.spec --sources SOURCES

rpm: srpm
	if test ! -d BUILD/RPM; then mkdir -p BUILD/RPM; fi
	mock --resultdir BUILD/RPM -D "commit $(COMMIT)" --rebuild BUILD/SRPM/avocado-$(VERSION)-*.src.rpm

srpm-release: source-release
	if test ! -d BUILD/SRPM; then mkdir -p BUILD/SRPM; fi
	mock --resultdir BUILD/SRPM -D "commit $(RELEASE_COMMIT)" --buildsrpm --spec avocado.spec --sources SOURCES
C
Cleber Rosa 已提交
80

81 82 83
rpm-release: srpm-release
	if test ! -d BUILD/RPM; then mkdir -p BUILD/RPM; fi
	mock --resultdir BUILD/RPM -D "commit $(RELEASE_COMMIT)" --rebuild BUILD/SRPM/avocado-$(VERSION)-*.src.rpm
84

85 86
clean:
	$(PYTHON) setup.py clean
87
	$(MAKE) -f $(CURDIR)/debian/rules clean || true
88
	rm -rf build/ MANIFEST BUILD BUILDROOT SPECS RPMS SRPMS SOURCES
89
	find . -name '*.pyc' -delete
90
	rm -f man/avocado.1
91
	rm -f man/avocado-rest-client.1
92
	rm -rf docs/build
93
	find docs/source/api/ -name '*.rst' -delete
94
	for MAKEFILE in $(AVOCADO_PLUGINS);\
L
Lukáš Doktor 已提交
95
		do AVOCADO_DIRNAME=$(AVOCADO_DIRNAME) make -C $$MAKEFILE unlink &>/dev/null && echo ">> UNLINK $$MAKEFILE" || echo ">> SKIP $$MAKEFILE";\
96
	done
97

98 99 100
install-requirements-all: install-requirements install-requirements-selftests

install-requirements:
101
	grep -v '^#' requirements.txt | xargs -n 1 pip install --upgrade
102
	if $$(python -V 2>&1 | grep 2.6 -q); then grep -v '^#' requirements-python26.txt | xargs -n 1 pip install --upgrade; fi
103 104

install-requirements-selftests:
105
	grep -v '^#' requirements-selftests.txt | xargs -n 1 pip install --upgrade
106

107
check: clean check_cyclical modules_boundaries
108 109
	rm -rf /var/tmp/avocado*
	rm -rf /tmp/avocado*
110
	selftests/checkall
111
	selftests/check_tmp_dirs
112

113 114 115
check_cyclical:
	selftests/cyclical_deps avocado

116 117 118
modules_boundaries:
	selftests/modules_boundaries

119 120
link:
	for MAKEFILE in $(AVOCADO_PLUGINS);\
L
Lukáš Doktor 已提交
121
		do AVOCADO_DIRNAME=$(AVOCADO_DIRNAME) make -C $$MAKEFILE link &>/dev/null && echo ">> LINK $$MAKEFILE" || echo ">> SKIP $$MAKEFILE";\
122
	done
C
Cleber Rosa 已提交
123

124
man: man/avocado.1 man/avocado-rest-client.1
125

126 127 128 129 130
.PHONY: source install clean check link

# implicit rule/recipe for man page creation
%.1: %.rst
	rst2man $< $@