# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/www-servers/monkeyd/monkeyd-1.5.5.ebuild,v 1.1 2014/10/19 12:24:28 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"

# ssl is broken, so we turn it off until fixed
IUSE="-debug jemalloc php minimal elibc_musl elibc_uclibc monkeyd_plugins_auth monkeyd_plugins_cheetah cgi monkeyd_plugins_dirlisting fastcgi +monkeyd_plugins_liana monkeyd_plugins_logger monkeyd_plugins_mandril"

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

DEPEND="jemalloc? ( >=dev-libs/jemalloc-3.3.1 )"
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() {
	# Unconditionally get rid of the bundled jemalloc
	rm -rf "${S}"/deps
	epatch "${FILESDIR}"/${PN}-1.5.2-use-system-jemalloc.patch
	epatch "${FILESDIR}"/${PN}-1.5.0-fix-CPPFLAGS.patch

	# 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 minimal && {
		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 elibc_uclibc && myconf+=" --uclib-mode"
	use elibc_musl && myconf+=" --musl-mode"

	use minimal || myconf+=" --enable-shared"
	use jemalloc || myconf+=" --malloc-libc"

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

	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
}