Makefile 5.8 KB
Newer Older
1 2 3
#
# NOTE: to build Avocado RPM packages extra deps not present out of the box
# are necessary. These packages are currently hosted at:
4 5 6 7
#
# https://repos-avocadoproject.rhcloud.com/static/avocado-fedora.repo
# or
# https://repos-avocadoproject.rhcloud.com/static/avocado-el.repo
8 9 10 11 12 13
#
# 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)
14
PYTHON26=$(shell $(PYTHON) -V 2>&1 | grep 2.6 -q && echo true || echo false)
15
VERSION=$(shell $(PYTHON) $(CURDIR)/avocado/core/version.py)
16 17 18
DESTDIR=/
BUILDIR=$(CURDIR)/debian/avocado
PROJECT=avocado
L
Lukáš Doktor 已提交
19 20
AVOCADO_DIRNAME=$(shell echo $${PWD\#\#*/})
AVOCADO_PLUGINS=$(filter-out ../$(AVOCADO_DIRNAME), $(wildcard ../*))
21 22 23 24 25
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)
26 27

all:
28
	@echo
C
Cleber Rosa 已提交
29
	@echo "Development related targets:"
30
	@echo "check:      Runs tree static check, unittests and functional tests"
31
	@echo "develop:    Runs 'python setup.py --develop on this tree alone"
32 33 34
	@echo "link:       Runs 'python setup.py --develop' in all subprojects and links the needed resources"
	@echo "clean:      Get rid of scratch, byte files and removes the links to other subprojects"
	@echo "selfcheck:  Runs tree static check, unittests and functional tests using Avocado itself"
C
Cleber Rosa 已提交
35
	@echo
36 37 38 39
	@echo "Package requirements related targets"
	@echo "requirements:            Install runtime requirements"
	@echo "requirements-selftests:  Install runtime and selftests requirements"
	@echo
40 41 42 43 44 45 46 47 48 49 50 51 52
	@echo "Platform independent distribution/installtion related targets:"
	@echo "source:   Create source package"
	@echo "install:  Install on local system"
	@echo "man:      Generate the avocado man page"
	@echo
	@echo "RPM related targets:"
	@echo "srpm:  Generate a source RPM package (.srpm)"
	@echo "rpm:   Generate binary RPMs"
	@echo
	@echo "Debian related targets:"
	@echo "deb:      Generate both source and binary debian packages"
	@echo "deb-src:  Generate a source debian package"
	@echo "deb-bin:  Generate a binary debian package"
C
Cleber Rosa 已提交
53
	@echo
54
	@echo "Release related targets:"
C
Cleber Rosa 已提交
55 56 57
	@echo "source-release:  Create source package for the latest tagged release"
	@echo "srpm-release:    Generate a source RPM package (.srpm) for the latest tagged release"
	@echo "rpm-release:     Generate binary RPMs for the latest tagged release"
58
	@echo
59 60 61 62

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

64
source-release: clean
65
	if test ! -d SOURCES; then mkdir SOURCES; fi
66
	git archive --prefix="avocado-$(RELEASE_COMMIT)/" -o "SOURCES/avocado-$(VERSION)-$(RELEASE_SHORT_COMMIT).tar.gz" $(VERSION)
67 68 69 70

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

C
Cleber Rosa 已提交
71
deb-prepare-source:
72 73
	# build the source package in the parent directory
	# then rename it to project_version.orig.tar.gz
74
	dch -D "vivid" -M -v "$(VERSION)" "Automated (make builddeb) build."
75
	$(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../
76 77
	rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../*

C
Cleber Rosa 已提交
78
deb-src: deb-prepare-source
79
	# build the source package
80
	dpkg-buildpackage -S -elookkas@gmail.com -rfakeroot
81

C
Cleber Rosa 已提交
82
deb-bin: deb-prepare-source
83 84 85
	# build binary package
	dpkg-buildpackage -b -rfakeroot

C
Cleber Rosa 已提交
86
deb: deb-prepare-source
87 88 89
	# build both source and binary packages
	dpkg-buildpackage -i -I -rfakeroot

90 91 92 93 94 95 96 97 98 99 100
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 已提交
101

102 103 104
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
105

106 107
clean:
	$(PYTHON) setup.py clean
108
	$(MAKE) -f $(CURDIR)/debian/rules clean || true
109
	rm -rf build/ MANIFEST BUILD BUILDROOT SPECS RPMS SRPMS SOURCES
110
	rm -f man/avocado.1
111
	rm -f man/avocado-rest-client.1
112
	rm -rf docs/build
113
	find docs/source/api/ -name '*.rst' -delete
114
	for MAKEFILE in $(AVOCADO_PLUGINS);\
L
Lukáš Doktor 已提交
115
		do AVOCADO_DIRNAME=$(AVOCADO_DIRNAME) make -C $$MAKEFILE unlink &>/dev/null && echo ">> UNLINK $$MAKEFILE" || echo ">> SKIP $$MAKEFILE";\
116
	done
117
	$(PYTHON) setup.py develop --uninstall $(shell $(PYTHON26) || echo --user)
118
	rm -rf avocado.egg-info
119 120
	rm -rf /var/tmp/avocado*
	rm -rf /tmp/avocado*
121
	find . -name '*.pyc' -delete
122

123
requirements:
L
Lukáš Doktor 已提交
124
	- pip install "pip>=6.0.1"
125
	- pip install -r requirements.txt
126

127
requirements-selftests: requirements
128
	- pip install -r requirements-selftests.txt
129

130 131 132
smokecheck:
	./scripts/avocado run passtest

133
check: clean develop check_cyclical modules_boundaries
134
	selftests/checkall
135
	selftests/check_tmp_dirs
136

137 138 139 140
selfcheck: clean check_cyclical modules_boundaries
	AVOCADO_SELF_CHECK=1 selftests/checkall
	selftests/check_tmp_dirs

141 142 143
check_cyclical:
	selftests/cyclical_deps avocado

144 145 146
modules_boundaries:
	selftests/modules_boundaries

147
develop:
148
	$(PYTHON) setup.py develop $(shell $(PYTHON26) || echo --user)
149 150

link: develop
151
	for MAKEFILE in $(AVOCADO_PLUGINS);\
L
Lukáš Doktor 已提交
152
		do AVOCADO_DIRNAME=$(AVOCADO_DIRNAME) make -C $$MAKEFILE link &>/dev/null && echo ">> LINK $$MAKEFILE" || echo ">> SKIP $$MAKEFILE";\
153
	done
C
Cleber Rosa 已提交
154

155
man: man/avocado.1 man/avocado-rest-client.1
156

157 158 159 160 161
.PHONY: source install clean check link

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