1
1
# vim: set noet sw=4 ts=4 fileencoding=utf-8:
2
2
3
3
# External utilities
4
- PYTHON =python
4
+ PYTHON =python3
5
5
PIP =pip
6
- PYTEST =py.test
7
- COVERAGE =coverage
6
+ PYTEST =pytest
8
7
TWINE =twine
9
8
PYFLAGS =
10
9
MSGINIT =msginit
@@ -14,56 +13,22 @@ XGETTEXT=xgettext
14
13
GCS =glib-compile-schemas
15
14
DEST_DIR =/
16
15
17
- # Horrid hack to ensure setuptools is installed in our python environment. This
18
- # is necessary with Python 3.3's venvs which don't install it by default.
19
- ifeq ($(shell python -c "import setuptools" 2>&1) ,)
20
- SETUPTOOLS: =
21
- else
22
- SETUPTOOLS: =$(shell wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | $(PYTHON ) )
23
- endif
24
-
25
16
# Find the location of the GObject introspection libs and cairo (required for
26
17
# the develop target)
27
- PYVER: =$(shell $(PYTHON ) $(PYFLAGS ) -c "import sys; print(sys.version_info[0]) ")
28
- ifeq ($(PYVER ) ,3)
29
18
RTIMULIB: =$(wildcard /usr/lib/python3/dist-packages/RTIMU.* )
30
19
CAIRO: =$(wildcard /usr/lib/python3/dist-packages/cairo)
31
20
GI: =$(wildcard /usr/lib/python3/dist-packages/gi)
32
21
GOBJECT: =
33
22
GLIB: =
34
- else
35
- RTIMULIB: =$(wildcard /usr/lib/python2.7/dist-packages/RTIMU.* )
36
- CAIRO: =$(wildcard /usr/lib/python2.7/dist-packages/cairo)
37
- GI: =$(wildcard /usr/lib/python2.7/dist-packages/gi)
38
- GOBJECT: =$(wildcard /usr/lib/python2.7/dist-packages/gobject)
39
- GLIB: =$(wildcard /usr/lib/python2.7/dist-packages/glib)
40
- endif
41
23
42
24
# Calculate the base names of the distribution, the location of all source,
43
25
# documentation, packaging, icon, and executable script files
44
26
NAME: =$(shell $(PYTHON ) $(PYFLAGS ) setup.py --name)
45
- PKG_DIR : =$(subst -,_,$(NAME ) )
27
+ WHEEL_NAME : =$(subst -,_,$(NAME ) )
46
28
VER: =$(shell $(PYTHON ) $(PYFLAGS ) setup.py --version)
47
- DEB_ARCH: =$(shell dpkg --print-architecture)
48
- ifeq ($(shell lsb_release -si) ,Ubuntu)
49
- DEB_SUFFIX: =-1ubuntu1
50
- else
51
- DEB_SUFFIX: =
52
- endif
53
29
PY_SOURCES: =$(shell \
54
30
$(PYTHON ) $(PYFLAGS ) setup.py egg_info >/dev/null 2>&1 && \
55
- cat $(PKG_DIR ) .egg-info/SOURCES.txt | grep -v "\.egg-info" | grep -v "\.mo$$")
56
- DEB_SOURCES: =debian/changelog \
57
- debian/control \
58
- debian/copyright \
59
- debian/rules \
60
- debian/docs \
61
- $(wildcard debian/* .init) \
62
- $(wildcard debian/* .default) \
63
- $(wildcard debian/* .manpages) \
64
- $(wildcard debian/* .docs) \
65
- $(wildcard debian/* .doc-base) \
66
- $(wildcard debian/* .desktop)
31
+ cat $(WHEEL_NAME ) .egg-info/SOURCES.txt | grep -v "\.egg-info" | grep -v "\.mo$$")
67
32
DOC_SOURCES: =docs/conf.py \
68
33
$(wildcard docs/* .png) \
69
34
$(wildcard docs/* .svg) \
@@ -75,27 +40,15 @@ DOC_SOURCES:=docs/conf.py \
75
40
SUBDIRS: =icons
76
41
77
42
# Calculate the name of all outputs
78
- DIST_WHEEL =dist/$(PKG_DIR ) -$(VER ) -py2. py3-none-any.whl
43
+ DIST_WHEEL =dist/$(WHEEL_NAME ) -$(VER ) -py3-none-any.whl
79
44
DIST_TAR =dist/$(NAME ) -$(VER ) .tar.gz
80
45
DIST_ZIP =dist/$(NAME ) -$(VER ) .zip
81
- DIST_DEB =dist/python-$(NAME ) _$(VER )$(DEB_SUFFIX ) _all.deb \
82
- dist/python3-$(NAME ) _$(VER )$(DEB_SUFFIX ) _all.deb \
83
- dist/python-$(NAME ) -doc_$(VER )$(DEB_SUFFIX ) _all.deb \
84
- dist/$(NAME ) -tools_$(VER )$(DEB_SUFFIX ) _all.deb \
85
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _$(DEB_ARCH ) .build \
86
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _$(DEB_ARCH ) .buildinfo \
87
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _$(DEB_ARCH ) .changes
88
- DIST_DSC =dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) .tar.xz \
89
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) .dsc \
90
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _source.build \
91
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _source.buildinfo \
92
- dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _source.changes
93
46
MAN_PAGES =man/sense_rec.1 man/sense_play.1 man/sense_csv.1 man/sense_emu_gui.1
94
- POT_FILE =$(PKG_DIR ) /locale/$(NAME ) .pot
95
- PO_FILES: =$(wildcard $(PKG_DIR ) /locale/* .po)
96
- MO_FILES: =$(patsubst $(PKG_DIR ) /locale/% .po,$(PKG_DIR ) /locale/% /LC_MESSAGES/$(NAME ) .mo,$(PO_FILES ) )
97
- GSCHEMA_FILES: =$(wildcard $(PKG_DIR ) /* .gschema.xml)
98
- GSCHEMA_COMPILED =$(PKG_DIR ) /gschemas.compiled
47
+ POT_FILE =$(WHEEL_NAME ) /locale/$(NAME ) .pot
48
+ PO_FILES: =$(wildcard $(WHEEL_NAME ) /locale/* .po)
49
+ MO_FILES: =$(patsubst $(WHEEL_NAME ) /locale/% .po,$(WHEEL_NAME ) /locale/% /LC_MESSAGES/$(NAME ) .mo,$(PO_FILES ) )
50
+ GSCHEMA_FILES: =$(wildcard $(WHEEL_NAME ) /* .gschema.xml)
51
+ GSCHEMA_COMPILED =$(WHEEL_NAME ) /gschemas.compiled
99
52
100
53
101
54
# Default target
107
60
@echo " make test - Run tests"
108
61
@echo " make doc - Generate HTML and PDF documentation"
109
62
@echo " make source - Create source package"
110
- @echo " make egg - Generate a PyPI egg package"
63
+ @echo " make wheel - Generate a PyPI wheel package"
111
64
@echo " make zip - Generate a source zip package"
112
65
@echo " make tar - Generate a source tar package"
113
- @echo " make deb - Generate Debian packages"
114
66
@echo " make dist - Generate all packages"
115
67
@echo " make clean - Get rid of all generated files"
116
68
@echo " make release - Create and tag a new release"
@@ -133,9 +85,7 @@ zip: $(DIST_ZIP)
133
85
134
86
tar : $(DIST_TAR )
135
87
136
- deb : $(DIST_DEB ) $(DIST_DSC )
137
-
138
- dist : $(DIST_WHEEL ) $(DIST_DEB ) $(DIST_DSC ) $(DIST_TAR ) $(DIST_ZIP )
88
+ dist : $(DIST_WHEEL ) $(DIST_TAR ) $(DIST_ZIP )
139
89
140
90
i18n : $(MO_FILES ) $(PO_FILES ) $(POT_FILE )
141
91
@@ -175,19 +125,17 @@ endif
175
125
endif
176
126
177
127
test :
178
- $(COVERAGE ) run --rcfile coverage.cfg -m $(PYTEST ) tests
179
- $(COVERAGE ) report --rcfile coverage.cfg
128
+ $(PYTEST )
180
129
181
130
clean :
182
- dh_clean
183
- rm -fr dist/ $(NAME ) .egg-info/ tags
131
+ rm -fr dist/ build/ .pytest_cache/ .mypy_cache/ $(WHEEL_NAME ) .egg-info/ tags .coverage
184
132
for dir in $( SUBDIRS) ; do \
185
133
$(MAKE ) -C $$ dir clean; \
186
134
done
187
135
find $(CURDIR ) -name " *.pyc" -delete
188
136
189
137
tags : $(PY_SOURCES )
190
- ctags -R --exclude=" build/*" --exclude=" debian/* " --exclude= " docs/*" --languages=" Python"
138
+ ctags -R --exclude=" build/*" --exclude=" docs/*" --languages=" Python"
191
139
192
140
$(SUBDIRS ) :
193
141
$(MAKE ) -C $@
@@ -205,10 +153,10 @@ $(PO_FILES): $(POT_FILE)
205
153
206
154
$(MO_FILES ) : $(PO_FILES )
207
155
mkdir -p $(dir $@ )
208
- $(MSGFMT ) $(patsubst $(PKG_DIR ) /locale/% /LC_MESSAGES/$(NAME ) .mo,$(PKG_DIR ) /locale/% .po,$@ ) -o $@
156
+ $(MSGFMT ) $(patsubst $(WHEEL_NAME ) /locale/% /LC_MESSAGES/$(NAME ) .mo,$(WHEEL_NAME ) /locale/% .po,$@ ) -o $@
209
157
210
158
$(GSCHEMA_COMPILED ) : $(GSCHEMA_FILES )
211
- $(GCS ) $(PKG_DIR )
159
+ $(GCS ) $(WHEEL_NAME )
212
160
213
161
$(DIST_TAR ) : $(PY_SOURCES ) $(MO_FILES ) $(GSCHEMA_COMPILED ) $(SUBDIRS )
214
162
$(PYTHON ) $(PYFLAGS ) setup.py sdist --formats gztar
@@ -217,46 +165,16 @@ $(DIST_ZIP): $(PY_SOURCES) $(MO_FILES) $(GSCHEMA_COMPILED) $(SUBDIRS)
217
165
$(PYTHON ) $(PYFLAGS ) setup.py sdist --formats zip
218
166
219
167
$(DIST_WHEEL ) : $(PY_SOURCES ) $(MO_FILES ) $(GSCHEMA_COMPILED ) $(SUBDIRS )
220
- $(PYTHON ) $(PYFLAGS ) setup.py bdist_wheel --universal
221
-
222
- $(DIST_DEB ) : $(PY_SOURCES ) $(MO_FILES ) $(GSCHEMA_COMPILED ) $(SUBDIRS ) $(DEB_SOURCES ) $(MAN_PAGES )
223
- # build the binary package in the parent directory then rename it to
224
- # project_version.orig.tar.gz
225
- $(PYTHON ) $(PYFLAGS ) setup.py sdist --dist-dir=../
226
- rename -f ' s/$(NAME)-(.*)\.tar\.gz/$(NAME)_$$1\.orig\.tar\.gz/' ../*
227
- debuild -b
228
- mkdir -p dist/
229
- for f in $( DIST_DEB) ; do cp ../$$ {f## */} dist/; done
168
+ $(PYTHON ) $(PYFLAGS ) setup.py bdist_wheel
230
169
231
- $(DIST_DSC ) : $(PY_SOURCES ) $(PO_FILES ) $(GSCHEMA_COMPILED ) $(SUBDIRS ) $(DEB_SOURCES ) $(MAN_PAGES )
232
- # build the source package in the parent directory then rename it to
233
- # project_version.orig.tar.gz
234
- $(PYTHON ) $(PYFLAGS ) setup.py sdist --dist-dir=../
235
- rename -f ' s/$(NAME)-(.*)\.tar\.gz/$(NAME)_$$1\.orig\.tar\.gz/' ../*
236
- debuild -S
237
- mkdir -p dist/
238
- for f in $( DIST_DSC) ; do cp ../$$ {f## */} dist/; done
239
-
240
- changelog : $(PY_SOURCES ) $(MO_FILES ) $(GSCHEMA_COMPILED ) $(DOC_SOURCES ) $(DEB_SOURCES )
241
- # ensure there are no current uncommitted changes
170
+ release :
171
+ $(MAKE ) clean
242
172
test -z " $( shell git status --porcelain) "
243
- # update the debian changelog with new release information
244
- dch --newversion $(VER )$(DEB_SUFFIX ) --controlmaint
245
- # commit the changes and add a new tag
246
- git commit debian/changelog -m " Updated changelog for release $( VER) "
173
+ git tag -s v$(VER ) -m " Release v$( VER) "
174
+ git push origin v$(VER )
247
175
248
- release-pi : $(DIST_TAR ) $(DIST_WHEEL ) $(DIST_DEB ) $(DIST_DSC )
249
- git tag -s v$(VER ) -m " Release $( VER) "
250
- git push --tags
251
- # build a source archive and upload to PyPI
176
+ upload : $(DIST_TAR ) $(DIST_WHEEL )
177
+ $(TWINE ) check $(DIST_TAR ) $(DIST_WHEEL )
252
178
$(TWINE ) upload $(DIST_TAR ) $(DIST_WHEEL )
253
- # build the deb source archive and upload to Raspbian
254
- dput raspberrypi dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _source.changes
255
- dput raspberrypi dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _$(DEB_ARCH ) .changes
256
-
257
- release-ubuntu : $(DIST_DEB ) $(DIST_DSC )
258
- # build the deb source archive and upload to the PPA
259
- dput waveform-ppa dist/$(NAME ) _$(VER )$(DEB_SUFFIX ) _source.changes
260
-
261
- .PHONY : all install develop test doc source wheel zip tar deb dist clean tags changelog release-pi release-ubuntu $(SUBDIRS )
262
179
180
+ .PHONY : all install develop test doc source wheel zip tar dist clean tags release upload $(SUBDIRS )
0 commit comments