forked from pykickstart/pykickstart
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
137 lines (113 loc) · 5.26 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
PKGNAME=pykickstart
SPECFILE=$(PKGNAME).spec
VERSION=$(shell awk '/Version:/ { print $$2 }' $(SPECFILE))
RELEASE=$(shell awk '/Release:/ { print $$2 }' $(SPECFILE) | sed -e 's|%.*$$||g')
RC_RELEASE ?= $(shell date -u +0.1.%Y%m%d%H%M%S)
TAG=r$(VERSION)-$(RELEASE)
ZANATA_PULL_ARGS = --transdir ./po/
ZANATA_PUSH_ARGS = --srcdir ./po/ --push-type source --force
MANDIR=/usr/share/man
PREFIX=/usr
NOSEARGS=-s -v -I __init__.py -I baseclass.py tests/*py tests/commands/*py tests/parser/*py
PYTHON?=python
COVERAGE?=coverage
ifeq ($(PYTHON),python3)
COVERAGE=coverage3
endif
MOCKCHROOT ?= fedora-rawhide-$(shell uname -m)
all:
$(MAKE) -C po
po-pull:
@which zanata || (echo "*** Please install zanata (zanata-python-client) ***"; exit 2)
zanata pull $(ZANATA_PULL_ARGS)
po-empty:
for lingua in $$(gawk 'match($$0, /locale>(.*)<\/locale/, ary) {print ary[1]}' ./zanata.xml) ; do \
[ -f ./po/$$lingua.po ] || \
msginit -i ./po/$(PKGNAME).pot -o ./po/$$lingua.po --no-translator || \
exit 1 ; \
done
docs:
curl -A "programmers-guide" -o docs/programmers-guide "https://fedoraproject.org/w/index.php?title=PykickstartIntro&action=raw"
check:
@echo "*** Running pylint to verify source ***"
PYTHONPATH=. tests/pylint/runpylint.py
test:
@which nosetests || (echo "*** Please install nosetest (python-nose) ***"; exit 2)
@echo "*** Running unittests ***"
PYTHONPATH=. $(PYTHON) -m nose --processes=-1 $(NOSEARGS)
coverage:
@which $(COVERAGE) || (echo "*** Please install coverage (python-coverage) ***"; exit 2)
@echo "*** Running unittests with coverage ***"
PYTHONPATH=. $(PYTHON) -m nose --with-coverage --cover-erase --cover-branches --cover-package=pykickstart $(NOSEARGS)
$(COVERAGE) report > coverage-report.log
clean:
-rm *.tar.gz pykickstart/*.pyc pykickstart/*/*.pyc tests/*.pyc tests/*/*.pyc docs/programmers-guide
$(MAKE) -C po clean
$(PYTHON) setup.py -q clean --all
install:
$(PYTHON) setup.py install --root=$(DESTDIR)
$(MAKE) -C po install
tag:
git tag -a -m "Tag as $(TAG)" -f $(TAG)
@echo "Tagged as $(TAG)"
archive: check test tag docs
git archive --format=tar --prefix=$(PKGNAME)-$(VERSION)/ $(TAG) > $(PKGNAME)-$(VERSION).tar
mkdir -p $(PKGNAME)-$(VERSION)
cp -r po $(PKGNAME)-$(VERSION)/po/
mkdir -p $(PKGNAME)-$(VERSION)/docs/
cp docs/kickstart-docs.rst $(PKGNAME)-$(VERSION)/docs/
cp docs/programmers-guide $(PKGNAME)-$(VERSION)/docs/
tar -rf $(PKGNAME)-$(VERSION).tar $(PKGNAME)-$(VERSION)
gzip -9 $(PKGNAME)-$(VERSION).tar
rm -rf $(PKGNAME)-$(VERSION)
git checkout -- po/$(PKGNAME).pot
@echo "The archive is in $(PKGNAME)-$(VERSION).tar.gz"
local: docs po-pull
@rm -rf $(PKGNAME)-$(VERSION).tar.gz
@rm -rf /tmp/$(PKGNAME)-$(VERSION) /tmp/$(PKGNAME)
@dir=$$PWD; cp -a $$dir /tmp/$(PKGNAME)-$(VERSION)
@cd /tmp/$(PKGNAME)-$(VERSION) ; $(PYTHON) setup.py -q sdist
@cp /tmp/$(PKGNAME)-$(VERSION)/dist/$(PKGNAME)-$(VERSION).tar.gz .
@rm -rf /tmp/$(PKGNAME)-$(VERSION)
@echo "The archive is in $(PKGNAME)-$(VERSION).tar.gz"
rpmlog:
@git log --pretty="format:- %s (%ae)" $(TAG).. |sed -e 's/@.*)/)/' | grep -v "Merge pull request"
bumpver: po-pull
@NEWSUBVER=$$((`echo $(VERSION) |cut -d . -f 2` + 1)) ; \
NEWVERSION=`echo $(VERSION).$$NEWSUBVER |cut -d . -f 1,3` ; \
DATELINE="* `date "+%a %b %d %Y"` `git config user.name` <`git config user.email`> - $$NEWVERSION-1" ; \
cl=`grep -n %changelog $(SPECFILE) |cut -d : -f 1` ; \
tail --lines=+$$(($$cl + 1)) $(SPECFILE) > speclog ; \
(head -n $$cl $(SPECFILE) ; echo "$$DATELINE" ; make --quiet rpmlog 2>/dev/null ; echo ""; cat speclog) > $(SPECFILE).new ; \
mv $(SPECFILE).new $(SPECFILE) ; rm -f speclog ; \
sed -i "s/Version: $(VERSION)/Version: $$NEWVERSION/" $(SPECFILE) ; \
sed -i "s/version='$(VERSION)'/version='$$NEWVERSION'/" setup.py ; \
make -C po $(PKGNAME).pot ; \
zanata push $(TX_PUSH_ARGS)
scratch-bumpver: po-empty
@NEWSUBVER=$$((`echo $(VERSION) |cut -d . -f 2` + 1)) ; \
NEWVERSION=`echo $(VERSION).$$NEWSUBVER |cut -d . -f 1,3` ; \
DATELINE="* `date "+%a %b %d %Y"` `git config user.name` <`git config user.email`> - $$NEWVERSION-$(RC_RELEASE)" ; \
cl=`grep -n %changelog $(SPECFILE) |cut -d : -f 1` ; \
tail --lines=+$$(($$cl + 1)) $(SPECFILE) > speclog ; \
(head -n $$cl $(SPECFILE) ; echo "$$DATELINE" ; make --quiet rpmlog 2>/dev/null ; echo ""; cat speclog) > $(SPECFILE).new ; \
mv $(SPECFILE).new $(SPECFILE) ; rm -f speclog ; \
sed -i "s/Version: $(VERSION)/Version: $$NEWVERSION/" $(SPECFILE) ; \
sed -i "s/Release: $(RELEASE)/Release: $(RC_RELEASE)/" $(SPECFILE) ; \
sed -i "s/version='$(VERSION)'/version='$$NEWVERSION'/" setup.py ; \
make -C po $(PKGNAME).pot
scratch: docs po-empty
@rm -rf $(PKGNAME)-$(VERSION).tar.gz
@rm -rf /tmp/$(PKGNAME)-$(VERSION) /tmp/$(PKGNAME)
@dir=$$PWD; cp -a $$dir /tmp/$(PKGNAME)-$(VERSION)
@cd /tmp/$(PKGNAME)-$(VERSION) ; $(PYTHON) setup.py -q sdist
@cp /tmp/$(PKGNAME)-$(VERSION)/dist/$(PKGNAME)-$(VERSION).tar.gz .
@rm -rf /tmp/$(PKGNAME)-$(VERSION)
@echo "The archive is in $(PKGNAME)-$(VERSION).tar.gz"
rc-release: scratch-bumpver scratch
mock -r $(MOCKCHROOT) --scrub all || exit 1
mock -r $(MOCKCHROOT) --buildsrpm --spec ./$(SPECFILE) --sources . --resultdir $(PWD) || exit 1
mock -r $(MOCKCHROOT) --rebuild *src.rpm --resultdir $(PWD) || exit 1
ci:
$(MAKE) PYTHON=python3 check coverage
.PHONY: check clean install tag archive local docs