summaryrefslogtreecommitdiff
blob: fd92c6aacc904dfcc75f467162f65a490fba0aed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-irc/irc-server/irc-server-2.10.3_p3.ebuild,v 1.6 2004/06/24 23:05:33 agriffis Exp $

inherit eutils

MY_PV=irc${PV:0:6}${PV:7:2}

DESCRIPTION="RFC compliant IRC server"
HOMEPAGE="http://www.irc.org"
SRC_URI="ftp://ftp.irc.org/irc/server/${MY_PV}.tgz
	ftp://ftp.funet.fi/pub/unix/irc/server/${MY_PV}.tgz"
LICENSE="GPL-1"
SLOT="0"

# The only architecture I can test
KEYWORDS="x86 ~ppc"
IUSE="zlib ipv6"

DEPEND="sys-libs/glibc
	sys-libs/ncurses
	zlib? ( sys-libs/zlib )"

RDEPEND="sys-apps/sed
	sys-apps/grep
	sys-apps/textutils"

S=${WORKDIR}/${MY_PV}

src_unpack() {
	unpack ${A}
	epatch ${FILESDIR}/${PV}-gentoo.patch || die
}

src_compile () {

	IRCUID=`grep ^ircd: /etc/passwd | cut -d : -f 3`
	IRCGID=`grep ^ircd: /etc/group | cut -d : -f 3`
	if [ -z "$IRCGID" ]
	then
		IRCGID=`grep ^ircd: /etc/passwd | cut -d : -f 4`
	fi

	if [ -z "$IRCUID" ]
	then
		IRCUID=0
		until [ -z "`cut -d : -f 3 /etc/passwd | grep $IRCUID`" ]
		do
			IRCUID=$RANDOM
		done
	fi

	if [ -z "$IRCGID" ]
	then
		IRCGID=0
		until [ -z "`cut -d : -f 3 /etc/group | grep $IRCGID`" ]
		do
			IRCGID=$RANDOM
		done
	fi

	echo -n "$IRCUID" > ${T}/user
	echo -n "$IRCGID" > ${T}/group

	cd ${S}/support
	sed \
		-e "s/^#undef\tOPER_KILL$/#define\tOPER_KILL/" \
		-e "s/^#undef\tOPER_RESTART$/#define\tOPER_RESTART/" \
		-e "s/^#undef TIMEDKLINES$/#define\tTIMEDKLINES\t60/" \
		-e "s/^#undef\tR_LINES$/#define\tR_LINES/" \
		-e "s/^#undef\tCRYPT_OPER_PASSWORD$/#define\tCRYPT_OPER_PASSWORD/" \
		-e "s/^#undef\tCRYPT_LINK_PASSWORD$/#define\tCRYPT_LINK_PASSWORD/" \
		-e "s/^#undef\tIRC_UID$/#define\tIRC_UID\t$IRCUID/" \
		-e "s/^#undef\tIRC_GID$/#define\tIRC_GID\t$IRCGID/" \
		-e "s/^#undef USE_SERVICES$/#define\tUSE_SERVICES/" \
		config.h.dist > config.h.dist~
	mv -f config.h.dist~ config.h.dist

	use zlib && sed -e "s/^#undef\tZIP_LINKS$/#define\tZIP_LINKS/" config.h.dist > config.h.dist~
	mv -f config.h.dist~ config.h.dist

	cd ..

	use zlib && myconf="--with-zlib" || myconf="--without-zlib"
	use ipv6 && myconf="$myconf --with-ip6" || myconf="$myconf --without-ip6"

	./configure \
		--prefix=/usr \
		--host=i686-pc-linux-gnu \
		'--mandir=${prefix}/share/man' \
		--sysconfdir=/etc/ircd \
		--localstatedir=/var/run/ircd \
		--logdir=/var/log \
		$myconf || die

	cd `support/config.guess`
	emake LDFLAGS=-lm ircd iauth chkconf ircd-mkpasswd ircdwatch tkserv || die
}

src_install() {

	cd `support/config.guess`
	make \
		prefix=${D}/usr \
		ircd_conf_dir=${D}/etc/ircd \
		ircd_var_dir=${D}/var/run/ircd \
		ircd_log_dir=${D}/var/log \
		install-server install-tkserv || die

	fowners `cat ${T}/user`:`cat ${T}/group` /var/run/ircd

	cd ../doc
	dodoc *-New alt-irc-faq Authors BUGS ChangeLog Etiquette example.conf \
		iauth-internals.txt INSTALL.appendix INSTALL.* LICENSE \
		m4macros README RELEASE* rfc* SERVICE*
	docinto Juped
	dodoc Juped/Advertisement Juped/ChangeLog.* Juped/INSTALL
	docinto Juped/US-Admin
	dodoc Juped/US-Admin/Networking
	docinto Nets
	dodoc Nets/IRCNet
	docinto Nets/Europe
	dodoc Nets/Europe/*

	exeinto /etc/init.d
	newexe ${FILESDIR}/ircd.rc ircd

}

pkg_postinst() {
	groupadd -g `cat ${T}/group` -o ircd
	useradd -c "IRCd server user" -d /etc/ircd -g `cat ${T}/group` -o -s /bin/false -u `cat ${T}/user` ircd
}