diff options
author | Sven Wegener <swegener@gentoo.org> | 2004-09-27 00:35:14 +0000 |
---|---|---|
committer | Sven Wegener <swegener@gentoo.org> | 2004-09-27 00:35:14 +0000 |
commit | 052148257d4907e1a26d0fcd1f21bf84eff06046 (patch) | |
tree | d37c54ab66e1b10c7627b61ae5f13535b41a8d60 /net-irc/ircd-hybrid | |
parent | Added support for gnustep-libs/camaelon, via a local use flag (patches in sup... (diff) | |
download | gentoo-2-052148257d4907e1a26d0fcd1f21bf84eff06046.tar.gz gentoo-2-052148257d4907e1a26d0fcd1f21bf84eff06046.tar.bz2 gentoo-2-052148257d4907e1a26d0fcd1f21bf84eff06046.zip |
Version bump. Closes bug #10275 and #59076.
Diffstat (limited to 'net-irc/ircd-hybrid')
-rw-r--r-- | net-irc/ircd-hybrid/ChangeLog | 9 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/files/config-ipv4-7.0.3.diff | 78 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/files/config-ipv6-7.0.3.diff | 78 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0.3 | 1 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/files/init.d_ircd | 47 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/files/ircd-hybrid-7.0.3.diff | 79 | ||||
-rw-r--r-- | net-irc/ircd-hybrid/ircd-hybrid-7.0.3.ebuild | 361 |
7 files changed, 638 insertions, 15 deletions
diff --git a/net-irc/ircd-hybrid/ChangeLog b/net-irc/ircd-hybrid/ChangeLog index 99db487653ab..58b7ad70512b 100644 --- a/net-irc/ircd-hybrid/ChangeLog +++ b/net-irc/ircd-hybrid/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-irc/ircd-hybrid # Copyright 2000-2004 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ChangeLog,v 1.10 2004/09/06 19:01:27 ciaranm Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ChangeLog,v 1.11 2004/09/27 00:35:13 swegener Exp $ + +*ircd-hybrid-7.0.3 (27 Sep 2004) + + 27 Sep 2004; Sven Wegener <swegener@gentoo.org> + +files/config-ipv4-7.0.3.diff, +files/config-ipv6-7.0.3.diff, + files/init.d_ircd, +files/ircd-hybrid-7.0.3.diff, +ircd-hybrid-7.0.3.ebuild: + Version bump. Closes bug #10275 and #59076. 06 Sep 2004; Ciaran McCreesh <ciaranm@gentoo.org> ircd-hybrid-7.0-r1.ebuild, ircd-hybrid-7.0.ebuild: diff --git a/net-irc/ircd-hybrid/files/config-ipv4-7.0.3.diff b/net-irc/ircd-hybrid/files/config-ipv4-7.0.3.diff new file mode 100644 index 000000000000..0b7fc0220ad2 --- /dev/null +++ b/net-irc/ircd-hybrid/files/config-ipv4-7.0.3.diff @@ -0,0 +1,78 @@ +--- ircd-hybrid-7.0.2/include/config.h 2003-10-26 02:08:12.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/include/config.h 2004-05-15 15:26:11.346393560 +0000 +@@ -136,31 +136,31 @@ + + /* dirs */ + #define DPATH IRCD_PREFIX +-#define BINPATH IRCD_PREFIX "/bin/" +-#define MODPATH IRCD_PREFIX "/modules/" +-#define AUTOMODPATH IRCD_PREFIX "/modules/autoload/" ++#define BINPATH "/usr/sbin/" ++#define MODPATH "/usr/lib/ircd-hybrid-7/ipv4/" ++#define AUTOMODPATH MODPATH "/autoload/" + #define MSGPATH IRCD_PREFIX "/messages/" +-#define ETCPATH IRCD_PREFIX "/etc" +-#define LOGPATH IRCD_PREFIX "/logs" ++#define ETCPATH "/etc/ircd" ++#define LOGPATH "/var/log/ircd" + #define UHPATH IRCD_PREFIX "/help/users" + #define HPATH IRCD_PREFIX "/help/opers" + + /* files */ +-#define SPATH BINPATH "/ircd" /* ircd executable */ ++#define SPATH BINPATH "/ircd-ipv4" /* ircd executable */ + #define SLPATH BINPATH "/servlink" /* servlink executable */ +-#define CPATH ETCPATH "/ircd.conf" /* ircd.conf file */ +-#define KPATH ETCPATH "/kline.conf" /* kline file */ +-#define XPATH ETCPATH "/xline.conf" /* xline file */ +-#define NRESVPATH ETCPATH "/nresv.conf" /* nick resv file */ +-#define CRESVPATH ETCPATH "/cresv.conf" /* channel resv file */ +-#define DLPATH ETCPATH "/dline.conf" /* dline file */ +-#define GPATH LOGPATH "/gline.log" /* gline logfile */ +-#define RPATH ETCPATH "/ircd.rsa" /* ircd rsa private keyfile */ +-#define MPATH ETCPATH "/ircd.motd" /* MOTD file */ +-#define LPATH LOGPATH "/ircd.log" /* ircd logfile */ +-#define PPATH ETCPATH "/ircd.pid" /* pid file */ +-#define OPATH ETCPATH "/opers.motd" /* oper MOTD file */ +-#define LIPATH ETCPATH "/links.txt" /* cached links file */ ++#define CPATH ETCPATH "/ircd-ipv4.conf" /* ircd.conf file */ ++#define KPATH ETCPATH "/kline-ipv4.conf" /* kline file */ ++#define XPATH ETCPATH "/xline-ipv4.conf" /* xline file */ ++#define NRESVPATH ETCPATH "/nresv-ipv4.conf" /* nick resv file */ ++#define CRESVPATH ETCPATH "/cresv-ipv4.conf" /* channel resv file */ ++#define DLPATH ETCPATH "/dline-ipv4.conf" /* dline file */ ++#define GPATH LOGPATH "/gline-ipv4.log" /* gline logfile */ ++#define RPATH ETCPATH "/ircd-ipv4.rsa" /* ircd rsa private keyfile */ ++#define MPATH ETCPATH "/ircd-ipv4.motd" /* MOTD file */ ++#define LPATH LOGPATH "/ircd-ipv4.log" /* ircd logfile */ ++#define PPATH "/var/run/ircd/ircd-ipv4.pid" /* pid file */ ++#define OPATH ETCPATH "/opers-ipv4.motd" /* oper MOTD file */ ++#define LIPATH ETCPATH "/links-ipv4.txt" /* cached links file */ + #endif /* !VMS */ + + /* WANT_GETTEXT - toggle gettext support. +@@ -217,18 +217,18 @@ + * this option is used unless you tell the system administrator beforehand + * and obtain their permission to send messages to the system log files. + */ +-#undef USE_SYSLOG ++#define USE_SYSLOG + + #ifdef USE_SYSLOG + /* SYSLOG_KILL SYSLOG_SQUIT SYSLOG_CONNECT SYSLOG_USERS SYSLOG_OPER + * If you use syslog above, you may want to turn some (none) of the + * spurious log messages for KILL,SQUIT,etc off. + */ +-#undef SYSLOG_KILL /* log all operator kills to syslog */ +-#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */ +-#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */ +-#undef SYSLOG_USERS /* send userlog stuff to syslog */ +-#undef SYSLOG_OPER /* log all users who successfully become an Op */ ++#define SYSLOG_KILL /* log all operator kills to syslog */ ++#define SYSLOG_SQUIT /* log all remote squits for all servers to syslog */ ++#define SYSLOG_CONNECT /* log remote connect messages for other all servs */ ++#define SYSLOG_USERS /* send userlog stuff to syslog */ ++#define SYSLOG_OPER /* log all users who successfully become an Op */ + + /* LOG_FACILITY - facility to use for syslog() + * Define the facility you want to use for syslog(). Ask your diff --git a/net-irc/ircd-hybrid/files/config-ipv6-7.0.3.diff b/net-irc/ircd-hybrid/files/config-ipv6-7.0.3.diff new file mode 100644 index 000000000000..b86d866d9e53 --- /dev/null +++ b/net-irc/ircd-hybrid/files/config-ipv6-7.0.3.diff @@ -0,0 +1,78 @@ +--- ircd-hybrid-7.0.2/include/config.h 2003-10-26 02:08:12.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/include/config.h 2004-05-15 15:19:20.101532544 +0000 +@@ -136,31 +136,31 @@ + + /* dirs */ + #define DPATH IRCD_PREFIX +-#define BINPATH IRCD_PREFIX "/bin/" +-#define MODPATH IRCD_PREFIX "/modules/" +-#define AUTOMODPATH IRCD_PREFIX "/modules/autoload/" ++#define BINPATH "/usr/sbin/" ++#define MODPATH "/usr/lib/ircd-hybrid-7/ipv6/" ++#define AUTOMODPATH MODPATH "/autoload/" + #define MSGPATH IRCD_PREFIX "/messages/" +-#define ETCPATH IRCD_PREFIX "/etc" +-#define LOGPATH IRCD_PREFIX "/logs" ++#define ETCPATH "/etc/ircd" ++#define LOGPATH "/var/log/ircd" + #define UHPATH IRCD_PREFIX "/help/users" + #define HPATH IRCD_PREFIX "/help/opers" + + /* files */ +-#define SPATH BINPATH "/ircd" /* ircd executable */ ++#define SPATH BINPATH "/ircd-ipv6" /* ircd executable */ + #define SLPATH BINPATH "/servlink" /* servlink executable */ +-#define CPATH ETCPATH "/ircd.conf" /* ircd.conf file */ +-#define KPATH ETCPATH "/kline.conf" /* kline file */ +-#define XPATH ETCPATH "/xline.conf" /* xline file */ +-#define NRESVPATH ETCPATH "/nresv.conf" /* nick resv file */ +-#define CRESVPATH ETCPATH "/cresv.conf" /* channel resv file */ +-#define DLPATH ETCPATH "/dline.conf" /* dline file */ +-#define GPATH LOGPATH "/gline.log" /* gline logfile */ +-#define RPATH ETCPATH "/ircd.rsa" /* ircd rsa private keyfile */ +-#define MPATH ETCPATH "/ircd.motd" /* MOTD file */ +-#define LPATH LOGPATH "/ircd.log" /* ircd logfile */ +-#define PPATH ETCPATH "/ircd.pid" /* pid file */ +-#define OPATH ETCPATH "/opers.motd" /* oper MOTD file */ +-#define LIPATH ETCPATH "/links.txt" /* cached links file */ ++#define CPATH ETCPATH "/ircd-ipv6.conf" /* ircd.conf file */ ++#define KPATH ETCPATH "/kline-ipv6.conf" /* kline file */ ++#define XPATH ETCPATH "/xline-ipv6.conf" /* xline file */ ++#define NRESVPATH ETCPATH "/nresv-ipv6.conf" /* nick resv file */ ++#define CRESVPATH ETCPATH "/cresv-ipv6.conf" /* channel resv file */ ++#define DLPATH ETCPATH "/dline-ipv6.conf" /* dline file */ ++#define GPATH LOGPATH "/gline-ipv6.log" /* gline logfile */ ++#define RPATH ETCPATH "/ircd-ipv6.rsa" /* ircd rsa private keyfile */ ++#define MPATH ETCPATH "/ircd-ipv6.motd" /* MOTD file */ ++#define LPATH LOGPATH "/ircd-ipv6.log" /* ircd logfile */ ++#define PPATH "/var/run/ircd/ircd-ipv6.pid" /* pid file */ ++#define OPATH ETCPATH "/opers-ipv6.motd" /* oper MOTD file */ ++#define LIPATH ETCPATH "/links-ipv6.txt" /* cached links file */ + #endif /* !VMS */ + + /* WANT_GETTEXT - toggle gettext support. +@@ -217,18 +217,18 @@ + * this option is used unless you tell the system administrator beforehand + * and obtain their permission to send messages to the system log files. + */ +-#undef USE_SYSLOG ++#define USE_SYSLOG + + #ifdef USE_SYSLOG + /* SYSLOG_KILL SYSLOG_SQUIT SYSLOG_CONNECT SYSLOG_USERS SYSLOG_OPER + * If you use syslog above, you may want to turn some (none) of the + * spurious log messages for KILL,SQUIT,etc off. + */ +-#undef SYSLOG_KILL /* log all operator kills to syslog */ +-#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */ +-#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */ +-#undef SYSLOG_USERS /* send userlog stuff to syslog */ +-#undef SYSLOG_OPER /* log all users who successfully become an Op */ ++#define SYSLOG_KILL /* log all operator kills to syslog */ ++#define SYSLOG_SQUIT /* log all remote squits for all servers to syslog */ ++#define SYSLOG_CONNECT /* log remote connect messages for other all servs */ ++#define SYSLOG_USERS /* send userlog stuff to syslog */ ++#define SYSLOG_OPER /* log all users who successfully become an Op */ + + /* LOG_FACILITY - facility to use for syslog() + * Define the facility you want to use for syslog(). Ask your diff --git a/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0.3 b/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0.3 new file mode 100644 index 000000000000..127dad05c905 --- /dev/null +++ b/net-irc/ircd-hybrid/files/digest-ircd-hybrid-7.0.3 @@ -0,0 +1 @@ +MD5 5e5d93dbd55e6865d75ee18a2b56170f ircd-hybrid-7.0.3.tgz 1147557 diff --git a/net-irc/ircd-hybrid/files/init.d_ircd b/net-irc/ircd-hybrid/files/init.d_ircd index 7a465efea188..99e6f48f9ee6 100644 --- a/net-irc/ircd-hybrid/files/init.d_ircd +++ b/net-irc/ircd-hybrid/files/init.d_ircd @@ -1,6 +1,11 @@ #!/sbin/runscript # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/files/init.d_ircd,v 1.2 2004/07/18 03:59:42 dragonheart Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/files/init.d_ircd,v 1.3 2004/09/27 00:35:14 swegener Exp $ + +opts="${opts} rehash" + +ipv4pid="/var/run/ircd/ircd-ipv4.pid" +ipv6pid="/var/run/ircd/ircd-ipv6.pid" depend() { @@ -9,41 +14,55 @@ depend() start() { - if [ "${IPV4_OPTS}" != "no" ]; then + if [ "${IPV4_OPTS}" != "no" ] + then ebegin "Starting IRCd-Hybrid7 IPv4 daemon" - start-stop-daemon --start --quiet --background --chuid ircd --exec \ -\ + start-stop-daemon --start --quiet --background --chuid hybrid --exec \ /usr/sbin/ircd-ipv4 -- ${IPV4_OPTS} - eend $? fi - if [ -x "/usr/sbin/ircd-ipv6" -a "${IPV6_OPTS}" != "no" ]; then + if [ -x "/usr/sbin/ircd-ipv6" -a "${IPV6_OPTS}" != "no" ] + then ebegin "Starting IRCd-Hybrid7 IPv6 daemon" - start-stop-daemon --start --quiet --background --chuid ircd --exec \ -\ + start-stop-daemon --start --quiet --background --chuid hybrid --exec \ /usr/sbin/ircd-ipv6 -- ${IPV6_OPTS} - eend $? fi } stop() { - local ipv4pid="/var/run/ircd/ircd-ipv4.pid" - local ipv6pid="/var/run/ircd/ircd-ipv6.pid" - - if [ -r "${ipv4pid}" ]; then + if [ -r "${ipv4pid}" ] + then ebegin "Stopping IRCd-Hybrid7 IPv4 daemon" start-stop-daemon --stop --quiet --pidfile="${ipv4pid}" eend $? rm -f "${ipv4pid}" fi - if [ -r "${ipv6pid}" ]; then + if [ -r "${ipv6pid}" ] + then ebegin "Stopping IRCd-Hybrid7 IPv6 daemon" start-stop-daemon --stop --quiet --pidfile="${ipv6pid}" eend $? rm -f "${ipv6pid}" fi } + +rehash() +{ + if [ -r "${ipv4pid}" ] + then + ebegin "Rehashing IRCd-Hybrid7 IPv4 daemon" + kill -s SIGHUP $(cat "${ipv4pid}") + eend $? + fi + + if [ -r "${ipv6pid}" ] + then + ebegin "Rehashing IRCd-Hybrid7 IPv6 daemon" + kill -s SIGHUP $(cat "${ipv6pid}") + eend $? + fi +} diff --git a/net-irc/ircd-hybrid/files/ircd-hybrid-7.0.3.diff b/net-irc/ircd-hybrid/files/ircd-hybrid-7.0.3.diff new file mode 100644 index 000000000000..a82e451b6a60 --- /dev/null +++ b/net-irc/ircd-hybrid/files/ircd-hybrid-7.0.3.diff @@ -0,0 +1,79 @@ +diff -Naur ircd-hybrid-7.0.2/help/Makefile.in ircd-hybrid-7.0.2.gentoo/help/Makefile.in +--- ircd-hybrid-7.0.2/help/Makefile.in 2002-02-02 16:01:13.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/help/Makefile.in 2004-05-15 15:34:49.769274690 +0000 +@@ -80,11 +80,6 @@ + $(INSTALL_DATA) $$help $(uhelpdir); \ + fi \ + done +- @for link in $(SYMLINKS); do \ +- rm -f $(uhelpdir)/$$link; \ +- ln -s $(ohelpdir)/$$link $(uhelpdir); \ +- done +- + + distclean: + ${RM} -f Makefile +diff -Naur ircd-hybrid-7.0.2/include/Makefile.in ircd-hybrid-7.0.2.gentoo/include/Makefile.in +--- ircd-hybrid-7.0.2/include/Makefile.in 2002-04-29 22:30:24.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/include/Makefile.in 2004-05-15 15:37:28.783043062 +0000 +@@ -10,6 +10,7 @@ + exec_prefix= @exec_prefix@ + bindir= @bindir@ + sysconfdir= @sysconfdir@ ++includedir= @includedir@ + + all: + build: +@@ -19,13 +20,12 @@ + + install: + @echo installing header files... +- -@if test ! -d $(prefix)/include; then \ +- echo "mkdir $(prefix)/include"; \ +- mkdir $(prefix)/include; \ +- mkdir $(prefix)/include/ircd-hybrid-7; \ ++ -@if test ! -d $(includedir); then \ ++ echo "mkdir -p $(includedir)"; \ ++ mkdir -p $(includedir); \ + fi + @for header in *.h; do \ +- ${INSTALL_DATA} $$header $(prefix)/include/ircd-hybrid-7; \ ++ ${INSTALL_DATA} $$header $(includedir); \ + done + + distclean: +diff -Naur ircd-hybrid-7.0.2/src/Makefile.in ircd-hybrid-7.0.2.gentoo/src/Makefile.in +--- ircd-hybrid-7.0.2/src/Makefile.in 2003-10-26 02:08:20.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/src/Makefile.in 2004-05-15 15:38:04.377614108 +0000 +@@ -140,10 +140,6 @@ + echo "mkdir $(sysconfdir)"; \ + mkdir $(sysconfdir); \ + fi +- -@if test ! -d $(localstatedir)/logs; then \ +- echo "mkdir $(localstatedir)/logs"; \ +- mkdir $(localstatedir)/logs; \ +- fi + + install: install-mkdirs build + @for i in $(PROGS); do \ +diff -Naur ircd-hybrid-7.0.2/tools/Makefile.in ircd-hybrid-7.0.2.gentoo/tools/Makefile.in +--- ircd-hybrid-7.0.2/tools/Makefile.in 2002-07-11 23:40:27.000000000 +0000 ++++ ircd-hybrid-7.0.2.gentoo/tools/Makefile.in 2004-05-15 15:39:22.187764585 +0000 +@@ -129,10 +129,6 @@ + echo "mkdir $(sysconfdir)"; \ + mkdir $(sysconfdir); \ + fi +- -@if test ! -d $(localstatedir)/logs; then \ +- echo "mkdir $(localstatedir)/logs"; \ +- mkdir $(localstatedir)/logs; \ +- fi + + install: install-mkdirs build + @for i in $(PROGS); do \ +@@ -144,6 +140,4 @@ + $(INSTALL_BIN) $$i $(bindir); \ + done; \ + $(RM) -f $(bindir)/vimotd $(bindir)/viklines; \ +- $(LN) $(bindir)/viconf $(bindir)/vimotd; \ +- $(LN) $(bindir)/viconf $(bindir)/viklines + diff --git a/net-irc/ircd-hybrid/ircd-hybrid-7.0.3.ebuild b/net-irc/ircd-hybrid/ircd-hybrid-7.0.3.ebuild new file mode 100644 index 000000000000..668c134a2c8d --- /dev/null +++ b/net-irc/ircd-hybrid/ircd-hybrid-7.0.3.ebuild @@ -0,0 +1,361 @@ +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ircd-hybrid-7.0.3.ebuild,v 1.1 2004/09/27 00:35:13 swegener Exp $ + +inherit eutils fixheadtails + +MAX_NICK_LENGTH=30 +MAX_CLIENTS=500 +MAX_TOPIC_LENGTH=512 +LARGE_NETWORK= +DISABLE_LARGE_NETWORK=1 +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-r2 ) + ssl? ( >=dev-libs/openssl-0.9.7d ) + || ( >=dev-libs/libelf-0.8.2 >=dev-libs/elfutils-0.94-r1 ) + >=sys-devel/flex-2.5.4a-r5 + >=sys-devel/bison-1.875 + >=sys-devel/gettext-0.12.1 + >=sys-apps/sed-4.0.7" +RDEPEND="" + +pkg_setup() { + enewgroup hybrid + enewuser hybrid -1 /bin/false /dev/null hybrid +} + +src_unpack() { + unpack ${A} + cd ${S} + + ht_fix_file ${S}/configure + + # 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. + epatch ${FILESDIR}/${PF}.diff || die "epatch failed" + sed -i -e "s:IRC_CFLAGS=\"-O2 -g \":IRC_CFLAGS=\"${CFLAGS}\":" configure + + # Store unmodified source tree for compiling necessary shared libs and + # binaries with ipv6 support. + if 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" + ewarn "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="${myconf} --enable-large-net" + fi + if [ ${DISABLE_LARGE_NETWORK} ] + then + ewarn "Disabling large networks." + myconf="${myconf} --disable-large-net" + fi + if [ ${SMALL_NETWORK} ] + then + ewarn "Configuring for small networks." + myconf="${myconf} --enable-small-net" + fi + if [ ${DISABLE_SMALL_NETWORK} ] + then + ewarn "Disabling small networks." + myconf="${myconf} --disable-small-net" + fi + if [ ${ENABLE_POLL} ] + then + ewarn "Configuring with poll() enabled" + myconf="${myconf} --enable-poll" + fi + if [ ${DISABLE_POLL} ] + then + ewarn "Configuring with poll() disabled" + myconf="${myconf} --disable-poll" + fi + if [ ${ENABLE_SELECT} ] + then + ewarn "Configuring with select() enabled." + myconf="${myconf} --enable-select" + fi + if [ ${DISABLE_SELECT} ] + then + ewarn "Configuring with select() disabled." + myconf="${myconf} --disable-select" + fi + if [ ${ENABLE_EFNET} ] + then + ewarn "Configuring for Efnet." + myconf="${myconf} --enable-efnet" + fi + if [ ${ENABLE_RTSIGIO} ] + then + ewarn "Configuring with Superior RTSIGIO." + myconf="${myconf} --enable-rtsigio" + fi + if [ ${DISABLE_RTSIGIO} ] + then + ewarn "Disabling Superior RTSIGIO." + myconf="${myconf} --disable-rtsigio" + fi + if [ ${ENABLE_SHARED} ] + then + ewarn "Configuring for non-Efnet." + myconf="${myconf} --enable-shared" + fi + if [ ${ENABLE_KQUEUE} ] + then + ewarn "Configuring for Kqueue." + myconf="${myconf} --enable-kqueue" + fi + if [ ${DISABLE_KQUEUE} ] + then + ewarn "Disabling Kqueue." + myconf="${myconf} --disable-kqueue" + fi + + # Wait for admins to see the default variables. + epause 5 + + # Set ipv4 defaults to config.h. + patch include/config.h ${FILESDIR}/config-ipv4-${PVR}.diff \ + || die "ipv4 defaults patch failed" + + # Set prefix to /usr/share/ircd-hybrid-7 to save some patching. + econf \ + --prefix=/usr/share/ircd-hybrid-7 \ + --with-nicklen=${MAX_NICK_LENGTH} \ + --with-topiclen=${MAX_TOPIC_LENGTH} \ + --with-maxclients=${MAX_CLIENTS} \ + $(use_enable zlib) \ + $(use_enable ssl openssl) \ + $(use_enable !static shared-modules) \ + $(use_enable debug assert) \ + ${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. + use ssl && gcc ${CFLAGS} -o respond tools/rsa_respond/respond.c -lcrypto + + # Configure and compile with ipv6 support in temp. + if use ipv6 + then + einfo "IPv6 support" + cd ${T}/ipv6/${P} + + # Set ipv6 defaults to config.h. + patch include/config.h ${FILESDIR}/config-ipv6-${PVR}.diff \ + || die "ipv6 defaults patch failed" + + econf \ + --prefix=/usr/share/ircd-hybrid-7 \ + --with-nicklen=${MAX_NICK_LENGTH} \ + --with-topiclen=${MAX_TOPIC_LENGTH} \ + --with-maxclients=${MAX_CLIENTS} \ + --enable-ipv6 \ + $(use_enable zlib) \ + $(use_enable ssl openssl) \ + $(use_enable !static shared-modules) \ + $(use_enable debug assert) \ + ${myconf} \ + || die "ipv6 config failed" + emake || die "ipv6 make failed" + fi +} + +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 + keepdir /var/run/ircd /var/log/ircd + + # 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. + use ssl && dosbin ${S}/respond + + # 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 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. + exeinto /etc/init.d + newexe ${FILESDIR}/init.d_ircd ircd + insinto /etc/conf.d + newins ${FILESDIR}/conf.d_ircd ircd +} + +pkg_postinst() { + if [ ! -f ${ROOT}/etc/ircd/ircd-ipv4.conf ] + then + cp ${ROOT}/etc/ircd/example-ipv4.conf \ + ${ROOT}/etc/ircd/ircd-ipv4.conf + fi + if use ipv6 && [ ! -f /etc/ircd/example-ipv6.conf ] + then + cp ${ROOT}/etc/ircd/example-ipv6.conf \ + ${ROOT}/etc/ircd/ircd-ipv6.conf + fi + + chown -R hybrid:hybrid \ + ${ROOT}/etc/ircd ${ROOT}/var/log/ircd ${ROOT}/var/run/ircd + chmod 700 ${ROOT}/etc/ircd ${ROOT}/var/log/ircd + find ${D}/etc/ircd -type f -exec chmod 600 {} \; + + einfo "Create /etc/ircd/ircd-{ipv4,ipv6}.conf files and edit" + einfo "/etc/conf.d/ircd otherwise the daemon(s) will quietly" + einfo "refuse to run." + + if use ssl + then + einfo "To create a rsa keypair for crypted links execute:" + einfo "ebuild /var/db/pkg/${CATEGORY}/${PF}/${PF}.ebuild config" + fi +} + +pkg_config() { + local proto="ipv4" + use ipv6 && proto="${proto} 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 ${ROOT}/var/run/random-seed \ + -out ${ROOT}/etc/ircd/ircd-${i}.rsa 2048 + openssl rsa -in ${ROOT}/etc/ircd/ircd-${i}.rsa -pubout \ + -out ${ROOT}/etc/ircd/ircd-${i}.pub + chown hybrid:hybrid ${ROOT}/etc/ircd/ircd-${i}.rsa ${ROOT}/etc/ircd/ircd-${i}.pub + chmod 600 ${ROOT}/etc/ircd/ircd-${i}.rsa + chmod 644 ${ROOT}/etc/ircd/ircd-${i}.pub + + einfo "Update the rsa keypair in /etc/ircd/ircd-${i}.conf and /REHASH." + done +} |