-
Notifications
You must be signed in to change notification settings - Fork 300
/
makefile
535 lines (446 loc) · 19.1 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
# -*- makefile -*-
# this makefile controls the build and packaging of weewx
# Copyright 2013-2024 Matthew Wall
# if you do not want to sign the packages, set SIGN to 0
SIGN=1
# the WeeWX WWW server
WEEWX_COM:=weewx.com
# location of the html documentation on the WWW server
WEEWX_HTMLDIR=/var/www/html
# location of weewx downloads
WEEWX_DOWNLOADS=$(WEEWX_HTMLDIR)/downloads
# location for staging weewx package uploads
WEEWX_STAGING=$(WEEWX_HTMLDIR)/downloads/development_versions
# Directory for artifacts created during the build process
BLDDIR=build
# Directory for completed files that will be tested and/or distributed
DSTDIR=dist
# Location of doc sources
DOC_SRC=docs_src
# Location of built docs
DOC_BUILT=$(BLDDIR)/docs
# Location of the skins
SKINLOC=src/weewx_data/skins
CWD=$(shell pwd)
# the current version is extracted from the pyproject.toml file
VERSION:=$(shell sed -ne 's/^version = "\(.*\)"/\1/p;' pyproject.toml)
# just the major.minor part of the version
MMVERSION:=$(shell echo "$(VERSION)" | sed -e 's%.[0-9a-z]*$$%%')
SRCPKG=weewx-$(VERSION).tgz
WHEELSRC=weewx-$(VERSION).tar.gz
WHEEL=weewx-$(VERSION)-py3-none-any.whl
PYTHON?=python3
TMPDIR?=/var/tmp
all: help
help: info
@echo "options include:"
@echo " info display values of variables we care about"
@echo " version get version from pyproject.toml and insert elsewhere"
@echo ""
@echo " debian-changelog prepend stub changelog entry for debian"
@echo " redhat-changelog prepend stub changelog entry for redhat"
@echo " suse-changelog prepend stub changelog entry for suse"
@echo ""
@echo " pypi-package create wheel and source tarball for pypi"
@echo "debian-package create the debian package(s)"
@echo "redhat-package create the redhat package(s)"
@echo " suse-package create the suse package(s)"
@echo ""
@echo " check-debian check the debian package"
@echo " check-redhat check the redhat package"
@echo " check-suse check the suse package"
@echo " check-docs run weblint on the docs"
@echo ""
@echo " upload-src upload the src package to $(WEEWX_COM)"
@echo " upload-pypi upload wheel and src package to pypi.org"
@echo " upload-debian upload the debian deb package"
@echo " upload-redhat upload the redhat rpm packages"
@echo " upload-suse upload the suse rpm packages"
@echo ""
@echo " build-docs build the docs using mkdocs"
@echo " upload-docs upload docs to $(WEEWX_COM)"
@echo ""
@echo " release promote staged files on the download server"
@echo ""
@echo " test run all unit tests"
@echo " SUITE=path/to/foo.py to run only foo tests"
@echo " test-clean remove test databases"
@echo ""
@echo " apt repository management"
@echo " pull-apt-repo"
@echo " update-apt-repo"
@echo " push-apt-repo"
@echo ""
@echo " yum repository management"
@echo " pull-yum-repo"
@echo " update-yum-repo"
@echo " push-yum-repo"
@echo ""
@echo " suse repository management"
@echo " pull-suse-repo"
@echo " update-suse-repo"
@echo " push-suse-repo"
@echo ""
info:
@echo " VERSION: $(VERSION)"
@echo " MMVERSION: $(MMVERSION)"
@echo " PYTHON: $(PYTHON)"
@echo " CWD: $(CWD)"
@echo " USER: $(USER)"
@echo " WEEWX_COM: $(WEEWX_COM)"
@echo " WEEWX_STAGING: $(WEEWX_STAGING)"
@echo " DOC_SRC: $(DOC_SRC)"
@echo " DOC_BUILT: $(DOC_BUILT)"
@echo " SKINLOC: $(SKINLOC)"
@echo ""
clean:
find src -name "*.pyc" -exec rm {} \;
find src -name "__pycache__" -prune -exec rm -rf {} \;
rm -rf $(BLDDIR) $(DSTDIR)
###############################################################################
# update the version in all relevant places
VCONFIGS=src/weewx_data/weewx.conf src/weecfg/tests/expected/weewx43_user_expected.conf
VSKINS=Ftp/skin.conf Mobile/skin.conf Rsync/skin.conf Seasons/skin.conf Smartphone/skin.conf Standard/skin.conf
version:
sed -e "s/^site_name.*/site_name: \'WeeWX $(MMVERSION)\'/" mkdocs.yml > mkdocs.yml.tmp; mv mkdocs.yml.tmp mkdocs.yml
for f in $(VCONFIGS); do \
sed -e 's/version = [0-9].*/version = $(VERSION)/' $$f > $$f.tmp; \
mv $$f.tmp $$f; \
done
for f in $(VSKINS); do \
sed -e 's/^SKIN_VERSION = [0-9].*/SKIN_VERSION = $(VERSION)/' $(SKINLOC)/$$f > $(SKINLOC)/$$f.tmp; \
mv $(SKINLOC)/$$f.tmp $(SKINLOC)/$$f; \
done
sed -e 's/__version__ *=.*/__version__ = "$(VERSION)"/' src/weewx/__init__.py > weeinit.py.tmp
mv weeinit.py.tmp src/weewx/__init__.py
###############################################################################
## testing targets
# if no suite is specified, find all test suites in the source tree
SUITE?=`find src -name "test_*.py"`
test: src/weewx_data/
@rm -f $(BLDDIR)/test-results
@mkdir -p $(BLDDIR)
@echo "Python interpreter and version in use:" >> $(BLDDIR)/test-results 2>&1;
@$(PYTHON) -c "import sys;print(sys.executable)" >> $(BLDDIR)/test-results 2>&1;
@$(PYTHON) -V >> $(BLDDIR)/test-results 2>&1;
@echo "----" >> $(BLDDIR)/test-results 2>&1;
@for f in $(SUITE); do \
echo running $$f; \
echo $$f >> $(BLDDIR)/test-results; \
PYTHONPATH="src:src/weewx_data/examples:src/weewx/tests" $(PYTHON) $$f >> $(BLDDIR)/test-results 2>&1; \
echo >> $(BLDDIR)/test-results; \
done
@grep "ERROR:\|FAIL:" $(BLDDIR)/test-results || echo "no failures"
@grep "skipped=" $(BLDDIR)/test-results || echo "no tests were skipped"
@echo "see $(BLDDIR)/test-results for output from the tests"
@grep -q "ERROR:\|FAIL:" $(BLDDIR)/test-results && exit 1 || true
test-setup:
src/weedb/tests/setup_mysql.sh
test-setup-ci:
MYSQL_NO_OPTS=1 src/weedb/tests/setup_mysql.sh
TESTDIR=/var/tmp/weewx_test
MYSQLCLEAN="drop database test_weewx;\n\
drop database test_alt_weewx;\n\
drop database test_sim;\n\
drop database test_weewx1;\n\
drop database test_weewx2;\n\
drop database test_scratch;\n"
test-clean:
rm -rf $(TESTDIR)
echo $(MYSQLCLEAN) | mysql --user=weewx --password=weewx --force >/dev/null 2>&1
###############################################################################
## documentation targets
# Build the documentation:
build-docs: $(DOC_BUILT)
$(DOC_BUILT): $(shell find $(DOC_SRC) -type f)
@rm -rf $(DOC_BUILT)
@mkdir -p $(DOC_BUILT)
@echo "Building documents"
$(PYTHON) -m mkdocs --quiet build --site-dir=$(DOC_BUILT)
check-docs:
weblint $(DOC_BUILT)/*.htm
# upload docs to the web site
upload-docs: $(DOC_BUILT)
rsync -Orv --delete --exclude *~ --exclude "#*" $(DOC_BUILT)/ $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/docs/$(MMVERSION)
###############################################################################
## source targets
src-tarball: $(DSTDIR)/$(SRCPKG)
$(DSTDIR)/$(SRCPKG):
mkdir -p $(BLDDIR)/weewx-$(VERSION)
rsync -ar ./ $(BLDDIR)/weewx-$(VERSION) --exclude-from .gitignore --exclude .git --exclude .editorconfig --exclude .github --exclude .gitignore --delete
mkdir -p $(DSTDIR)
tar cfz $(DSTDIR)/$(SRCPKG) -C $(BLDDIR) weewx-$(VERSION)
# upload the source tarball to the web site
upload-src:
scp $(DSTDIR)/$(SRCPKG) $(USER)@$(WEEWX_COM):$(WEEWX_STAGING)
###############################################################################
## pypi targets
pypi-package $(DSTDIR)/$(WHEELSRC) $(DSTDIR)/$(WHEEL): pyproject.toml
poetry build
# Upload wheel and src package to pypi.org
upload-pypi: $(DSTDIR)/$(WHEELSRC) $(DSTDIR)/$(WHEEL)
poetry publish
###############################################################################
## debian targets
DEBREVISION=1
DEBVER=$(VERSION)-$(DEBREVISION)
# add a skeleton entry to deb changelog
debian-changelog:
if [ "`grep '($(DEBVER))' pkg/debian/changelog`" = "" ]; then \
pkg/mkchangelog.pl --action stub --format debian --release-version $(DEBVER) > pkg/debian/changelog.new; \
cat pkg/debian/changelog >> pkg/debian/changelog.new; \
mv pkg/debian/changelog.new pkg/debian/changelog; \
fi
# use dpkg-buildpackage to create the debian package
# -us -uc - skip gpg signature on .dsc, .buildinfo, and .changes
# the latest version in the debian changelog must match the packaging version
DEBARCH=all
DEBBLDDIR=$(BLDDIR)/weewx-$(VERSION)
DEBPKG=weewx_$(DEBVER)_$(DEBARCH).deb
ifneq ("$(SIGN)","1")
DPKG_OPT=-us -uc
endif
debian-package: deb-package-prep
cp pkg/debian/control $(DEBBLDDIR)/debian/control
rm -f $(DEBBLDDIR)/debian/files
(cd $(DEBBLDDIR); dpkg-buildpackage $(DPKG_OPT))
mkdir -p $(DSTDIR)
mv $(BLDDIR)/$(DEBPKG) $(DSTDIR)/python3-$(DEBPKG)
deb-package-prep: $(DSTDIR)/$(SRCPKG)
mkdir -p $(DEBBLDDIR)
cp -p $(DSTDIR)/$(SRCPKG) $(BLDDIR)/weewx_$(VERSION).orig.tar.gz
rm -rf $(DEBBLDDIR)/debian
mkdir -m 0755 $(DEBBLDDIR)/debian
mkdir -m 0755 $(DEBBLDDIR)/debian/source
cp pkg/debian/changelog $(DEBBLDDIR)/debian
cp pkg/debian/compat $(DEBBLDDIR)/debian
cp pkg/debian/conffiles $(DEBBLDDIR)/debian
cp pkg/debian/config $(DEBBLDDIR)/debian
cp pkg/debian/copyright $(DEBBLDDIR)/debian
cp pkg/debian/postinst $(DEBBLDDIR)/debian
cp pkg/debian/postrm $(DEBBLDDIR)/debian
cp pkg/debian/preinst $(DEBBLDDIR)/debian
cp pkg/debian/prerm $(DEBBLDDIR)/debian
cp pkg/debian/source/format $(DEBBLDDIR)/debian/source
cp pkg/debian/templates $(DEBBLDDIR)/debian
cp pkg/debian/weewx.lintian-overrides $(DEBBLDDIR)/debian
sed -e 's%WEEWX_VERSION%$(VERSION)%' \
pkg/debian/rules > $(DEBBLDDIR)/debian/rules
# run lintian on the deb package
check-debian:
lintian -Ivi $(DSTDIR)/python3-$(DEBPKG)
upload-debian:
scp $(DSTDIR)/python3-$(DEBPKG) $(USER)@$(WEEWX_COM):$(WEEWX_STAGING)
###############################################################################
## rpm targets
# specify the operating system release target (e.g., 7 for centos7)
OSREL=
# specify the operating system label (e.g., el, suse)
RPMOS=$(shell if [ -f /etc/SuSE-release -o -f /etc/SUSE-brand ]; then echo suse; elif [ -f /etc/redhat-release ]; then echo el; else echo os; fi)
RPMREVISION=1
RPMVER=$(VERSION)-$(RPMREVISION)
# add a skeleton entry to rpm changelog
rpm-changelog:
if [ "`grep '\- $(RPMVER)' pkg/changelog.$(RPMOS)`" = "" ]; then \
pkg/mkchangelog.pl --action stub --format redhat --release-version $(RPMVER) > pkg/changelog.$(RPMOS).new; \
cat pkg/changelog.$(RPMOS) >> pkg/changelog.$(RPMOS).new; \
mv pkg/changelog.$(RPMOS).new pkg/changelog.$(RPMOS); \
fi
# use rpmbuild to create the rpm package
# specify the architecture (always noarch)
RPMARCH=noarch
RPMBLDDIR=$(BLDDIR)/weewx-$(RPMVER).$(RPMOS)$(OSREL).$(RPMARCH)
RPMPKG=weewx-$(RPMVER).$(RPMOS)$(OSREL).$(RPMARCH).rpm
rpm-package: $(DSTDIR)/$(SRCPKG)
rm -rf $(RPMBLDDIR)
mkdir -p -m 0755 $(RPMBLDDIR)
mkdir -p -m 0755 $(RPMBLDDIR)/BUILD
mkdir -p -m 0755 $(RPMBLDDIR)/BUILDROOT
mkdir -p -m 0755 $(RPMBLDDIR)/RPMS
mkdir -p -m 0755 $(RPMBLDDIR)/SOURCES
mkdir -p -m 0755 $(RPMBLDDIR)/SPECS
mkdir -p -m 0755 $(RPMBLDDIR)/SRPMS
sed -e 's%WEEWX_VERSION%$(VERSION)%' \
-e 's%RPMREVISION%$(RPMREVISION)%' \
-e 's%OSREL%$(OSREL)%' \
pkg/weewx.spec.in > $(RPMBLDDIR)/SPECS/weewx.spec
cat pkg/changelog.$(RPMOS) >> $(RPMBLDDIR)/SPECS/weewx.spec
cp $(DSTDIR)/$(SRCPKG) $(RPMBLDDIR)/SOURCES/weewx-$(VERSION).tar.gz
rpmbuild -ba --clean --define '_topdir $(CWD)/$(RPMBLDDIR)' --target noarch $(CWD)/$(RPMBLDDIR)/SPECS/weewx.spec
mkdir -p $(DSTDIR)
mv $(RPMBLDDIR)/RPMS/$(RPMARCH)/$(RPMPKG) $(DSTDIR)
# mv $(RPMBLDDIR)/SRPMS/weewx-$(RPMVER).$(RPMOS)$(OSREL).src.rpm $(DSTDIR)
ifeq ("$(SIGN)","1")
rpm --addsign $(DSTDIR)/$(RPMPKG)
# rpm --addsign $(DSTDIR)/weewx-$(RPMVER).$(RPMOS)$(OSREL).src.rpm
endif
redhat-changelog:
make rpm-changelog RPMOS=el
redhat-package: rpm-package-rh8 rpm-package-rh9
rpm-package-rh8:
make rpm-package RPMOS=el OSREL=8
rpm-package-rh9:
make rpm-package RPMOS=el OSREL=9
suse-changelog:
make rpm-changelog RPMOS=suse
suse-package: rpm-package-suse15
rpm-package-suse15:
make rpm-package RPMOS=suse OSREL=15
# run rpmlint on the rpm package
check-rpm:
rpmlint -f pkg/rpmlint.$(RPMOS) $(DSTDIR)/$(RPMPKG)
check-redhat: check-rh8 check-rh9
check-rh8:
make check-rpm RPMOS=el OSREL=8
check-rh9:
make check-rpm RPMOS=el OSREL=9
check-suse:
make check-rpm RPMOS=suse OSREL=15
upload-rpm:
scp $(DSTDIR)/$(RPMPKG) $(USER)@$(WEEWX_COM):$(WEEWX_STAGING)
upload-redhat: upload-rh8 upload-rh9
upload-rh8:
make upload-rpm RPMOS=el OSREL=8
upload-rh9:
make upload-rpm RPMOS=el OSREL=9
upload-suse:
make upload-rpm RPMOS=suse OSREL=15
# shortcut to upload all packages from a single machine
DEB3_PKG=python3-weewx_$(DEBVER)_$(DEBARCH).deb
RHEL8_PKG=weewx-$(RPMVER).el8.$(RPMARCH).rpm
RHEL9_PKG=weewx-$(RPMVER).el9.$(RPMARCH).rpm
SUSE15_PKG=weewx-$(RPMVER).suse15.$(RPMARCH).rpm
upload-pkgs:
scp $(DSTDIR)/$(SRCPKG) $(DSTDIR)/$(DEB3_PKG) $(DSTDIR)/$(RHEL8_PKG) $(DSTDIR)/$(RHEL9_PKG) $(DSTDIR)/$(SUSE15_PKG) $(USER)@$(WEEWX_COM):$(WEEWX_STAGING)
# move files from the upload directory to the release directory and set up the
# symlinks to them from the download root directory
DEVDIR=$(WEEWX_DOWNLOADS)/development_versions
RELDIR=$(WEEWX_DOWNLOADS)/released_versions
ARTIFACTS=$(DEB3_PKG) $(RHEL8_PKG) $(RHEL9_PKG) $(SUSE15_PKG) $(SRCPKG)
release:
ssh $(USER)@$(WEEWX_COM) "for f in $(ARTIFACTS); do if [ -f $(DEVDIR)/\$$f ]; then mv $(DEVDIR)/\$$f $(RELDIR); fi; done"
ssh $(USER)@$(WEEWX_COM) "rm -f $(WEEWX_DOWNLOADS)/weewx*"
ssh $(USER)@$(WEEWX_COM) "if [ -f $(RELDIR)/$(SRCPKG) ]; then ln -s released_versions/$(SRCPKG) $(WEEWX_DOWNLOADS); fi"
ssh $(USER)@$(WEEWX_COM) "chmod 664 $(WEEWX_DOWNLOADS)/released_versions/weewx?$(VERSION)*"
###############################################################################
## repository management targets
# update the repository html index files, without touching the contents of the
# repositories. this is rarely necessary, since the index files are included
# in the pull/push cycle of repository maintenance. it is needed when the
# operating systems make changes that are not backward compatible, for example
# when debian deprecated the use of apt-key.
upload-repo-index:
scp pkg/index-apt.html $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/aptly/public/index.html
scp pkg/index-yum.html $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/yum/index.html
scp pkg/index-suse.html $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/suse/index.html
# 'apt-repo' is only used when creating a new apt repository from scratch
# the .html and .list files are not part of an official apt repository. they
# are included to make the repository self-documenting.
apt-repo:
aptly repo create -distribution=squeeze -component=main -architectures=all python2-weewx
aptly repo create -distribution=buster -component=main -architectures=all python3-weewx
mkdir -p ~/.aptly/public
cp -p pkg/index-apt.html ~/.aptly/public/index.html
cp -p pkg/weewx-python2.list ~/.aptly/public
cp -p pkg/weewx-python3.list ~/.aptly/public
# this is for backward-compatibility when there was not python2/3 distinction
cp -p pkg/weewx-python2.list ~/.aptly/public/weewx.list
# these are for backward-compatibility for users that do not have python2 or
# python3 in the paths in their .list file - default to python2
ln -s python2/dists ~/.aptly/public
ln -s python2/pool ~/.aptly/public
# make local copy of the published apt repository
pull-apt-repo:
mkdir -p ~/.aptly
rsync -Oarvz $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/aptly/ ~/.aptly
# add the latest version to the local apt repo using aptly
update-apt-repo:
aptly repo add python3-weewx $(DSTDIR)/python3-$(DEBPKG)
aptly snapshot create python3-weewx-$(DEBVER) from repo python3-weewx
aptly publish drop buster python3
aptly publish -architectures=all snapshot python3-weewx-$(DEBVER) python3
# aptly publish switch buster python3 python3-weewx-$(DEBVER)
# publish apt repo changes to the public weewx apt repo
push-apt-repo:
find ~/.aptly -type f -exec chmod 664 {} \;
find ~/.aptly -type d -exec chmod 2775 {} \;
rsync -Ortlvz ~/.aptly/ $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/aptly-test
# copy the testing repository onto the production repository
release-apt-repo:
ssh $(USER)@$(WEEWX_COM) "rsync -Ologrvz /var/www/html/aptly-test/ /var/www/html/aptly"
# 'yum-repo' is only used when creating a new yum repository from scratch
# the index.html is not part of an official rpm repository. it is included
# to make the repository self-documenting.
YUM_REPO=~/.yum/weewx
yum-repo:
mkdir -p $(YUM_REPO)/{el7,el8,el9}/RPMS
cp -p pkg/index-yum.html ~/.yum/index.html
cp -p pkg/weewx-el.repo ~/.yum/weewx.repo
cp -p pkg/weewx-el7.repo ~/.yum
cp -p pkg/weewx-el8.repo ~/.yum
cp -p pkg/weewx-el9.repo ~/.yum
pull-yum-repo:
mkdir -p $(YUM_REPO)
rsync -Oarvz $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/yum/ ~/.yum
update-yum-repo:
mkdir -p $(YUM_REPO)/el8/RPMS
cp -p $(DSTDIR)/weewx-$(RPMVER).el8.$(RPMARCH).rpm $(YUM_REPO)/el8/RPMS
createrepo $(YUM_REPO)/el8
mkdir -p $(YUM_REPO)/el9/RPMS
cp -p $(DSTDIR)/weewx-$(RPMVER).el9.$(RPMARCH).rpm $(YUM_REPO)/el9/RPMS
createrepo $(YUM_REPO)/el9
ifeq ("$(SIGN)","1")
gpg -abs -o $(YUM_REPO)/el8/repodata/repomd.xml.asc $(YUM_REPO)/el8/repodata/repomd.xml
gpg --export --armor > $(YUM_REPO)/el8/repodata/repomd.xml.key
gpg -abs -o $(YUM_REPO)/el9/repodata/repomd.xml.asc $(YUM_REPO)/el9/repodata/repomd.xml
gpg --export --armor > $(YUM_REPO)/el9/repodata/repomd.xml.key
endif
push-yum-repo:
find ~/.yum -type f -exec chmod 664 {} \;
find ~/.yum -type d -exec chmod 2775 {} \;
rsync -Ortlvz ~/.yum/ $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/yum-test
# copy the testing repository onto the production repository
release-yum-repo:
ssh $(USER)@$(WEEWX_COM) "rsync -Ologrvz /var/www/html/yum-test/ /var/www/html/yum"
# 'suse-repo' is only used when creating a new suse repository from scratch
# the index.html is not part of an official rpm repository. it is included
# to make the repository self-documenting.
SUSE_REPO=~/.suse/weewx
suse-repo:
mkdir -p $(SUSE_REPO)/{suse12,suse15}/RPMS
cp -p pkg/index-suse.html ~/.suse/index.html
cp -p pkg/weewx-suse.repo ~/.suse/weewx.repo
cp -p pkg/weewx-suse12.repo ~/.suse
cp -p pkg/weewx-suse15.repo ~/.suse
pull-suse-repo:
mkdir -p $(SUSE_REPO)
rsync -Oarvz $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/suse/ ~/.suse
update-suse-repo:
mkdir -p $(SUSE_REPO)/suse15/RPMS
cp -p $(DSTDIR)/weewx-$(RPMVER).suse15.$(RPMARCH).rpm $(SUSE_REPO)/suse15/RPMS
createrepo $(SUSE_REPO)/suse15
ifeq ("$(SIGN)","1")
gpg -abs -o $(SUSE_REPO)/suse15/repodata/repomd.xml.asc $(SUSE_REPO)/suse15/repodata/repomd.xml
gpg --export --armor > $(SUSE_REPO)/suse15/repodata/repomd.xml.key
endif
push-suse-repo:
find ~/.suse -type f -exec chmod 664 {} \;
find ~/.suse -type d -exec chmod 2775 {} \;
rsync -Ortlvz ~/.suse/ $(USER)@$(WEEWX_COM):$(WEEWX_HTMLDIR)/suse-test
# copy the testing repository onto the production repository
release-suse-repo:
ssh $(USER)@$(WEEWX_COM) "rsync -Ologrvz /var/www/html/suse-test/ /var/www/html/suse"
# shortcuts to upload everything. assumes that the assets have been staged
# to the local 'dist' directory.
upload-all: upload-docs upload-pkgs
# shortcut to release everything. assumes that all of the assets have been
# staged to the development area on the distribution server.
release-all: release release-apt-repo release-yum-repo release-suse-repo
# run perlcritic to ensure clean perl code. put these in ~/.perlcriticrc:
# [-CodeLayout::RequireTidyCode]
# [-Modules::ProhibitExcessMainComplexity]
# [-Modules::RequireVersionVar]
critic:
perlcritic -1 --verbose 8 pkg/mkchangelog.pl
code-summary:
cloc --force-lang="HTML",tmpl --force-lang="INI",conf --force-lang="INI",inc src docs_src