summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-irc/ircd-hybrid')
-rw-r--r--net-irc/ircd-hybrid/ChangeLog8
-rw-r--r--net-irc/ircd-hybrid/Manifest2
-rw-r--r--net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0-r11
-rw-r--r--net-irc/ircd-hybrid/ircd-hybrid-7.0-r1.ebuild345
4 files changed, 355 insertions, 1 deletions
diff --git a/net-irc/ircd-hybrid/ChangeLog b/net-irc/ircd-hybrid/ChangeLog
index 27b11e8ec998..55f331850baf 100644
--- a/net-irc/ircd-hybrid/ChangeLog
+++ b/net-irc/ircd-hybrid/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for net-irc/ircd-hybrid
# Copyright 2000-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ChangeLog,v 1.3 2004/04/01 21:38:52 zul Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ChangeLog,v 1.4 2004/04/19 23:07:13 zul Exp $
+
+*ircd-hybrid-7.0-r1 (19 Apr 2004)
+
+ 19 Apr 2004; Chuck Short <zul@gentoo.org> ircd-hybrid-7.0-r1.ebuild:
+ New release with improvements from ali3nx < mikecrgd @ telus.net >.
+ Closes #46853.
01 Apr 2004; Chuck Short <zul@gentoo.org> ircd-hybrid-7.0.ebuild:
Updated header.
diff --git a/net-irc/ircd-hybrid/Manifest b/net-irc/ircd-hybrid/Manifest
index 7fe6af787f7b..ff8e2a3d1a2c 100644
--- a/net-irc/ircd-hybrid/Manifest
+++ b/net-irc/ircd-hybrid/Manifest
@@ -1,9 +1,11 @@
+MD5 0a7ac08f43a27fe94c40bb090db1c879 ircd-hybrid-7.0-r1.ebuild 10828
MD5 96cc29a12dd7af2a2aa49bc81823219d ircd-hybrid-7.0.ebuild 8269
MD5 0885c739917d757a4fcc6805ba4d25f5 ChangeLog 771
MD5 44c39c6ad372a8e5a5e7ee3311f703a7 metadata.xml 160
MD5 8f8feafbeb742e46390b85dd10182aeb files/config-ipv4.diff 2819
MD5 64d0c6f903b43a388beecfe51d8a8905 files/config-ipv6.diff 2819
MD5 57d177a5eeca8deb8c3609ac3cbc2884 files/ircd-hybrid-7.0.diff 2538
+MD5 c45ce5f5427c5d0fcbbc5561c79efbfe files/digest-ircd-hybrid-7.0-r1 65
MD5 41171c736bf66b54043bf68a17ab43ed files/init.d_ircd 1119
MD5 c45ce5f5427c5d0fcbbc5561c79efbfe files/digest-ircd-hybrid-7.0 65
MD5 6ae2144649d7eb3919079e691c82bb95 files/conf.d_ircd 417
diff --git a/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0-r1 b/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0-r1
new file mode 100644
index 000000000000..6b3db2d0d21d
--- /dev/null
+++ b/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0-r1
@@ -0,0 +1 @@
+MD5 bee69c994c70fb29a711614150587cd4 ircd-hybrid-7.0.tgz 1412385
diff --git a/net-irc/ircd-hybrid/ircd-hybrid-7.0-r1.ebuild b/net-irc/ircd-hybrid/ircd-hybrid-7.0-r1.ebuild
new file mode 100644
index 000000000000..e54f90c78314
--- /dev/null
+++ b/net-irc/ircd-hybrid/ircd-hybrid-7.0-r1.ebuild
@@ -0,0 +1,345 @@
+# Copyright 1999-2004 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ircd-hybrid-7.0-r1.ebuild,v 1.1 2004/04/19 23:07:13 zul Exp $
+
+MAX_NICK_LENGTH=30
+MAX_CLIENTS=500
+MAX_TOPIC_LENGTH=512
+LARGE_NETWORK=
+DISABLE_LARGE_NETWORK=1 # true
+SMALL_NETWORK=1
+DISABLE_SMALL_NETWORK=
+ENABLE_POLL=1
+DISABLE_POLL=
+ENABLE_SELECT=
+DISABLE_SELECT=1
+ENABLE_EFNET=
+ENABLE_RTSIGIO=
+DISABLE_RTSIGIO=
+ENABLE_SHARED=1
+DISABLE_SHARED=
+ENABLE_DEVPOLL=
+DISABLE_DEVPOLL=1
+ENABLE_KQUEUE=
+DISABLE_KQUEUE=
+
+
+IUSE="debug ipv6 ssl static zlib"
+
+DESCRIPTION="IRCD-Hybrid - High Performance Internet Relay Chat"
+HOMEPAGE="http://ircd-hybrid.com/"
+SRC_URI="mirror://sourceforge/ircd-hybrid/${P}.tgz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~alpha"
+
+DEPEND="virtual/glibc
+ zlib? ( >=sys-libs/zlib-1.1.4-r1 )
+ ssl? ( >=dev-libs/openssl-0.9.6j )
+ || ( >=dev-libs/libelf-0.8.2 >=dev-libs/elfutils-0.89 )
+ >=sys-devel/flex-2.5.4a-r5
+ >=sys-devel/bison-1.35
+ >=sys-devel/gettext-0.11.5-r1
+ >=sys-apps/sed-4.0.7"
+RDEPEND=""
+
+pkg_setup()
+{
+ # Create a dedicated user for running ircd. UID/GID combination was based
+ # on some *BSD passwd files.
+ if ! groupmod hybrid; then
+ einfo "Creating hybrid group (gid=72)."
+ groupadd hybrid -g 72 || die "failed to create group: hybrid (gid=72)"
+ fi
+ if ! id hybrid; then
+ einfo "Creating hybrid user (uid=72)."
+ useradd -d /usr/share/ircd-hybrid-7 -g hybrid -s /bin/false -u 72 hybrid \
+ || die "failed to create user: ircd (uid=72)"
+ fi
+
+ return 0
+}
+
+src_unpack()
+{
+ unpack ${A}
+ cd ${S}
+
+ # Patch Makefile.ins:
+ # * Add includedir variable where to install headers.
+ # * Remove creation of logdirs under prefix. Use /var/log/ircd instead.
+ # * Remove symlinking which won't work in sandbox. Done in src_install().
+ # Sed hardcoded CFLAGS to those in make.conf.
+ patch -p1 < ${FILESDIR}/${PF}.diff || die "patch failed"
+ cp configure configure.dist
+ sed -e "s:IRC_CFLAGS=\"-O2 -g \":IRC_CFLAGS=\"${CFLAGS}\":" \
+ < configure.dist > configure
+
+ # Store unmodified source tree for compiling necessary shared libs and
+ # binaries with ipv6 support.
+ if [ -n "$(use ipv6)" ]; then
+ mkdir ${T}/ipv6
+ cp -r ${S} ${T}/ipv6
+ fi
+}
+
+src_compile()
+{
+ local myconf
+
+ ewarn "Server administrators are encouraged to customize some variables in"
+ ewarn "the ebuild if actually deploying hybrid in an IRC network."
+ ewarn "The values below reflect a usable configuration but may not be"
+ ewarm "for large networks in production environments"
+ ewarn "Portage overlay would be benificial for such a senario"
+ ewarn
+ ewarn "If you require more than 1024 clients per ircd enable poll() support"
+ ewarn "or hybrid will not compile due to hard max file descriptor limits"
+ ewarn "To change the default settings below you must edit the ebuild"
+ ewarn
+ ewarn "Maximum nick length = ${MAX_NICK_LENGTH}"
+ ewarn " topic length = ${MAX_TOPIC_LENGTH}"
+ ewarn " number of clients = ${MAX_CLIENTS}"
+ ewarn
+ if [ ${LARGE_NETWORK} ]; then
+ ewarn "Configuring for large networks."
+ myconf="--enable-large-net"
+ fi
+ if [ ${DISABLE_LARGE_NETWORK} ]; then
+ ewarn "Disabling large networks."
+ myconf="--disable-large-net"
+ fi
+ if [ ${SMALL_NETWORK} ]; then
+ ewarn "Configuring for small networks."
+ myconf="--enable-small-net"
+ fi
+ if [ ${DISABLE_SMALL_NETWORK} ]; then
+ ewarn "Disabling small networks."
+ myconf="--disable-small-net"
+ fi
+ if [ ${ENABLE_POLL} ]; then
+ ewarn "Configuring with poll() enabled"
+ myconf="--enable-poll"
+ fi
+ if [ ${DISABLE_POLL} ]; then
+ ewarn "Configuring with poll() disabled"
+ myconf="--disable-poll"
+ fi
+ if [ ${ENABLE_SELECT} ]; then
+ ewarn "Configuring with select() enabled."
+ myconf="--enable-select"
+ fi
+ if [ ${DISABLE_SELECT} ]; then
+ ewarn "Configuring with select() disabled."
+ myconf="--disable-select"
+ fi
+ if [ ${ENABLE_EFNET} ]; then
+ ewarn "Configuring for Efnet."
+ myconf="--enable-efnet"
+ fi
+ if [ ${ENABLE_RTSIGIO} ]; then
+ ewarn "Configuring with Superior RTSIGIO."
+ myconf="--enable-rtsigio"
+ fi
+ if [ ${DISABLE_RTSIGIO} ]; then
+ ewarn "Disabling Superior RTSIGIO."
+ myconf="--disable-rtsigio"
+ fi
+ if [ ${ENABLE_SHARED} ]; then
+ ewarn "Configuring for non-Efnet."
+ myconf="--enable-shared"
+ fi
+ if [ ${ENABLE_KQUEUE} ]; then
+ ewarn "Configuring for Kqueue."
+ myconf="--enable-kqueue"
+ fi
+ if [ ${DISABLE_KQUEUE} ]; then
+ ewarn "Disabling Kqueue."
+ myconf="--disable-kqueue"
+ fi
+ # Wait for admins to see the default variables.
+ sleep 5
+
+ use debug || myconf="${myconf} --disable-assert"
+ use ssl && myconf="${myconf} --enable-openssl"
+ use static && myconf="${myconf} --disable-shared-modules"
+ use zlib && myconf="${myconf} --enable-zlib"
+
+ # Set ipv4 defaults to config.h.
+ patch include/config.h ${FILESDIR}/config-ipv4.diff \
+ || die "ipv4 defaults patch failed"
+
+ # Set prefix to /usr/share/ircd-hybrid-7 to save some patching.
+ ./configure \
+ --prefix=/usr/share/ircd-hybrid-7 \
+ --with-nicklen=${MAX_NICK_LENGTH} \
+ --with-topiclen=${MAX_TOPIC_LENGTH} \
+ --with-maxclients=${MAX_CLIENTS} ${myconf} || die "ipv4 config failed"
+ emake || die "ipv4 make failed"
+
+ # Enable help index.
+ cd help
+ make index || die "make index failed"
+ cd ..
+
+ # Build respond binary for using rsa keys instead of plain text oper
+ # passwords.
+ [[ -n "$(use ssl)" ]] && \
+ gcc ${CFLAGS} -o respond tools/rsa_respond/respond.c -lcrypto
+
+ # Configure and compile with ipv6 support in temp.
+ if [ -n "$(use ipv6)" ]; then
+ einfo "IPv6 support"
+ cd ${T}/ipv6/${P}
+
+ # Set ipv6 defaults to config.h.
+ patch include/config.h ${FILESDIR}/config-ipv6.diff \
+ || die "ipv6 defaults patch failed"
+
+ ./configure \
+ --prefix=/usr/share/ircd-hybrid-7 \
+ --with-nicklen=${MAX_NICK_LENGTH} \
+ --with-topiclen=${MAX_TOPIC_LENGTH} \
+ --with-maxclients=${MAX_CLIENTS} \
+ --enable-ipv6 ${myconf} || die "ipv6 config failed"
+ emake || die "ipv6 make failed"
+ fi
+
+ # Go back.
+ cd ${S}
+}
+
+src_install()
+{
+ # Directories need to exist beforehand or the install will fail.
+ dodir /usr/share/man/man8 \
+ /usr/lib/ircd-hybrid-7 \
+ /usr/include/ircd-hybrid-7 \
+ /var/log/ircd \
+ /var/run/ircd \
+ /etc/init.d \
+ /etc/conf.d
+
+ # Override all install directories according to the patches with sandbox
+ # prefix.
+ make prefix=${D}/usr/share/ircd-hybrid-7/ \
+ bindir=${D}/usr/sbin/ \
+ sysconfdir=${D}/etc/ircd/ \
+ moduledir=${D}/usr/lib/ircd-hybrid-7/ipv4 \
+ automoduledir=${D}/usr/lib/ircd-hybrid-7/ipv4/autoload/ \
+ messagedir=${D}/usr/share/ircd-hybrid-7/messages/ \
+ includedir=${D}/usr/include/ircd-hybrid-7 \
+ mandir=${D}/usr/share/man/man8/ \
+ install || die "ipv4 install failed"
+
+ # Rename the binary according to config-ipv4.diff.
+ mv ${D}/usr/sbin/ircd ${D}/usr/sbin/ircd-ipv4
+
+ # Install the respond binary.
+ if [ -n "$(use ssl)" ]; then
+ exeinto /usr/sbin
+ doexe ${S}/respond
+ fi
+
+ # Do the symlinking.
+ local link
+ local symlinks="topic accept cjoin cmode admin names links away whowas \
+ version kick who invite quit join list nick oper part \
+ time credits motd userhost users whois ison lusers \
+ user help pass error challenge knock ping pong"
+ for link in ${symlinks}; do
+ dosym ../opers/$link /usr/share/ircd-hybrid-7/help/users/$link
+ done
+ dosym viconf /usr/sbin/vimotd
+ dosym viconf /usr/sbin/viklines
+
+ # Install documentation.
+ dodoc BUGS ChangeLog Hybrid-team INSTALL LICENSE README.* RELNOTES TODO
+ docinto doc
+ dodoc doc/*.txt doc/README.cidr_bans doc/Tao-of-IRC.940110 \
+ doc/convertconf-example.conf doc/example.* doc/ircd.motd \
+ doc/simple.conf doc/server-version-info
+ docinto doc/technical
+ dodoc doc/technical/*
+
+ # Fix the config files according to the patches.
+ rm ${D}/etc/ircd/.convertconf-example.conf # No need for 2 copies.
+ local conf
+ for conf in ${D}/etc/ircd/*.conf; do
+ sed -e "s:/usr/local/ircd/modules:/usr/lib/ircd-hybrid-7/ipv4:g" \
+ < ${conf} > ${conf/%.conf/-ipv4.conf}
+ rm ${conf}
+ done
+ mv ${D}/etc/ircd/ircd.motd ${D}/etc/ircd/ircd-ipv4.motd
+
+ # Only the shared libraries and the ircd binary differ from the ipv4
+ # installation. Thus installing those is sufficient to make ipv6 support
+ # work (and different config files, pid files etc. of cource).
+ if [ -n "$(use ipv6)" ]; then
+ cd ${T}/ipv6/${P}/modules
+ make prefix=${D}/usr/share/ircd-hybrid-7/ \
+ moduledir=${D}/usr/lib/ircd-hybrid-7/ipv6 \
+ automoduledir=${D}/usr/lib/ircd-hybrid-7/ipv6/autoload/ \
+ install || die "ipv6 install failed"
+ cp ../src/ircd ${D}/usr/sbin/ircd-ipv6
+
+ # Fix the config files according to the patches.
+ for conf in ${D}/etc/ircd/*.conf; do
+ sed -e "s:ircd-hybrid-7/ipv4:ircd-hybrid-7/ipv6:g" \
+ < ${conf} > ${conf/ipv4/ipv6}
+ done
+ fi
+
+ # Install the init script and the respective config file.
+ cp ${FILESDIR}/init.d_ircd ${D}/etc/init.d/ircd
+ cp ${FILESDIR}/conf.d_ircd ${D}/etc/conf.d/ircd
+
+ chmod +x ${D}/etc/init.d/ircd
+ # Go back.
+ cd ${S}
+}
+
+pkg_postinst()
+{
+ # Create the default config files out of example ones.
+ cp /etc/ircd/example-ipv4.conf /etc/ircd/ircd-ipv4.conf
+ if [ -n "$(use ipv6)" ]; then
+ cp /etc/ircd/example-ipv6.conf /etc/ircd/ircd-ipv6.conf
+ fi
+
+ chown -R ircd:ircd /etc/ircd /var/log/ircd /var/run/ircd
+ chmod 700 /etc/ircd /var/log/ircd
+ find /etc/ircd -type f -exec chmod 600 {} \;
+
+ einfo "Modify /etc/ircd/ircd-{ipv4,ipv6}.conf and /etc/conf.d/ircd"
+ einfo "otherwise the daemon(s) will quietly refuse to run."
+
+ if [ -n "$(use ssl)" ]; then
+ einfo "To create a rsa keypair for crypted links execute:"
+ einfo "ebuild /var/db/pkg/net-irc/${PF}/${PF}.ebuild config"
+ fi
+}
+
+pkg_config()
+{
+ local proto="ipv4"
+ [[ -x "/usr/sbin/ircd-ipv6" ]] && proto="ipv4 ipv6"
+
+ local i
+ for i in ${proto}; do
+ einfo "Generating 2048 bit RSA keypair /etc/ircd/ircd-${i}.rsa"
+ einfo "The public key is stored in /etc/ircd/ircd-${i}.pub."
+
+ openssl genrsa -rand /var/run/random-seed \
+ -out /etc/ircd/ircd-${i}.rsa 2048
+ openssl rsa -in /etc/ircd/ircd-${i}.rsa -pubout \
+ -out /etc/ircd/ircd-${i}.pub
+ chown ircd:ircd /etc/ircd/ircd-${i}.rsa /etc/ircd/ircd-${i}.pub
+ chmod 600 /etc/ircd/ircd-${i}.rsa
+ chmod 644 /etc/ircd/ircd-${i}.pub
+
+ einfo "Update the rsa keypair in /etc/ircd/ircd-${i}.conf and /REHASH."
+ done
+}
+
+# vim:ts=4