[packages/python-dkimpy-milter] - fix paths, init script, allow only python 2 or 3 not both, still NFY

hawk hawk at pld-linux.org
Sun May 29 14:29:35 CEST 2022


commit 7afd9b06e7ac6a8c0cebb96212705f9d6ab390fa
Author: Marcin Krol <hawk at tld-linux.org>
Date:   Sun May 29 14:27:33 2022 +0200

    - fix paths, init script, allow only python 2 or 3 not both, still NFY

 dkimpy-milter.init        | 100 ++++++++++++++++++++++++++++++++++++++++++++++
 paths.patch               |  94 +++++++++++++++++++++++++++++++++++++++++++
 python-dkimpy-milter.spec |  41 ++++++++++++++++++-
 3 files changed, 233 insertions(+), 2 deletions(-)
---
diff --git a/python-dkimpy-milter.spec b/python-dkimpy-milter.spec
index 2d5dfe6..394f21d 100644
--- a/python-dkimpy-milter.spec
+++ b/python-dkimpy-milter.spec
@@ -1,9 +1,13 @@
 #
 # Conditional build:
 %bcond_with	tests	# unit tests
-%bcond_without	python2 # CPython 2.x module
+%bcond_with	python2 # CPython 2.x module
 %bcond_without	python3 # CPython 3.x module
 
+%if %{with python3}
+%undefine with_python2
+%endif
+
 # NOTES:
 # - 'module' should match the Python import path (first component?)
 # - 'egg_name' should equal to Python egg name
@@ -12,11 +16,13 @@
 Summary:	DKIM signing and verification milter
 Name:		python-%{module}
 Version:	1.2.2
-Release:	0.1
+Release:	0.2
 License:	BSD-like
 Group:		Libraries/Python
 Source0:	https://files.pythonhosted.org/packages/source/d/dkimpy-milter/%{module}-%{version}.tar.gz
 # Source0-md5:	dc0f054bc7dc6178eb31f20d93b73cca
+Source1:	dkimpy-milter.init
+Patch0:		paths.patch
 URL:		https://launchpad.net/dkimpy-milter
 %if %{with python2}
 BuildRequires:	python-modules >= 1:2.5
@@ -44,6 +50,7 @@ BuildRequires:	rpm-pythonprov
 BuildRequires:	rpmbuild(macros) >= 1.714
 Requires:	python-modules >= 1:2.5
 Requires:	python-setuptools
+Conflicts:	python3-dkimpy-milter
 BuildArch:	noarch
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -55,12 +62,14 @@ Summary:	DKIM signing and verification milter
 Group:		Libraries/Python
 Requires:	python3-modules >= 1:3.2
 Requires:	python3-setuptools
+Conflicts:	python-dkimpy-milter
 
 %description -n python3-%{module}
 DKIM signing and verification milter
 
 %prep
 %setup -q -n %{module}-%{version}
+%patch0 -p1
 
 %build
 %if %{with python2}
@@ -74,6 +83,9 @@ DKIM signing and verification milter
 %install
 rm -rf $RPM_BUILD_ROOT
 
+install -d $RPM_BUILD_ROOT/etc/{dkimpy-milter,rc.d/init.d}
+install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/dkimpy-milter
+
 %if %{with python2}
 %py_install
 
@@ -89,10 +101,34 @@ rm -rf $RPM_BUILD_ROOT
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%post
+/sbin/chkconfig --add dkimpy-milter
+%service dkimpy-milter restart
+
+%preun
+if [ "$1" = "0" ]; then
+        %service dkimpy-milter stop
+        /sbin/chkconfig --del dkimpy-milter
+fi
+
+%post -n python3-%{module}
+/sbin/chkconfig --add dkimpy-milter
+%service dkimpy-milter restart
+
+%preun -n python3-%{module}
+if [ "$1" = "0" ]; then
+        %service dkimpy-milter stop
+        /sbin/chkconfig --del dkimpy-milter
+fi
+
 %if %{with python2}
 %files
 %defattr(644,root,root,755)
 %doc README.md
+%attr(754,root,root) /etc/rc.d/init.d/dkimpy-milter
+%attr(755,root,root) %{_bindir}/dkimpy-milter
+%{_mandir}/man5/dkimpy-milter.conf.5*
+%{_mandir}/man8/dkimpy-milter.8*
 %{py_sitescriptdir}/dkimpy_milter
 %{py_sitescriptdir}/dkimpy_milter-%{version}-py*.egg-info
 %endif
@@ -101,6 +137,7 @@ rm -rf $RPM_BUILD_ROOT
 %files -n python3-%{module}
 %defattr(644,root,root,755)
 %doc README.md
+%attr(754,root,root) /etc/rc.d/init.d/dkimpy-milter
 %attr(755,root,root) %{_bindir}/dkimpy-milter
 %{_mandir}/man5/dkimpy-milter.conf.5*
 %{_mandir}/man8/dkimpy-milter.8*
diff --git a/dkimpy-milter.init b/dkimpy-milter.init
new file mode 100644
index 0000000..ce24462
--- /dev/null
+++ b/dkimpy-milter.init
@@ -0,0 +1,100 @@
+#!/bin/sh
+#
+# dkimpy-milter	This shell script takes care of starting and stopping
+#		dkimpy-milter.
+#
+# chkconfig:	345 80 30
+#
+# description: dkimpy-milter is a daemon that hooks into sendmail and \
+#              routes email messages for DKIM signing and validation
+#
+# processname:	dkimpy-milter
+# config:
+# pidfile:	/var/run/dkimpy-milter.pid
+#
+# $Id$
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+		msg_network_down "DKIM Milter"
+		exit 1
+	fi
+else
+	exit 0
+fi
+
+# Get service config - may override defaults
+[ -f /etc/sysconfig/dkimpy-milter ] && . /etc/sysconfig/dkimpy-milter
+
+start() {
+	# Check if the service is already running?
+	if [ -f /var/lock/subsys/dkimpy-milter ]; then
+		msg_already_running "DKIM Milter"
+		return
+	fi
+
+	msg_starting "DKIM Milter"
+	daemon /usr/sbin/dkimpy-milter
+	RETVAL=$?
+	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dkimpy-milter
+}
+
+stop() {
+	if [ ! -f /var/lock/subsys/dkimpy-milter ]; then
+		msg_not_running "DKIM Milter"
+		return
+	fi
+
+	# Stop daemons.
+	msg_stopping "DKIM Milter"
+	killproc dkimpy-milter
+	rm -f /var/lock/subsys/dkimpy-milter
+}
+
+condrestart() {
+	if [ ! -f /var/lock/subsys/dkimpy-milter ]; then
+		msg_not_running "DKIM Milter"
+		RETVAL=$1
+		return
+	fi
+
+	stop
+	start
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  restart)
+	stop
+	start
+	;;
+  try-restart)
+	condrestart 0
+	;;
+  force-reload)
+	condrestart 7
+	;;
+  status)
+	status dkimpy-milter
+	RETVAL=$?
+	;;
+  *)
+	msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
+	exit 3
+esac
+
+exit $RETVAL
diff --git a/paths.patch b/paths.patch
new file mode 100644
index 0000000..a2fa0d4
--- /dev/null
+++ b/paths.patch
@@ -0,0 +1,94 @@
+diff -ur dkimpy-milter-1.2.2.orig/dkimpy_milter/__init__.py dkimpy-milter-1.2.2/dkimpy_milter/__init__.py
+--- dkimpy-milter-1.2.2.orig/dkimpy_milter/__init__.py	2020-08-09 20:15:48.000000000 +0200
++++ dkimpy-milter-1.2.2/dkimpy_milter/__init__.py	2022-05-29 13:50:24.310772566 +0200
+@@ -451,7 +451,7 @@
+ def main():
+     # Ugh, but there's no easy way around this.
+     global milterconfig
+-    configFile = '/usr/local/etc/dkimpy-milter.conf'
++    configFile = '/etc/dkimpy-milter/dkimpy-milter.conf'
+     if len(sys.argv) > 1:
+         if (sys.argv[1] in ('-?', '--help', '-h')) or len(sys.argv) == 3 or \
+                (len(sys.argv) == 4 and sys.argv[2] != '-P'):
+@@ -484,7 +484,7 @@
+                 else:
+                     socketname = 'fd:3'
+         if socketname is None:
+-            socketname = 'local:/var/run/dkimpy-milter/dkimpy-milter.sock'
++            socketname = 'local:/var/spool/postfix/dkimpy-milter/dkimpy-milter.sock'
+     sys.stdout.flush()
+     if milterconfig.get('Syslog'):
+         syslog.syslog('dkimpy-milter starting:{0} user:{1}'
+diff -ur dkimpy-milter-1.2.2.orig/etc/dkimpy-milter.conf dkimpy-milter-1.2.2/etc/dkimpy-milter.conf
+--- dkimpy-milter-1.2.2.orig/etc/dkimpy-milter.conf	2020-04-09 04:49:44.000000000 +0200
++++ dkimpy-milter-1.2.2/etc/dkimpy-milter.conf	2022-05-29 13:51:41.948946914 +0200
+@@ -8,10 +8,10 @@
+ # privileged user (e.g. Postfix)
+ UMask			007
+ 
+-# Sign for example.com with key in /usr/local/etc/dkimkeys/dkim.key using
++# Sign for example.com with key in /etc/dkimpy-milter/dkim.key using
+ # selector '2007' (e.g. 2007._domainkey.example.com)
+ #Domain			example.com
+-#KeyFile		/usr/local/etc/mail/dkim.key
++#KeyFile		/etc/dkimpy-milter/example.com.key
+ #Selector		default
+ 
+ # Commonly-used options; the commented-out versions show the defaults.
+@@ -27,17 +27,18 @@
+ # ##  inet:port                   to listen on all interfaces
+ # ##  local:/path/to/socket       to listen on a UNIX domain socket
+ #
+-#Socket local:/run/dkimpy-milter/dkimpy-milter.sock
++#Socket local:/var/spool/postfix/dkimpy-milter/dkimpy-milter.sock
+ #
+ #Socket			inet:8892 at localhost
++Socket local:/var/spool/postfix/dkimpy-milter/dkimpy-milter.sock
+ 
+ ##  PidFile filename
+-###      default /run/dkimpy-milter/dkimpy-milter.pid
++###      default /var/run/dkimpy-milter.pid
+ ###
+ ###  Name of the file where the filter should write its pid before beginning
+ ###  normal operations.
+ #
+-PidFile			/run/dkimpy-milter/dkimpy-milter.pid
++PidFile			/var/run/dkimpy-milter.pid
+ 
+ ##  Userid userid
+ ###      default dkimpy-milter
+@@ -45,4 +46,4 @@
+ ###  Change to user "userid" before starting normal operation?  May include
+ ###  a group ID as well, separated from the userid by a colon.
+ #
+-UserID			dkimpy-milter
++UserID			root:postfix
+diff -ur dkimpy-milter-1.2.2.orig/setup.py dkimpy-milter-1.2.2/setup.py
+--- dkimpy-milter-1.2.2.orig/setup.py	2020-08-09 20:16:23.000000000 +0200
++++ dkimpy-milter-1.2.2/setup.py	2022-05-29 13:28:25.815906789 +0200
+@@ -32,17 +32,17 @@
+ class FileMacroExpand(distutils.cmd.Command):
+     description = "Expand @@ variables in input files, simlar to make macros."
+     user_options = [
+-        ('sysconfigdir=', 'e', 'Specify system configuration directory. [/usr/local/etc]'),
+-        ('sbindir=', 's', 'Specify system binary directory. [/usr/local/sbin]'),
+-        ('bindir=', 'b', 'Specify binary directory. [/usr/loca/bin]'),
+-        ('rundir=', 'r', 'Specify run state directory. [/run]'),
++        ('sysconfigdir=', 'e', 'Specify system configuration directory. [/etc]'),
++        ('sbindir=', 's', 'Specify system binary directory. [/usr/sbin]'),
++        ('bindir=', 'b', 'Specify binary directory. [/usr/bin]'),
++        ('rundir=', 'r', 'Specify run state directory. [/var/run]'),
+     ]
+ 
+     def initialize_options(self):
+-        self.sysconfigdir = '/usr/local/etc'
+-        self.sbindir = '/usr/local/sbin'
+-        self.bindir = '/usr/local/bin'
+-        self.rundir = '/run'
++        self.sysconfigdir = '/etc'
++        self.sbindir = '/usr/sbin'
++        self.bindir = '/usr/bin'
++        self.rundir = '/var/run'
+ 
+     def finalize_options(self):
+         self.configdir = self.sysconfigdir + '/dkimpy-milter'
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/python-dkimpy-milter.git/commitdiff/7afd9b06e7ac6a8c0cebb96212705f9d6ab390fa



More information about the pld-cvs-commit mailing list