#!/usr/bin/make -f
# -*- makefile -*-
# debian makefile for weewx
# Copyright 2013-2023 Matthew Wall

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

PKG=weewx
PYTHON=python3
SRC=$(CURDIR)
DST=$(CURDIR)/debian/$(PKG)
DST_EXECDIR=$(DST)/usr/bin
DST_BINDIR =$(DST)/usr/share/weewx
DST_DOCDIR =$(DST)/usr/share/doc/weewx
DST_SYSTEMDDIR=$(DST)/etc/systemd/system
DST_CFGDIR =$(DST)/etc/weewx

# these are the entry points
ENTRIES=weewxd weectl wee_import wee_reports

%:
	dh $@ --with python3

override_dh_auto_clean:
	dh_auto_clean
	rm -rf build dist
	rm -f *.egg-info

# this install rule duplicates what the weewx setup.py would do
install:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

# create the directory structure
	mkdir -p $(DST_EXECDIR)
	mkdir -p $(DST_SYSTEMDDIR)
	mkdir -p $(DST_BINDIR)
	mkdir -p $(DST_DOCDIR)
	mkdir -p $(DST_CFGDIR)
	mkdir -p $(DST)/etc/default

# copy files from the source tree
	cp -r $(SRC)/bin/* $(DST_BINDIR)
	cp -r $(SRC)/../docs/* $(DST_DOCDIR)
	cp -r $(SRC)/examples $(DST_DOCDIR)
	cp -r $(SRC)/skins $(DST_CFGDIR)
	cp -r $(SRC)/util/apache $(DST_CFGDIR)
	cp -r $(SRC)/util/import $(DST_CFGDIR)
	cp -r $(SRC)/util/logrotate.d $(DST_CFGDIR)
	cp -r $(SRC)/util/logwatch $(DST_CFGDIR)
	cp -r $(SRC)/util/rsyslog.d $(DST_CFGDIR)
	cp -r $(SRC)/util/scripts $(DST_CFGDIR)
	cp -r $(SRC)/util/udev $(DST_CFGDIR)

# Patch weewx.conf with the various ROOT symbols
	cat $(SRC)/weewx.conf | sed \
 -e 's%^WEEWX_ROOT =.*%WEEWX_ROOT = /etc/weewx%' \
 -e 's%SKIN_ROOT =.*%SKIN_ROOT = skins%' \
 -e 's%HTML_ROOT = public_html%HTML_ROOT = /var/www/html/weewx%' \
 -e 's%SQLITE_ROOT = .*%SQLITE_ROOT = /var/lib/weewx%' \
 > $(DST_CFGDIR)/weewx.conf

# Patch the weewx.service file to read /etd/default/weewx, then
# use its symbols to invoke weewxd
	cat $(SRC)/util/systemd/weewx.service | sed \
 -e '/^\[Service\]/a EnvironmentFile=/etc/default/weewx' \
 -e 's%^ExecStart=.*%ExecStart=/usr/bin/env $${WEEWX_BIN} $${WEEWX_CFG}%' \
 > $(DST_SYSTEMDDIR)/weewx.service

# make a virgin copy of the configuration file
	cp $(DST_CFGDIR)/weewx.conf $(DST_CFGDIR)/weewx.conf.dist

# create the entry points
	for f in $(ENTRIES); do \
  cp $(SRC)/util/scripts/$$f $(DST)/usr/bin; \
done

# configure application layout
	cat $(SRC)/util/default/weewx | sed \
 -e 's%WEEWX_PYTHON=.*%WEEWX_PYTHON=$(PYTHON)%' \
 -e 's%WEEWX_BINDIR=.*%WEEWX_BINDIR=/usr/share/weewx%' \
 -e 's%WEEWX_BIN=.*%WEEWX_BIN=/usr/bin/weewxd%' \
 -e 's%WEEWX_CFG=.*%WEEWX_CFG=/etc/weewx/weewx.conf%' \
 > $(DST)/etc/default/weewx

# additional debian control files that dpkg-buildpackage seems to ignore
	mkdir -p $(DST)/DEBIAN
	cp $(SRC)/debian/config $(DST)/DEBIAN
	cp $(SRC)/debian/templates $(DST)/DEBIAN

binary-indep: install
	dh_installchangelogs
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb -- -Zgzip

binary-arch:

binary: binary-indep binary-arch

.PHONY: build clean binary-indep binary-arch binary install configure
