summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/TODO3
-rw-r--r--debian/changelog412
-rw-r--r--debian/compat1
-rw-r--r--debian/control29
-rw-r--r--debian/copyright44
-rw-r--r--debian/gbp.conf2
-rw-r--r--debian/irker.docs2
-rw-r--r--debian/irker.examples1
-rw-r--r--debian/irker.init84
-rw-r--r--debian/irker.install3
-rw-r--r--debian/irker.links2
-rw-r--r--debian/irker.postinst30
-rw-r--r--debian/irker.postrm26
-rw-r--r--debian/irkerhook-debian.154
-rwxr-xr-xdebian/local/irkerhook-debian27
-rwxr-xr-xdebian/local/irkerhook-git17
-rw-r--r--debian/manpages1
-rw-r--r--debian/patches/0001-dfsg.patch22
-rw-r--r--debian/patches/0005-author-name.patch21
-rw-r--r--debian/patches/0006-alias-service.patch18
-rw-r--r--debian/patches/0007-irkerhook-git.patch28
-rw-r--r--debian/patches/0008-user-service.patch39
-rw-r--r--debian/patches/0009-env-service.patch28
-rw-r--r--debian/patches/0010-fix_ioerror_exception.patch33
-rw-r--r--debian/patches/0011-Import-upstream-tweaks-to-irkerd.service.patch23
-rw-r--r--debian/patches/0011-Update-irkerhook.py-to-work-under-python-3.patch230
-rw-r--r--debian/patches/0012-Drop-sorted-from-event_handler.patch25
-rw-r--r--debian/patches/0013-Fix-incorrect-name-in-Makefile.patch23
-rw-r--r--debian/patches/series11
-rwxr-xr-xdebian/rules19
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/options1
-rw-r--r--debian/watch3
33 files changed, 1263 insertions, 0 deletions
diff --git a/debian/TODO b/debian/TODO
new file mode 100644
index 0000000..794d96f
--- /dev/null
+++ b/debian/TODO
@@ -0,0 +1,3 @@
+* extend initscript that:
+ - has an option to join channels (via empty messages) on start
+ - takes nick and nickpassword from /etc/default/irker
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..f6c5a8c
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,412 @@
+irker (2.18+dfsg-3) unstable; urgency=low
+
+ * Migrate from SVN to git.
+ * Add patch to fix irkerd under python 3 from upstream issue tracker.
+ * Add patch to fix FTBFS due to Makefile copy and paste
+ error (Closes: 864612).
+ * Add patch so irkerhook.py runs under python 3 from upstream issue tracker.
+ * Add irkerd.service updates from upstream repository.
+ - Update Description.
+ - Add Documentation links to the service file.
+ * Fix some newer lintian warnings.
+ - Don't use chown -R on installation.
+ - Fix some spelling errors.
+ * Add "Rules-Requires-Root:" field to debian/control.
+ - Also bump Standards-Version to 4.1.5 (no further changes needed).
+ * Update years in copyright file.
+ * Change debhelper compatibility level to 11.
+ - Bump minimum debhelper version required.
+ - Remove obsolete dh-systemd dependency.
+ - Update debian/rules accordingly.
+
+ -- Neil Muller <drnlmuller+debian@gmail.com> Wed, 11 Jul 2018 14:43:05 +0200
+
+irker (2.18+dfsg-2) unstable; urgency=low
+
+ * Acknowledge Antoine Beaupré's NMU.
+ * Add missing dependency on lsb-base (lintian warning).
+ * Add IOError exception fix from upstream issue tracker.
+
+ -- Neil Muller <drnlmuller+debian@gmail.com> Tue, 01 Nov 2016 13:11:44 +0200
+
+irker (2.18+dfsg-1.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * new patches to the .service file:
+ * run daemon as the irker used (Closes: #832758)
+ * properly import environment from /etc/defaults (Closes: #832322)
+
+ -- Antoine Beaupré <anarcat@debian.org> Mon, 12 Sep 2016 11:59:26 -0400
+
+irker (2.18+dfsg-1) unstable; urgency=low
+
+ * Update to latest upstream release.
+ - Adds support for specifying a template for irc
+ messages (Closes: #824512).
+ * Extend 0007-irkerhook-git.patch to describe the limitations of
+ irkerhook-git in more detail.
+ * Make irkerhook-git complain if no project or template has been
+ configured.
+ * Drop obsolete dh_builddeb compression override.
+ * Bump Standards-Version to 3.9.8 (no changes needed).
+
+ -- Neil Muller <drnlmuller+debian@gmail.com> Fri, 17 Jun 2016 12:53:36 +0200
+
+irker (2.17+dfsg-1) unstable; urgency=low
+
+ * Update to latest upstream release.
+ - Adds a delay to reconnect attempts (Closes: #749650).
+ - License changed to BSD-2-clause license.
+ * Add manpage for the irkerhook-debian helper.
+ * Add 0007-irkerhook-git.patch to describer irkerhook-git in the
+ irkerhook manpage.
+ * Drop 0002-abbrev-commit.patch, 0003-abbrev-gitweb.patch and
+ 0004-webview.patch, as these fixes have been incorporated
+ upstream.
+ * Change VCS-Browser field to use https instead of http.
+ * Bump Standards-Version to 3.9.7 (no changes needed).
+
+ -- Neil Muller <drnlmuller+debian@gmail.com> Tue, 15 Mar 2016 14:55:22 +0200
+
+irker (2.13+dfsg-1) unstable; urgency=low
+
+ * Adopt irker under the Python Applications Packaging Team umbrella
+ (Closes: #756090).
+ * Update to upstream version 2.13 (Closes: #793031).
+ * Update years in copyright file.
+ * Add a watch file.
+ * Various lintian cleanups.
+ - Add missing stop levels to irker.init.
+ - Fix adduser call in postinst.
+ - Use BSD-3-clause as the copyright short name.
+ * Don't remove the irker user on package removal, since it may still own
+ files.
+ * Add an Alias entry to the systemd unit so it recognises the SysV init
+ script.
+ * Add dh_python to Build-Depends.
+ * Bump Standards-Version to 3.9.6 (no changes needed).
+
+ -- Neil Muller <drnlmuller+debian@gmail.com> Tue, 19 Jan 2016 22:46:39 +0200
+
+irker (2.12+dfsg-1) unstable; urgency=medium
+
+ * QA upload.
+ * Update to upstream version 2.12 (Closes: #775027)
+
+ -- Jonathan Wiltshire <jmw@debian.org> Sat, 17 Jan 2015 14:25:09 +0000
+
+irker (2.11+dfsg-2) unstable; urgency=low
+
+ * I don't care anymore, not worth it.. orphaning.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 25 Jul 2014 20:46:42 +0200
+
+irker (2.11+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 2.11+dfsg:
+ - irk works with ircs URLs (Closes: #749818).
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Tue, 24 Jun 2014 16:30:06 +0200
+
+irker (2.9+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 2.9+dfsg.
+ * Refreshing webview.patch.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Tue, 10 Jun 2014 19:56:49 +0200
+
+irker (2.8+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 2.8+dfsg.
+ * Dripping irk-manpage.patch, included upstream.
+ * Adding patch to use author_name instead of author in Git
+ notifications.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 31 May 2014 11:54:17 +0200
+
+irker (2.7+dfsg-2) unstable; urgency=low
+
+ * Adding manpage for irk from Antoine Beaupre <anarcat@debian.org>
+ (Closes: 746535).
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 03 May 2014 12:28:08 +0200
+
+irker (2.7+dfsg-1) unstable; urgency=low
+
+ * Dropping debconf handling (Closes: #743472).
+ * Merging upstream version 2.7+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 05 Apr 2014 11:21:21 +0200
+
+irker (2.6+dfsg-2) unstable; urgency=low
+
+ * Building with dh --parallel.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Mon, 31 Mar 2014 21:00:17 +0200
+
+irker (2.6+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.6+dfgs.
+ * Updating year in copyright file.
+ * Dropping daemon user debconf support, there's no practical need to run
+ irker under a different unprivileged user anyway.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 05 Feb 2014 20:41:13 +0100
+
+irker (2.5+dfsg-5) experimental; urgency=low
+
+ * Adding support for multiple channels in irkerhook-debian.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 19 Jan 2014 08:38:40 +0100
+
+irker (2.5+dfsg-4) experimental; urgency=low
+
+ * Running git hook with set -e.
+ * Adding generic irkerhook for random debian purposes (such as lxc).
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 17 Jan 2014 16:17:28 +0100
+
+irker (2.5+dfsg-3) experimental; urgency=low
+
+ * Disabling url check in irkerhook.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 16 Jan 2014 14:43:37 +0100
+
+irker (2.5+dfsg-2) experimental; urgency=low
+
+ * Updating local git hook for newer irker and git versions.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Mon, 13 Jan 2014 13:31:56 +0100
+
+irker (2.5+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.5+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 27 Dec 2013 15:51:30 +0100
+
+irker (2.4+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.4+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 05 Dec 2013 19:22:40 +0100
+
+irker (2.3+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.3+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 01 Dec 2013 09:20:51 +0100
+
+irker (2.2+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.2+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 01 Dec 2013 09:19:21 +0100
+
+irker (2.1+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 2.1+dfsg.
+ * Adding patch to avoid rcopying removed logo file.
+ * Renumbering patches.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 27 Nov 2013 07:04:08 +0100
+
+irker (2.0+dfsg-1) experimental; urgency=low
+
+ * Rewrapping init script.
+ * Updating to standards version 3.9.5.
+ * Merging upstream version 2.0+dfsg.
+ * Dropping python-irc from depends, not required anymore.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 16 Nov 2013 14:29:36 +0100
+
+irker (1.20+dfsg-5) experimental; urgency=low
+
+ * Adding explicit depends to adduser (Closes: #722466).
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 11 Sep 2013 15:45:58 +0200
+
+irker (1.20+dfsg-4) experimental; urgency=low
+
+ * Updating vcs fields.
+ * Adding initscript.
+ * Updating todo file.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Mon, 09 Sep 2013 11:30:26 +0200
+
+irker (1.20+dfsg-3) experimental; urgency=low
+
+ * Adding vcs fields.
+ * Wrapping control fields.
+ * Adding manpage symlinks.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 17 Jul 2013 13:17:05 +0200
+
+irker (1.20+dfsg-2) experimental; urgency=low
+
+ [ Michael Stapelberg ]
+ * Using dh-systemd for proper systemd-related maintscripts (Closes: #715252).
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 12 Jul 2013 15:30:26 +0200
+
+irker (1.20+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.20+dfsg.
+ * Rediffing abbrev-commit.patch.
+ * Rediffing abbrev-gitweb.patch.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Tue, 28 May 2013 15:07:01 +0200
+
+irker (1.19+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.19+dfsg.
+ * Sorting targets in rules.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 16 May 2013 10:46:00 +0200
+
+irker (1.18+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.18+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 18 Apr 2013 06:16:13 +0200
+
+irker (1.17+dfsg-3) unstable; urgency=low
+
+ * Removing all references to my old email address.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 10 Mar 2013 20:52:36 +0100
+
+irker (1.17+dfsg-2) unstable; urgency=low
+
+ * Make irkerhook-git more usable by checking for irker.project value in
+ repository config.
+ * Renumbering patches with four leading digits.
+ * Trimming diff headers in patches.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 10 Mar 2013 20:51:10 +0100
+
+irker (1.17+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 1.17+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 07 Feb 2013 12:26:45 +0100
+
+irker (1.16+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 1.16+dfsg.
+ * Updating year in copyright file.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 26 Jan 2013 20:54:31 +0100
+
+irker (1.15+dfsg-2) unstable; urgency=low
+
+ * Updating year in copyright file.
+ * Adding dpkg-source local-options.
+ * Dropping dpkg-source compression levels.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 24 Jan 2013 16:10:06 +0100
+
+irker (1.15+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 1.15+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Mon, 10 Dec 2012 11:54:36 +0100
+
+irker (1.14+dfsg-1) unstable; urgency=low
+
+ * Merging upstream version 1.14+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 28 Nov 2012 14:08:48 +0100
+
+irker (1.13+dfsg-2) unstable; urgency=low
+
+ * Dropping alternate depends on python-irclib.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 11 Nov 2012 19:54:16 +0100
+
+irker (1.13+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.13+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 08 Nov 2012 11:51:26 +0100
+
+irker (1.12+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.12+dfsg.
+ * Bumping versioned build-depends on python-irclib.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 12 Oct 2012 07:00:04 +0200
+
+irker (1.11+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.11+dfsg.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 11 Oct 2012 07:22:58 +0200
+
+irker (1.10+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.10+dfsg.
+ * Removing python-eventlet recommends, upstream dropped support for
+ it.
+ * Updating python irc depends.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 10 Oct 2012 09:51:02 +0200
+
+irker (1.9+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.9+dfsg.
+ * Adding systemd and pkg-config to build-depends to automatically
+ guess systemd unit directory.
+ * Adding todo file.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Tue, 09 Oct 2012 07:44:39 +0200
+
+irker (1.8+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.8+dfsg.
+ * Removing tinyifier-config.patch, included upstream.
+ * Removing irk-netcat.patch, not applicable anymore.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sun, 07 Oct 2012 09:58:51 +0200
+
+irker (1.7+dfsg-3) experimental; urgency=low
+
+ * Adding patch for irk test tool to let netcat terminate in order to
+ send the request.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 06 Oct 2012 15:21:02 +0200
+
+irker (1.7+dfsg-2) experimental; urgency=low
+
+ * Adding patch to show commit IDs shortened by default to 7 characters
+ (in line with default git --abbrev-commit) rather than the unusual
+ 12.
+ * Adding patch to show commit IDs shortened by default to 7 characters
+ (in line with default git --abbrev-commit) rather than the unusual
+ 12 also in gitweb.
+ * Adding patch from upstream to get tinyfier from the config.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Sat, 06 Oct 2012 14:08:38 +0200
+
+irker (1.7+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.7+dfsg.
+ * Adding irkerhook-git to be symlinked in git repositories.
+ * Adding debhelper install file to install irk.
+ * Adding debhelper examples file to install filter examples.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Fri, 05 Oct 2012 20:39:46 +0200
+
+irker (1.6+dfsg-1) experimental; urgency=low
+
+ * Merging upstream version 1.6+dfsg.
+ * Removing vanished bugs file from debhelper docs.
+ * Making comment about removing irker-logo.png in source more precise.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Thu, 04 Oct 2012 20:59:35 +0200
+
+irker (1.5+dfsg-1) experimental; urgency=low
+
+ * Initial release (Closes: #689011).
+ * Rebuild upstream tarball without sourceless irker logo.
+
+ -- Daniel Baumann <mail@daniel-baumann.ch> Wed, 03 Oct 2012 12:35:32 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..b4de394
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+11
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..928de21
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,29 @@
+Source: irker
+Section: utils
+Priority: optional
+Maintainer: Python Applications Packaging Team <python-apps-team@lists.alioth.debian.org>
+Uploaders: Neil Muller <drnlmuller+debian@gmail.com>
+Build-Depends:
+ debhelper (>= 11),
+ pkg-config,
+ python,
+ systemd,
+ xmlto,
+ dh-python
+Standards-Version: 4.1.5
+Rules-Requires-Root: binary-targets
+Homepage: http://www.catb.org/esr/irker/
+Vcs-Browser: https://salsa.debian.org/python-team/applications/irker
+Vcs-Git: https://salsa.debian.org/python-team/applications/irker.git
+
+Package: irker
+Architecture: all
+Depends:
+ ${misc:Depends},
+ ${python:Depends},
+ lsb-base,
+ adduser,
+Description: submission tools for IRC notifications
+ irkerd is a specialized IRC client that runs as a daemon, allowing other
+ programs to ship IRC notifications by sending JSON objects to a listening
+ socket.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..9edcad8
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,44 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: irker
+Upstream-Contact: Eric S. Raymond <esr@thyrsus.com>
+Files-Excluded: irker-logo.png
+Source: http://www.catb.org/esr/irker/
+ The irker-log.png file is removed because it has no known origin and
+ no source is available for it.
+
+Files: *
+Copyright: 2012-2016 Eric S. Raymond <esr@thyrsus.com>
+License: BSD-2-clause
+
+Files: debian/*
+Copyright: 2012-2014 Daniel Baumann <mail@daniel-baumann.ch>
+ 2016-2018 Neil Muller <drnlmuller+debain@gmail.com>
+License: BSD-2-clause
+Comment:
+ Daniel Baumann relicensed his contribution from BSD-3-clause
+ to BSD-2-clause on 15th January, 2016 to match upstream's
+ license change.
+
+License: BSD-2-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ .
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..3879982
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,2 @@
+[DEFAULT]
+debian-branch=debian/master
diff --git a/debian/irker.docs b/debian/irker.docs
new file mode 100644
index 0000000..3b2cfe7
--- /dev/null
+++ b/debian/irker.docs
@@ -0,0 +1,2 @@
+README
+*.txt
diff --git a/debian/irker.examples b/debian/irker.examples
new file mode 100644
index 0000000..369085b
--- /dev/null
+++ b/debian/irker.examples
@@ -0,0 +1 @@
+filter*.py
diff --git a/debian/irker.init b/debian/irker.init
new file mode 100644
index 0000000..27ff9cc
--- /dev/null
+++ b/debian/irker.init
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: irker
+# Required-Start: $local_fs $remote_fs $syslog $network
+# Required-Stop: $local_fs $remote_fs $syslog $network
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: submission tools for IRC notifications
+# Description: irkerd is a specialized IRC client that runs as a
+# daemon, allowing other programs to ship IRC
+# notifications by sending JSON objects to a listening
+# socket.
+### END INIT INFO
+
+PATH="/sbin:/bin:/usr/sbin:/usr/bin"
+DAEMON="/usr/bin/irkerd"
+
+test -x "${DAEMON}" || exit 0
+
+NAME="irkerd"
+DESC="IRC notifications"
+PIDFILE="/var/run/irker.pid"
+DEFAULTS="/etc/default/irker"
+
+for _FILE in "${DEFAULTS}" "${DEFAULTS}".d/*
+do
+ if [ -e "${_FILE}" ]
+ then
+ . "${_FILE}"
+ fi
+done
+
+set -e
+
+. /lib/lsb/init-functions
+
+do_start()
+{
+ start-stop-daemon --start --background --quiet --oknodo --exec ${DAEMON} --chuid irker -- -l /var/log/irker/irker.log ${IRKER_OPTIONS}
+}
+
+do_stop ()
+{
+ start-stop-daemon --stop --quiet --oknodo --name ${NAME}
+}
+
+do_reload ()
+{
+ start-stop-daemon --stop --quiet --oknodo --name ${NAME} --signal 1
+}
+
+case "${1}" in
+ start)
+ log_daemon_msg "Starting ${DESC}" "${NAME}"
+ do_start
+ log_end_msg ${?}
+ ;;
+
+ stop)
+ log_daemon_msg "Stopping ${DESC}" "${NAME}"
+ do_stop
+ log_end_msg ${?}
+ ;;
+
+ restart|force-reload)
+ log_daemon_msg "Restarting ${DESC}" "${NAME}"
+ do_stop
+ sleep 1
+ do_start
+ log_end_msg ${?}
+ ;;
+
+ status)
+ status_of_proc ${DAEMON} ${NAME}
+ ;;
+
+ *)
+ echo "Usage: ${0} {start|stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/debian/irker.install b/debian/irker.install
new file mode 100644
index 0000000..d3649a4
--- /dev/null
+++ b/debian/irker.install
@@ -0,0 +1,3 @@
+irk /usr/bin
+
+debian/local/* /usr/bin
diff --git a/debian/irker.links b/debian/irker.links
new file mode 100644
index 0000000..bf03253
--- /dev/null
+++ b/debian/irker.links
@@ -0,0 +1,2 @@
+/usr/share/man/man8/irkerd.8.gz /usr/share/man/man8/irk.8.gz
+/usr/share/man/man1/irkerhook.1.gz /usr/share/man/man1/irkerhook-git.1.gz
diff --git a/debian/irker.postinst b/debian/irker.postinst
new file mode 100644
index 0000000..ce4f7a5
--- /dev/null
+++ b/debian/irker.postinst
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+set -e
+
+case "${1}" in
+ configure)
+ if ! getent passwd irker > /dev/null 2>&1
+ then
+ adduser --system --no-create-home --home /nonexistent --quiet --gecos 'irker daemon' --group irker
+ else
+ echo "irker user already exists, doing nothing."
+ fi
+
+ mkdir -p /var/log/irker
+ chown irker:irker /var/log/irker
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/irker.postrm b/debian/irker.postrm
new file mode 100644
index 0000000..4dcfac0
--- /dev/null
+++ b/debian/irker.postrm
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+set -e
+
+case "${1}" in
+ remove)
+ rmdir /var/log/irker > /dev/null 2>&1 || true
+ ;;
+
+ purge)
+ rm -f /etc/default/irker
+ ;;
+
+ upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/irkerhook-debian.1 b/debian/irkerhook-debian.1
new file mode 100644
index 0000000..80b902a
--- /dev/null
+++ b/debian/irkerhook-debian.1
@@ -0,0 +1,54 @@
+'\" t
+.\" Title: irkerhook-debian
+.\" Language: English
+.\"
+.TH "IRKERHOOK\-DEBIAN" "1" "14/03/2016"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+irkerhook-debian \- A simple wrapper for generating irker notifications
+.SH "SYNOPSIS"
+.sp
+\fBirkerhook\-debian\fR \fImessage\fR
+.SH "DESCRIPTION"
+.sp
+Irkerhook\-debian is a simple wrapper around irk for providing notifications
+from service startup or monitoring scripts\&.
+.PP
+A symlink to the irkerhook\-debian script should be added to the service\&.
+.PP
+The behaviour of the script can be configured for each service via a /etc/default/<symlink name> file\&.
+.PP
+The script recognises 2 configuration options:
+.PP
+\fBIRC_CHANNELS\fR
+.RS 4
+A list of channels to post the notification to.
+.PP
+.RE
+\fBIRK_ENABLED\fR
+.RS 4
+Set IRK_ENABLED to "true" to enable notifications. For other values,
+notifications will be disabled.
+.RE
+.SH "SEE ALSO"
+.sp
+\&\fIirk\fR\|(1), \fIirkerhook\fR\|(1)
+.SH "AUTHORS"
+.sp
+.nf
+This manual page was written by Neil Muller <drnlmuller+debian@gmail\&.com>\&.
+.SH "LICENSE"
+.sp
+.nf
+This package is licensed under the BSD 2 clause license.
+You can find the full text of the license in
+/usr/share/doc/irker/copyright\&.
diff --git a/debian/local/irkerhook-debian b/debian/local/irkerhook-debian
new file mode 100755
index 0000000..1f05304
--- /dev/null
+++ b/debian/local/irkerhook-debian
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+set -e
+
+_MESSAGE="${@}"
+
+_PROGRAM="$(basename ${0})"
+
+for _FILE in "/etc/default/${_PROGRAM}" "/etc/default/${_PROGRAM}.d"/*
+do
+ if [ -e "${_FILE}" ]
+ then
+ . "${_FILE}" || true
+ fi
+done
+
+if [ "${IRK_ENABLED}" != "true" ]
+then
+ exit 0
+fi
+
+echo "sending IRC notification"
+
+for IRC_CHANNEL in ${IRC_CHANNELS}
+do
+ irk ${IRC_CHANNEL} "${_MESSAGE}"
+done
diff --git a/debian/local/irkerhook-git b/debian/local/irkerhook-git
new file mode 100755
index 0000000..1f746e8
--- /dev/null
+++ b/debian/local/irkerhook-git
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+if [ -z "$(git config --get irker.project)" -a -z "$(git config --get irker.template)" ]
+then
+ echo "CONFIGURATION ERROR: Neither irker.project nor irker.template defined"
+ echo "NOT sending IRC notification"
+ exit 0
+fi
+
+echo "sending IRC notification"
+
+while read old new refname
+do
+ irkerhook --refname=${refname} $(git rev-list --reverse ${old}..${new})
+done
diff --git a/debian/manpages b/debian/manpages
new file mode 100644
index 0000000..eb19f7c
--- /dev/null
+++ b/debian/manpages
@@ -0,0 +1 @@
+debian/irkerhook-debian.1
diff --git a/debian/patches/0001-dfsg.patch b/debian/patches/0001-dfsg.patch
new file mode 100644
index 0000000..fafc040
--- /dev/null
+++ b/debian/patches/0001-dfsg.patch
@@ -0,0 +1,22 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: Removing logo (no origin known and no source available)
+
+---
+ Makefile | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ce8a1de..fc6ac7f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -92,8 +92,7 @@ SOURCES = \
+
+ EXTRA_DIST = \
+ org.catb.irkerd.plist \
+- irkerd.service \
+- irker-logo.png
++ irkerd.service
+
+ version:
+ @echo $(VERS)
diff --git a/debian/patches/0005-author-name.patch b/debian/patches/0005-author-name.patch
new file mode 100644
index 0000000..2df8644
--- /dev/null
+++ b/debian/patches/0005-author-name.patch
@@ -0,0 +1,21 @@
+From: Daniel Baumann <mail@daniel-baumann.ch>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: Use author_name instead of author in Git notifications.
+
+---
+ irkerhook.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/irkerhook.py b/irkerhook.py
+index 9768eac..8bf46f8 100755
+--- a/irkerhook.py
++++ b/irkerhook.py
+@@ -298,7 +298,7 @@ class GitExtractor(GenericExtractor):
+ # Might be be nice to ship the full email address, if not
+ # for spammers' address harvesters - getting this wrong
+ # would make the freenode #commits channel into harvester heaven.
+- commit.author = commit.mail.split("@")[0]
++ commit.author = commit.author_name
+ commit.author_date, commit.commit_date = \
+ do("git log -1 '--pretty=format:%ai|%ci' " + shellquote(commit.commit)).split("|")
+ return commit
diff --git a/debian/patches/0006-alias-service.patch b/debian/patches/0006-alias-service.patch
new file mode 100644
index 0000000..858773f
--- /dev/null
+++ b/debian/patches/0006-alias-service.patch
@@ -0,0 +1,18 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: Add an alias to the upstream service file so the sysinit and systemd
+
+scripts play nicely together.
+---
+ irkerd.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/irkerd.service b/irkerd.service
+index d19378b..74e9126 100644
+--- a/irkerd.service
++++ b/irkerd.service
+@@ -10,3 +10,4 @@ ExecStart=/usr/bin/irkerd
+
+ [Install]
+ WantedBy=multi-user.target
++Alias=irker.service
diff --git a/debian/patches/0007-irkerhook-git.patch b/debian/patches/0007-irkerhook-git.patch
new file mode 100644
index 0000000..058ad58
--- /dev/null
+++ b/debian/patches/0007-irkerhook-git.patch
@@ -0,0 +1,28 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: Add description for the irkerhook-git helper script.
+
+The debian packages add a irkerhook-git helper script, which simplifies
+the most common use case for irkerhook with git. This patch mentions the
+helper script in the irkerhook manpage.
+Last-Update: 2016-03-15
+---
+ irkerhook.xml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/irkerhook.xml b/irkerhook.xml
+index 2f068d2..efb4bc1 100644
+--- a/irkerhook.xml
++++ b/irkerhook.xml
+@@ -217,6 +217,11 @@ while read old new refname; do
+ done
+ </programlisting>
+
++<para>For convenience, this is implemented by the irkerhook-git
++helper script. This script will complain about some common configuration
++isssues. For simplicity, irkerhook-git does not support all the
++options of irkerhook.py, and is thus not suitable for all applications.</para>
++
+ <para>Preferences may be set in the repo <filename>config</filename>
+ file in an [irker] section. Here is an example of what that can look
+ like:</para>
diff --git a/debian/patches/0008-user-service.patch b/debian/patches/0008-user-service.patch
new file mode 100644
index 0000000..06b6530
--- /dev/null
+++ b/debian/patches/0008-user-service.patch
@@ -0,0 +1,39 @@
+From: Python Applications Packaging Team
+ <python-apps-team@lists.alioth.debian.org>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: user-service
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+commit 1980b7cb4239463b581579cc39480774d3e2d2fe
+Author: Antoine Beaupré <anarcat@debian.org>
+Date: Mon Sep 12 12:01:44 2016 -0400
+
+ run daemon as the irker user (Close: #832758)
+
+ this is an improvement upon the default .service file. it requires a
+ irker user to be created, something which is automatically handled by
+ the debian package, but should be handled by other distributions when
+ deploying the .service file.
+
+ there are obvious dangers in running irkerd as root: a compromise
+ would be catastrophic, and since it runs on public servers that are
+ traditionnally pretty hostile (IRC), it seems critical that rights of
+ the daemon be limited.
+---
+ irkerd.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/irkerd.service b/irkerd.service
+index 74e9126..2318f54 100644
+--- a/irkerd.service
++++ b/irkerd.service
+@@ -7,6 +7,7 @@ Requires=network.target
+
+ [Service]
+ ExecStart=/usr/bin/irkerd
++User=irker
+
+ [Install]
+ WantedBy=multi-user.target
diff --git a/debian/patches/0009-env-service.patch b/debian/patches/0009-env-service.patch
new file mode 100644
index 0000000..70a0dc7
--- /dev/null
+++ b/debian/patches/0009-env-service.patch
@@ -0,0 +1,28 @@
+From: Python Applications Packaging Team
+ <python-apps-team@lists.alioth.debian.org>
+Date: Sun, 13 May 2018 15:07:57 +0200
+Subject: env-service
+
+ Properly import environment from /etc/defaults (Closes: #832322)
+
+ This fixes a regression in the systemd unit, which doesn't support
+ the equivalent /etc/default/irker configuration supported by the
+ sysvinit startup scripts.
+---
+ irkerd.service | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/irkerd.service b/irkerd.service
+index 2318f54..a9a6675 100644
+--- a/irkerd.service
++++ b/irkerd.service
+@@ -6,7 +6,8 @@ Description=irker daemon
+ Requires=network.target
+
+ [Service]
+-ExecStart=/usr/bin/irkerd
++EnvironmentFile=-/etc/default/irker
++ExecStart=/usr/bin/irkerd $IRKER_OPTIONS
+ User=irker
+
+ [Install]
diff --git a/debian/patches/0010-fix_ioerror_exception.patch b/debian/patches/0010-fix_ioerror_exception.patch
new file mode 100644
index 0000000..f9bfcee
--- /dev/null
+++ b/debian/patches/0010-fix_ioerror_exception.patch
@@ -0,0 +1,33 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:09:55 +0200
+Subject: Only HTTPError has a code attribute
+
+This would cause irker to crash in case we get a URLError instead of HTTPError,
+for example.
+
+Patch-Name: 0010-fix_ioerror_exception.patch
+Forwarded: https://gitlab.com/esr/irker/merge_requests/14
+---
+ irkerhook.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/irkerhook.py b/irkerhook.py
+index 8bf46f8..d32b742 100755
+--- a/irkerhook.py
++++ b/irkerhook.py
+@@ -95,12 +95,14 @@ class Commit:
+ self.url = webview
+ else:
+ self.url = webview
+- except IOError as e:
++ except urllib2.HTTPError as e:
+ if e.code == 401:
+ # Authentication error, so we assume the view is valid
+ self.url = webview
+ else:
+ self.url = ""
++ except IOError:
++ self.url = ""
+ res = self.template % self.__dict__
+ return unicode(res, 'UTF-8') if not isinstance(res, unicode) else res
+
diff --git a/debian/patches/0011-Import-upstream-tweaks-to-irkerd.service.patch b/debian/patches/0011-Import-upstream-tweaks-to-irkerd.service.patch
new file mode 100644
index 0000000..9330079
--- /dev/null
+++ b/debian/patches/0011-Import-upstream-tweaks-to-irkerd.service.patch
@@ -0,0 +1,23 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 17:17:29 +0200
+Subject: Import upstream tweaks to irkerd.service
+
+---
+ irkerd.service | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/irkerd.service b/irkerd.service
+index a9a6675..dbdc058 100644
+--- a/irkerd.service
++++ b/irkerd.service
+@@ -2,8 +2,9 @@
+ # Distributed under the terms of the BSD LICENSE
+
+ [Unit]
+-Description=irker daemon
++Description=Internet Relay Chat (IRC) notification daemon
+ Requires=network.target
++Documentation=man:irkerd(8) man:irkerhook(1) man:irk(1)
+
+ [Service]
+ EnvironmentFile=-/etc/default/irker
diff --git a/debian/patches/0011-Update-irkerhook.py-to-work-under-python-3.patch b/debian/patches/0011-Update-irkerhook.py-to-work-under-python-3.patch
new file mode 100644
index 0000000..65ad25e
--- /dev/null
+++ b/debian/patches/0011-Update-irkerhook.py-to-work-under-python-3.patch
@@ -0,0 +1,230 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:11:50 +0200
+Subject: Update irkerhook.py to work under python 3.
+
+This allows irkerhook.py to be used in a python 3 only setup.
+Due to the state of mercurial's python 3 support, irkerhook.py
+only supports git and svn repositories when used with python 3.
+
+Patch-Name: 0011-irkerhook_python3_support.patch
+Forwarded: https://gitlab.com/esr/irker/merge_requests/19
+---
+ irkerhook.py | 65 ++++++++++++++++++++++++++++++++++++++++++-----------------
+ irkerhook.xml | 3 +++
+ 2 files changed, 49 insertions(+), 19 deletions(-)
+
+diff --git a/irkerhook.py b/irkerhook.py
+index d32b742..fdc8d91 100755
+--- a/irkerhook.py
++++ b/irkerhook.py
+@@ -18,12 +18,14 @@
+ # does not override it.
+ #
+ # SPDX-License-Identifier: BSD-2-Clause
++from __future__ import print_function, absolute_import
++
+ default_server = "localhost"
+ IRKER_PORT = 6659
+
+ # The default service used to turn your web-view URL into a tinyurl so it
+ # will take up less space on the IRC notification line.
+-default_tinyifier = "http://tinyurl.com/api-create.php?url="
++default_tinyifier = u"http://tinyurl.com/api-create.php?url="
+
+ # Map magic urlprefix values to actual URL prefixes.
+ urlprefixmap = {
+@@ -33,7 +35,7 @@ urlprefixmap = {
+ }
+
+ # By default, ship to the freenode #commits list
+-default_channels = "irc://chat.freenode.net/#commits"
++default_channels = u"irc://chat.freenode.net/#commits"
+
+ #
+ # No user-serviceable parts below this line:
+@@ -41,14 +43,25 @@ default_channels = "irc://chat.freenode.net/#commits"
+
+ version = "2.17"
+
+-import os, sys, socket, urllib2, subprocess, locale, datetime, re
++import os, sys, socket, subprocess, locale, datetime, re
+ from pipes import quote as shellquote
+
++try:
++ from urllib2 import urlopen, HTTPError
++except ImportError:
++ from urllib.error import HTTPError
++ from urllib.request import urlopen
++
+ try:
+ import simplejson as json # Faster, also makes us Python-2.5-compatible
+ except ImportError:
+ import json
+
++if sys.version_info.major == 2:
++ string_type = unicode
++else:
++ string_type = str
++
+ try:
+ getstatusoutput = subprocess.getstatusoutput
+ except AttributeError:
+@@ -56,7 +69,10 @@ except AttributeError:
+ getstatusoutput = commands.getstatusoutput
+
+ def do(command):
+- return unicode(getstatusoutput(command)[1], locale.getlocale()[1] or 'UTF-8').encode(locale.getlocale()[1] or 'UTF-8')
++ if sys.version_info.major == 2:
++ return string_type(getstatusoutput(command)[1], locale.getlocale()[1] or 'UTF-8')
++ else:
++ return getstatusoutput(command)[1]
+
+ class Commit:
+ def __init__(self, extractor, commit):
+@@ -72,7 +88,14 @@ class Commit:
+ self.author_date = None
+ self.commit_date = None
+ self.__dict__.update(extractor.__dict__)
+- def __unicode__(self):
++
++ if sys.version_info.major == 2:
++ # Convert __str__ to __unicode__ for python 2
++ self.__unicode__ = self.__str__
++ # Not really needed, but maybe useful for debugging
++ self.__str__ = lambda x: x.__unicode__().encode('utf-8')
++
++ def __str__(self):
+ "Produce a notification string from this commit."
+ if self.urlprefix.lower() == "none":
+ self.url = ""
+@@ -81,12 +104,12 @@ class Commit:
+ webview = (urlprefix % self.__dict__) + self.commit
+ try:
+ # See it the url is accessible
+- res = urllib2.urlopen(webview)
++ res = urlopen(webview)
+ if self.tinyifier and self.tinyifier.lower() != "none":
+ try:
+ # Didn't get a retrieval error on the web
+ # view, so try to tinyify a reference to it.
+- self.url = urllib2.urlopen(self.tinyifier + webview).read()
++ self.url = urlopen(self.tinyifier + webview).read()
+ try:
+ self.url = self.url.decode('UTF-8')
+ except UnicodeError:
+@@ -95,7 +118,7 @@ class Commit:
+ self.url = webview
+ else:
+ self.url = webview
+- except urllib2.HTTPError as e:
++ except HTTPError as e:
+ if e.code == 401:
+ # Authentication error, so we assume the view is valid
+ self.url = webview
+@@ -104,7 +127,7 @@ class Commit:
+ except IOError:
+ self.url = ""
+ res = self.template % self.__dict__
+- return unicode(res, 'UTF-8') if not isinstance(res, unicode) else res
++ return string_type(res, 'UTF-8') if not isinstance(res, string_type) else res
+
+ class GenericExtractor:
+ "Generic class for encapsulating data from a VCS."
+@@ -239,10 +262,10 @@ class GitExtractor(GenericExtractor):
+ self.channels = do("git config --get irker.channels")
+ self.email = do("git config --get irker.email")
+ self.tcp = do("git config --bool --get irker.tcp")
+- self.template = do("git config --get irker.template") or '%(bold)s%(project)s:%(reset)s %(green)s%(author)s%(reset)s %(repo)s:%(yellow)s%(branch)s%(reset)s * %(bold)s%(rev)s%(reset)s / %(bold)s%(files)s%(reset)s: %(logmsg)s %(brown)s%(url)s%(reset)s'
++ self.template = do("git config --get irker.template") or u'%(bold)s%(project)s:%(reset)s %(green)s%(author)s%(reset)s %(repo)s:%(yellow)s%(branch)s%(reset)s * %(bold)s%(rev)s%(reset)s / %(bold)s%(files)s%(reset)s: %(logmsg)s %(brown)s%(url)s%(reset)s'
+ self.tinyifier = do("git config --get irker.tinyifier") or default_tinyifier
+ self.color = do("git config --get irker.color")
+- self.urlprefix = do("git config --get irker.urlprefix") or "gitweb"
++ self.urlprefix = do("git config --get irker.urlprefix") or u"gitweb"
+ self.cialike = do("git config --get irker.cialike")
+ self.filtercmd = do("git config --get irker.filtercmd")
+ # These are git-specific
+@@ -434,6 +457,10 @@ extractors = [GitExtractor, HgExtractor, SvnExtractor]
+
+ # VCS-dependent code ends here
+
++def convert_message(message):
++ """Convert the message to bytes to send to the socket"""
++ return message.encode(locale.getlocale()[1] or 'UTF-8') + b'\n'
++
+ def ship(extractor, commit, debug):
+ "Ship a notification for the specified commit."
+ metadata = extractor.commit_factory(commit)
+@@ -441,7 +468,7 @@ def ship(extractor, commit, debug):
+ # This is where we apply filtering
+ if extractor.filtercmd:
+ cmd = '%s %s' % (shellquote(extractor.filtercmd),
+- shellquote(json.dumps(metadata.__dict__)))
++ shellquote(json.dumps(metadata.__dict__)))
+ data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+ try:
+ metadata.__dict__.update(json.loads(data))
+@@ -466,10 +493,10 @@ def ship(extractor, commit, debug):
+ # purposes the commit text is more important. If it's still too long
+ # there's nothing much can be done other than ship it expecting the IRC
+ # server to truncate.
+- privmsg = unicode(metadata)
++ privmsg = string_type(metadata)
+ if len(privmsg) > 510:
+ metadata.files = ""
+- privmsg = unicode(metadata)
++ privmsg = string_type(metadata)
+
+ # Anti-spamming guard. It's deliberate that we get maxchannels not from
+ # the user-filtered metadata but from the extractor data - means repo
+@@ -481,7 +508,7 @@ def ship(extractor, commit, debug):
+ # Ready to ship.
+ message = json.dumps({"to": channels, "privmsg": privmsg})
+ if debug:
+- print message
++ print(message)
+ elif channels:
+ try:
+ if extractor.email:
+@@ -503,16 +530,16 @@ Subject: irker json
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.connect((extractor.server or default_server, IRKER_PORT))
+- sock.sendall(message + "\n")
++ sock.sendall(convert_message(message))
+ finally:
+ sock.close()
+ else:
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+- sock.sendto(message + "\n", (extractor.server or default_server, IRKER_PORT))
++ sock.sendto(convert_message(message), (extractor.server or default_server, IRKER_PORT))
+ finally:
+ sock.close()
+- except socket.error, e:
++ except socket.error as e:
+ sys.stderr.write("%s\n" % e)
+
+ if __name__ == "__main__":
+@@ -523,7 +550,7 @@ if __name__ == "__main__":
+ if arg == '-n':
+ notify = False
+ elif arg == '-V':
+- print "irkerhook.py: version", version
++ print("irkerhook.py: version", version)
+ sys.exit(0)
+ elif arg.startswith("--repository="):
+ repository = arg[13:]
+diff --git a/irkerhook.xml b/irkerhook.xml
+index efb4bc1..2160166 100644
+--- a/irkerhook.xml
++++ b/irkerhook.xml
+@@ -174,6 +174,9 @@ are available as %() substitutions.</para>
+ </varlistentry>
+ </variablelist>
+
++<para>irkerhook.py will run under both python 2 and python 3, but it does
++not support mercurial repositories under python 3 yet.</para>
++
+ <refsect2 id="git"><title>git</title>
+
+ <para>Under git, the normal way to invoke this hook (from within the
diff --git a/debian/patches/0012-Drop-sorted-from-event_handler.patch b/debian/patches/0012-Drop-sorted-from-event_handler.patch
new file mode 100644
index 0000000..3d8c20d
--- /dev/null
+++ b/debian/patches/0012-Drop-sorted-from-event_handler.patch
@@ -0,0 +1,25 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:14:57 +0200
+Subject: Drop sorted() from event_handler.
+
+This allows irkerd to run correctly under python 3.
+
+Forwarded: https://gitlab.com/esr/irker/merge_requests/18
+Patch-Name: 0012-fix-irkerd-sorted.patch
+---
+ irkerd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/irkerd b/irkerd
+index 24abf08..2eca1d9 100755
+--- a/irkerd
++++ b/irkerd
+@@ -197,7 +197,7 @@ class IRCClient():
+ def handle_event(self, connection, event):
+ with self.mutex:
+ h = self.event_handlers
+- th = sorted(h.get("all_events", []) + h.get(event.type, []))
++ th = h.get("all_events", []) + h.get(event.type, [])
+ for handler in th:
+ handler(connection, event)
+
diff --git a/debian/patches/0013-Fix-incorrect-name-in-Makefile.patch b/debian/patches/0013-Fix-incorrect-name-in-Makefile.patch
new file mode 100644
index 0000000..57b08e0
--- /dev/null
+++ b/debian/patches/0013-Fix-incorrect-name-in-Makefile.patch
@@ -0,0 +1,23 @@
+From: Neil Muller <drnlmuller+debian@gmail.com>
+Date: Sun, 13 May 2018 15:20:45 +0200
+Subject: Fix incorrect name in Makefile.
+
+Forwarded: https://gitlab.com/esr/irker/merge_requests/17
+Patch-Name: 0013-fix-wrong-name-in-makefile
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index fc6ac7f..6bd2052 100644
+--- a/Makefile
++++ b/Makefile
+@@ -24,7 +24,7 @@ irkerhook.html: irkerhook.xml
+ irk.1: irk.xml
+ xmlto man irk.xml
+ irk.html: irk.xml
+- xmlto html-nochunks irkerhook.xml
++ xmlto html-nochunks irk.xml
+
+ install.html: install.txt
+ asciidoc -o install.html install.txt
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..5f7c665
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,11 @@
+0001-dfsg.patch
+0005-author-name.patch
+0006-alias-service.patch
+0007-irkerhook-git.patch
+0008-user-service.patch
+0009-env-service.patch
+0010-fix_ioerror_exception.patch
+0011-Update-irkerhook.py-to-work-under-python-3.patch
+0012-Drop-sorted-from-event_handler.patch
+0013-Fix-incorrect-name-in-Makefile.patch
+0011-Import-upstream-tweaks-to-irkerd.service.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..5aa4868
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,19 @@
+#!/usr/bin/make -f
+
+dfsg:
+ # no origin known and no source available
+ rm -f irker-logo.png
+
+%:
+ dh ${@} --with python2
+
+override_dh_auto_build:
+ DESTDIR="$(CURDIR)/debian/irker" dh_auto_build
+
+override_dh_auto_install:
+ DESTDIR="$(CURDIR)/debian/irker" dh_auto_install
+
+ cp irkerhook.py debian/irker/usr/bin/irkerhook
+
+override_dh_installchangelogs:
+ dh_installchangelogs NEWS
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..5bd47b7
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1 @@
+compression = xz
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..6fbd1a0
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts=dversionmangle=s/\+dfsg\d*$//,filenamemangle=s/.*\.tar\.gz\?ref=v?(\d\S*)/irker-$1\.tar\.gz/g,repacksuffix=+dfsg \
+ https://gitlab.com/esr/irker/tags .*archive\.tar\.gz\?ref=v?(\d\S*)