summaryrefslogtreecommitdiff
blob: a80f8afe0ed70834da39e5a914f3ca93e1adb86e (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
134
135
136
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/www-servers/monkeyd/monkeyd-1.2.0.ebuild,v 1.1 2013/05/28 12:55:02 blueness Exp $

EAPI="5"

inherit toolchain-funcs depend.php multilib

MY_P="${PN/d}-${PV}"
DESCRIPTION="A small, fast, and scalable web server"
HOMEPAGE="http://www.monkey-project.com/"
SRC_URI="http://monkey-project.com/releases/${PV:0:3}/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~mips ~ppc ~ppc64 ~x86"

PLUGINS="monkeyd_plugins_auth monkeyd_plugins_cheetah cgi monkeyd_plugins_dirlisting fastcgi
monkeyd_plugins_liana monkeyd_plugins_logger monkeyd_plugins_mandril monkeyd_plugins_polarssl"
IUSE="-debug php shared-lib uclibc ${PLUGINS}"

# uclibc is often compiled without backtrace info so we should
# force this off.  If someone complains, consider relaxing it.
REQUIRED_USE="uclibc? ( !debug )"

RDEPEND="php? ( dev-lang/php )"

S="${WORKDIR}/${MY_P}"

WEBROOT="/var/www/localhost"

pkg_setup() {
	use php && require_php_cgi

	if use debug; then
		ewarn
		ewarn "\033[1;33m**************************************************\033[00m"
		ewarn "Do not use debug in production!"
		ewarn "\033[1;33m**************************************************\033[00m"
		ewarn
	fi
}

src_prepare() {
	# Don't install the banana script, we use ${FILESDIR}/monkeyd.initd instead
	sed -i '/Creating bin\/banana/d' configure || die "No configure file"
	sed -i '/create_banana_script bindir/d' configure || die "No configure file"

	# Don't explicitly strip files
	sed -i -e '/$STRIP /d' -e 's/install -s -m 644/install -m 755/' configure || die "No configure file"

	# We don't need the includes, sym link to libmonkey.so, or monkey.cp when not installing the .so
	use shared-lib || {
		sed -i '/install -d \\$(INCDIR)/d' configure || die "No configure file"
		sed -i '/install -m 644 src\/include\/\*.h \\$(INCDIR)/d' configure || die "No configure file"
		sed -i '/ln -sf/d' configure || die "No configure file"
		sed -i '/install -d \\$(LIBDIR)\/pkgconfig/d' configure || die "No configure file"
		sed -i '/install -m 644 monkey.pc \\$(LIBDIR)\/pkgconfig/d' configure || die "No configure file"
	}

	# Unquiet build
	sed -i '/^CC\s/d' configure || die "No configure file"
	sed -i 's/^\(CC_QUIET=\).*/\1 \\\$(CC)/' configure || die "No configure file"
	sed -i 's/^\(.*MAKE.*\)-s\(.*\)$/\1\2/' configure || die "No configure file"
	makes=$(find . -iname Makefile.in)
	for f in ${makes}; do
		sed -i '/^CC\s/d' $f || die "No file "$f
		sed -i 's/^\(CC_QUIET=\).*/\1 \$(CC)/' $f || die "No file "$f
	done
}

src_configure() {
	local myconf=""

	use uclibc && myconf+=" --uclib-mode"

	if use debug; then
		myconf+=" --debug --trace"
	else
		myconf+=" --no-backtrace"
	fi

	use shared-lib && myconf+=" --enable-shared"

	local enable_plugins=""
	local disable_plugins=""
	for p in ${PLUGINS}; do
		cp=${p/monkeyd_plugins_/}
		use $p && enable_plugins+="${cp}," || disable_plugins+="${cp},"
	done
	myconf+=" --enable-plugins=${enable_plugins%,} --disable-plugins=${disable_plugins%,}"

	# Non-autotools configure
	./configure \
		--prefix=/usr \
		--bindir=/usr/bin \
		--datadir=${WEBROOT}/htdocs \
		--logdir=/var/log/${PN} \
		--mandir=/usr/share/man \
		--libdir=/usr/$(get_libdir) \
		--plugdir=/usr/$(get_libdir)/monkeyd/plugins \
		--sysconfdir=/etc/${PN} \
		--platform="generic" \
		${myconf} \
		|| die
}

src_compile() {
	emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}"

	# Don't install the banana script man page
	rm "${S}"/man/banana.1
}

src_install() {
	default

	if use php ; then
		sed -i -e '/^#AddScript application\/x-httpd-php/s:^#::' "${D}"/etc/monkeyd/monkey.conf || die
		sed -i -e 's:/home/my_home/php/bin/php:/usr/bin/php-cgi:' "${D}"/etc/monkeyd/monkey.conf || die
	fi

	sed -i -e "s:/var/log/monkeyd/monkey.pid:/var/run/monkey.pid:" "${D}"/etc/monkeyd/monkey.conf || die
	newinitd "${FILESDIR}"/monkeyd.initd monkeyd
	newconfd "${FILESDIR}"/monkeyd.confd monkeyd

	#move htdocs to docdir, bug #429632
	docompress -x /usr/share/doc/"${PF}"/htdocs.dist
	mv "${D}"${WEBROOT}/htdocs \
		"${D}"/usr/share/doc/"${PF}"/htdocs.dist
	mkdir "${D}"${WEBROOT}/htdocs

	keepdir \
		/var/log/monkeyd \
		${WEBROOT}/htdocs
}