summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--social/inspircd/PKGBUILD62
-rw-r--r--social/inspircd/gnutls.patch12
-rw-r--r--social/inspircd/inspircd.install15
-rw-r--r--social/inspircd/inspircd.rcd50
4 files changed, 139 insertions, 0 deletions
diff --git a/social/inspircd/PKGBUILD b/social/inspircd/PKGBUILD
new file mode 100644
index 000000000..6165f7c31
--- /dev/null
+++ b/social/inspircd/PKGBUILD
@@ -0,0 +1,62 @@
+pkgname=inspircd
+pkgver=2.0.5
+pkgrel=2
+pkgdesc='A lightweight IRC daemon'
+arch=('x86_64' 'i686')
+url='http://www.inspircd.org/'
+license=('GPL2')
+depends=('perl' 'gnutls' 'openssl' 'libgcrypt')
+makedepends=('pkg-config' 'mysql' 'postgresql' 'sqlite3' 'libldap' 'geoip' 'tre')
+optdepends=('mysql: m_mysql'
+ 'pcre: m_regex_pcre'
+ 'postgresql: m_pgsql'
+ 'sqlite3: m_sqlite3'
+ 'libldap: m_ldapoper and m_ldapauth'
+ 'geoip: m_geoip'
+ 'tre: m_regex_tre')
+install=inspircd.install
+backup=('etc/inspircd/inspircd.conf')
+
+source=(http://www.inspircd.org/downloads/InspIRCd-$pkgver.tar.bz2 inspircd.rcd gnutls.patch)
+md5sums=('60dec04bdc8f8c473f3c7bd774a1f153'
+ 'f4f32d944401b1602ab6716476892afd'
+ '6312154e759e5d71b85c7dca71b7a4fd')
+
+build() {
+ cd "${srcdir}/inspircd"
+ patch -Np1 -i "${srcdir}/gnutls.patch"
+
+ ./configure \
+ --enable-extras=m_geoip.cpp \
+ --enable-extras=m_ldapauth.cpp \
+ --enable-extras=m_ldapoper.cpp \
+ --enable-extras=m_mysql.cpp \
+ --enable-extras=m_pgsql.cpp \
+ --enable-extras=m_regex_pcre.cpp \
+ --enable-extras=m_regex_posix.cpp \
+ --enable-extras=m_regex_tre.cpp \
+ --enable-extras=m_sqlite3.cpp
+
+ ./configure \
+ --prefix=/usr/lib/inspircd \
+ --binary-dir=/usr/sbin \
+ --module-dir=/usr/lib/inspircd/modules \
+ --config-dir=/etc/inspircd \
+ --enable-gnutls \
+ --enable-openssl \
+ --enable-epoll
+
+ make
+}
+
+package() {
+ install -Dm755 "${srcdir}"/inspircd.rcd "${pkgdir}"/etc/rc.d/inspircd
+ install -o141 -g141 -dm750 "${pkgdir}/var/log/inspircd"
+ install -o141 -g141 -dm750 "${pkgdir}/var/run/inspircd"
+
+ cd "${srcdir}/inspircd"
+ make DESTDIR="$pkgdir" INSTUID=141 install
+
+ rm -rf "${pkgdir}"/usr/lib/inspircd/logs
+ rm -rf "${pkgdir}"/usr/lib/inspircd/data
+}
diff --git a/social/inspircd/gnutls.patch b/social/inspircd/gnutls.patch
new file mode 100644
index 000000000..3975c418c
--- /dev/null
+++ b/social/inspircd/gnutls.patch
@@ -0,0 +1,12 @@
+ff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp
+index b8c4815..d58caa8 100644
+--- a/src/modules/extra/m_ssl_gnutls.cpp
++++ b/src/modules/extra/m_ssl_gnutls.cpp
+@@ -20,7 +20,7 @@
+
+ /* $ModDesc: Provides SSL support for clients */
+ /* $CompileFlags: pkgconfincludes("gnutls","/gnutls/gnutls.h","") */
+-/* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") */
++/* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") -lgcrypt */
+
+ enum issl_status { ISSL_NONE, ISSL_HANDSHAKING_READ, ISSL_HANDSHAKING_WRITE, ISSL_HANDSHAKEN, ISSL_CLOSING, ISSL_CLOSED };
diff --git a/social/inspircd/inspircd.install b/social/inspircd/inspircd.install
new file mode 100644
index 000000000..ec97113f5
--- /dev/null
+++ b/social/inspircd/inspircd.install
@@ -0,0 +1,15 @@
+post_install() {
+ getent group inspircd &>/dev/null || groupadd -r -g 141 inspircd >/dev/null
+ getent passwd inspircd &>/dev/null || useradd -r -u 141 -g inspircd -d /var/lib/inspircd -s /bin/false -c inspircd inspircd >/dev/null
+
+ echo '==> You will need to create a config file for inspircd'
+ echo '==> cp /etc/inspircd/inspircd.conf.example /etc/inspircd/inspircd.conf'
+ echo '==> You will need to change the pidfile. To do this you can insert the following into your config.'
+ echo '==> <pid file="/var/run/inspircd/inspircd.pid">'
+ echo '==> Remember to use absolute paths in your config directory and not relative paths like you would do with a user-based inspircd install.'
+}
+
+post_remove() {
+ getent passwd inspircd &>/dev/null && userdel inspircd >/dev/null
+ getent group inspircd &>/dev/null && groupdel inspircd >/dev/null
+}
diff --git a/social/inspircd/inspircd.rcd b/social/inspircd/inspircd.rcd
new file mode 100644
index 000000000..a041b9be4
--- /dev/null
+++ b/social/inspircd/inspircd.rcd
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+get_pid() {
+ pidof /usr/sbin/inspircd
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting inspircd"
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ su -s /bin/sh -c '/usr/sbin/inspircd --logfile /var/log/inspircd/startup.log --config /etc/inspircd/inspircd.conf' 'inspircd' > /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ add_daemon inspircd
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping inspircd"
+ PID=$(get_pid)
+ [ ! -z "$PID" ] && kill $PID
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm_daemon inspircd
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0