-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
126 lines (89 loc) · 2.72 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
#!/usr/bin/make
## variables
# metadata
PRODUCT = pyxsltp
VERSION = $(shell $(PYTHON) setup.py --version)
DATE = $(shell dev/date.sh)
REVISION = $(shell dev/revstr.sh)
PACKAGE = $(PRODUCT)
DEBREV = $(shell head -n 1 debian/changelog \
| cut -d' ' -f 2 | sed 's/(\(.*\)-\(.*\))/\2/')
# programs
PYTHON = python -B -Wall
TAR_XVCS = tar --exclude=".svn" --exclude=".git" --exclude=".hg"
PBUILDER = cowbuilder
PBOPTS = --hookdir=pbuilder-hooks \
--bindmounts "/var/cache/pbuilder/result"
DEBUILDOPTS=
# directories and files
DESTDIR = /usr/local
bindir = $(DESTDIR)/bin
datadir = $(DESTDIR)/share
TESTLOGS = $(foreach t,\
$(wildcard test/test*.py),\
$(t:test/test%.py=test%py.log))
DIST = README.md LICENSE.md Makefile ChangeLog dev/ \
pyxsltp.py setup.py
RELEASE = $(PRODUCT)-$(VERSION)
SNAPSHOT = $(PRODUCT)-$(DATE)-$(REVISION)
DEB = $(PACKAGE)_$(VERSION)-$(DEBREV)
DEBORIG = $(PACKAGE)_$(VERSION).orig
## targets
all: test
.PHONY: all test install uninstall dist snapshot mostlyclean clean \
deb pbuilder-build pbuilder-login pbuilder-test
# testing
test: $(TESTLOGS)
test%py.log: test/test%.py
PYTHONPATH=.:$$PYTHONPATH $(PYTHON) $< 2>&1 | tee $@
# installation
install: pyxsltp README.md LICENSE.md ChangeLog
@if [ ! -d $(bindir) ]; then \
mkdir -p $(bindir); \
fi
@if [ ! -d $(datadir)/doc/$(PACKAGE) ]; then \
mkdir -p $(datadir)/doc/$(PACKAGE); \
fi
cp -Ppv pyxsltp $(bindir)/pyxsltp
cp -Ppv README.md LICENSE.md ChangeLog $(datadir)/doc/$(PACKAGE)
uninstall:
-rm -f $(bindir)/pyxsltp
-rm -fr $(datadir)/doc/$(PACKAGE)
pyxsltp: pyxsltp.py
cp $< $@
# source package
dist: $(RELEASE).tar.gz
snapshot: $(SNAPSHOT).tar.gz
$(RELEASE) $(SNAPSHOT): $(DIST)
mkdir -p $@
($(TAR_XVCS) -cf - $(DIST)) | (cd $@ && tar xpf -)
ChangeLog:
dev/changelog.sh > $@
%.tar.gz: %
tar -zcf $@ $<
# debian package
deb: $(DEB)_all.deb
$(DEB)_all.deb: pbuilder-build
cp /var/cache/pbuilder/result/$@ ./
pbuilder-build: $(DEB).dsc
sudo $(PBUILDER) --build $< -- $(PBOPTS)
pbuilder-login:
sudo $(PBUILDER) --login $(PBOPTS)
pbuilder-test: $(DEB)_all.deb
sudo cowbuilder --execute pbuilder-hooks/test.sh $< -- $(PBOPTS)
$(DEB).dsc: $(RELEASE).tar.gz
tar fxz $<
($(TAR_XVCS) -cf - debian) | (cd $(RELEASE) && tar xpf -)
cp $< $(DEBORIG).tar.gz
(cd $(RELEASE) && pdebuild --pbuilder $(PBUILDER) $(DEBUILDOPTS); cd -)
# cleaning
mostlyclean:
-rm -f $(TESTLOGS) pyxsltp
-rm -fr $(SNAPSHOT) $(RELEASE)
-rm -f $(DEB)_*.build
-rm -fr debian/$(PACKAGE)
clean: mostlyclean
-rm -f ChangeLog
-rm -f $(SNAPSHOT).tar.gz $(RELEASE).tar.gz
-rm -f $(DEB).dsc $(DEBORIG).tar.gz $(DEB).diff.gz $(DEB)_*.deb \
$(DEB)_*.changes