e57ae71
From 5b54c3a0287a92008f1a795af45c43445a4daac9 Mon Sep 17 00:00:00 2001
e57ae71
From: Miklos Vajna <vmiklos@frugalware.org>
e57ae71
Date: Mon, 27 Dec 2010 17:14:27 +0100
e57ae71
Subject: [PATCH] systemd: install systemd unit files
e57ae71
e57ae71
bitlbee.service provides ForkDaemon mode,
e57ae71
bitlbee.socket/bitlbee@.service is available as well for the depreceated
e57ae71
inetd mode.
e57ae71
---
e57ae71
 Makefile                 |   20 +++++++++++++++++---
e57ae71
 configure                |   19 +++++++++++++++++++
e57ae71
 init/bitlbee.service.in  |    9 +++++++++
e57ae71
 init/bitlbee.socket      |    9 +++++++++
e57ae71
 init/bitlbee@.service.in |    8 ++++++++
e57ae71
 5 files changed, 62 insertions(+), 3 deletions(-)
e57ae71
 create mode 100644 init/bitlbee.service.in
e57ae71
 create mode 100644 init/bitlbee.socket
e57ae71
 create mode 100644 init/bitlbee@.service.in
e57ae71
e57ae71
diff --git a/Makefile b/Makefile
e57ae71
index 24ef216..9afd4e0 100644
e57ae71
--- a/Makefile
e57ae71
+++ b/Makefile
e57ae71
@@ -26,18 +26,18 @@ endif
e57ae71
 # Expansion of variables
e57ae71
 subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o)
e57ae71
 
e57ae71
-all: $(OUTFILE) $(OTR_PI)
e57ae71
+all: $(OUTFILE) $(OTR_PI) systemd
e57ae71
 	$(MAKE) -C doc
e57ae71
 
e57ae71
 uninstall: uninstall-bin uninstall-doc 
e57ae71
 	@echo -e '\nmake uninstall does not remove files in '$(DESTDIR)$(ETCDIR)', you can use make uninstall-etc to do that.\n'
e57ae71
 
e57ae71
-install: install-bin install-doc install-plugins
e57ae71
+install: install-bin install-doc install-plugins install-systemd
e57ae71
 	@if ! [ -d $(DESTDIR)$(CONFIG) ]; then echo -e '\nThe configuration directory $(DESTDIR)$(CONFIG) does not exist yet, don'\''t forget to create it!'; fi
e57ae71
 	@if ! [ -e $(DESTDIR)$(ETCDIR)/bitlbee.conf ]; then echo -e '\nNo files are installed in '$(DESTDIR)$(ETCDIR)' by make install. Run make install-etc to do that.'; fi
e57ae71
 	@echo
e57ae71
 
e57ae71
-.PHONY:   install   install-bin   install-etc   install-doc install-plugins \
e57ae71
+.PHONY:   install   install-bin   install-etc   install-doc install-plugins install-systemd \
e57ae71
         uninstall uninstall-bin uninstall-etc uninstall-doc \
e57ae71
         all clean distclean tar $(subdirs)
e57ae71
 
e57ae71
@@ -109,6 +109,20 @@ ifdef OTR_PI
e57ae71
 	install -m 0755 otr.so $(DESTDIR)$(PLUGINDIR)
e57ae71
 endif
e57ae71
 
e57ae71
+systemd:
e57ae71
+ifdef SYSTEMDSYSTEMUNITDIR
e57ae71
+	sed 's|@sbindir@|$(BINDIR)|' init/bitlbee.service.in > init/bitlbee.service
e57ae71
+	sed 's|@sbindir@|$(BINDIR)|' init/bitlbee@.service.in > init/bitlbee@.service
e57ae71
+endif
e57ae71
+
e57ae71
+install-systemd:
e57ae71
+ifdef SYSTEMDSYSTEMUNITDIR
e57ae71
+	mkdir -p $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
e57ae71
+	install -m 0644 init/bitlbee.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
e57ae71
+	install -m 0644 init/bitlbee@.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
e57ae71
+	install -m 0644 init/bitlbee.socket $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
e57ae71
+endif
e57ae71
+
e57ae71
 tar:
e57ae71
 	fakeroot debian/rules clean || make distclean
e57ae71
 	x=$$(basename $$(pwd)); \
e57ae71
diff --git a/configure b/configure
e57ae71
index 3a3796d..8617d60 100755
e57ae71
--- a/configure
e57ae71
+++ b/configure
e57ae71
@@ -15,6 +15,7 @@ datadir='$prefix/share/bitlbee/'
e57ae71
 config='/var/lib/bitlbee/'
e57ae71
 plugindir='$prefix/lib/bitlbee/'
e57ae71
 includedir='$prefix/include/bitlbee/'
e57ae71
+systemdsystemunitdir=''
e57ae71
 libevent='/usr/'
e57ae71
 pidfile='/var/run/bitlbee.pid'
e57ae71
 ipcsocket='/var/run/bitlbee.sock'
e57ae71
@@ -62,6 +63,7 @@ Option		Description				Default
e57ae71
 --mandir=...						$mandir
e57ae71
 --datadir=...						$datadir
e57ae71
 --plugindir=...						$plugindir
e57ae71
+--systemdsystemunitdir=...				$systemdsystemunitdir
e57ae71
 --pidfile=...						$pidfile
e57ae71
 --config=...						$config
e57ae71
 --ipcsocket=...						$ipcsocket
e57ae71
@@ -487,6 +489,17 @@ else
e57ae71
 	fi;
e57ae71
 fi
e57ae71
 
e57ae71
+if [ -z "$systemdsystemunitdir" ]; then
e57ae71
+	if $PKG_CONFIG --exists systemd; then
e57ae71
+		systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
e57ae71
+	fi
e57ae71
+fi
e57ae71
+if [ -n "$systemdsystemunitdir" ]; then
e57ae71
+	if [ "$systemdsystemunitdir" != "no" ]; then
e57ae71
+		echo "SYSTEMDSYSTEMUNITDIR=$systemdsystemunitdir" >> Makefile.settings
e57ae71
+	fi
e57ae71
+fi
e57ae71
+
e57ae71
 if [ "$gcov" = "1" ]; then
e57ae71
 	echo "CFLAGS+=--coverage" >> Makefile.settings
e57ae71
 	echo "EFLAGS+=--coverage" >> Makefile.settings
e57ae71
@@ -740,6 +753,12 @@ else
e57ae71
 	echo '  Off-the-Record (OTR) Messaging disabled.'
e57ae71
 fi
e57ae71
 
e57ae71
+if [ -n "$systemdsystemunitdir" ]; then
e57ae71
+	echo '  systemd enabled.'
e57ae71
+else
e57ae71
+	echo '  systemd disabled.'
e57ae71
+fi
e57ae71
+
e57ae71
 echo '  Using event handler: '$events
e57ae71
 echo '  Using SSL library: '$ssl
e57ae71
 echo '  Building with these storage backends: '$STORAGES
e57ae71
diff --git a/init/bitlbee.service.in b/init/bitlbee.service.in
e57ae71
new file mode 100644
e57ae71
index 0000000..95cbe25
e57ae71
--- /dev/null
e57ae71
+++ b/init/bitlbee.service.in
e57ae71
@@ -0,0 +1,9 @@
e57ae71
+[Unit]
e57ae71
+Description=BitlBee IRC/IM gateway
e57ae71
+After=syslog.target
e57ae71
+
e57ae71
+[Service]
e57ae71
+ExecStart=@sbindir@/bitlbee -F -n
e57ae71
+
e57ae71
+[Install]
e57ae71
+WantedBy=multi-user.target
e57ae71
diff --git a/init/bitlbee.socket b/init/bitlbee.socket
e57ae71
new file mode 100644
e57ae71
index 0000000..e5ceb47
e57ae71
--- /dev/null
e57ae71
+++ b/init/bitlbee.socket
e57ae71
@@ -0,0 +1,9 @@
e57ae71
+[Unit]
e57ae71
+Conflicts=bitlbee.service
e57ae71
+
e57ae71
+[Socket]
e57ae71
+ListenStream=127.0.0.1:6667
e57ae71
+Accept=yes
e57ae71
+
e57ae71
+[Install]
e57ae71
+WantedBy=sockets.target
e57ae71
diff --git a/init/bitlbee@.service.in b/init/bitlbee@.service.in
e57ae71
new file mode 100644
e57ae71
index 0000000..8b576a4
e57ae71
--- /dev/null
e57ae71
+++ b/init/bitlbee@.service.in
e57ae71
@@ -0,0 +1,8 @@
e57ae71
+[Unit]
e57ae71
+Description=BitlBee Per-Connection Server
e57ae71
+After=syslog.target
e57ae71
+
e57ae71
+[Service]
e57ae71
+ExecStart=@sbindir@/bitlbee
e57ae71
+StandardInput=socket
e57ae71
+User=bitlbee
e57ae71
-- 
e57ae71
1.7.3.4
e57ae71