# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
KEYWORDS="amd64 arm64"
RESTRICT="mirror test"
SLOT="0"
USE_DOTNET="net45 net40 net35"
PATCHDIR="${FILESDIR}/2.2/"
inherit vcs-snapshot
inherit autotools
# msbuild.eclass inherits dotnet itself
inherit msbuild
inherit systemd
DESCRIPTION="XSP is a small web server that can host ASP.NET pages"
LICENSE="MIT"
HOMEPAGE="https://www.mono-project.com/docs/web/aspnet/"
EGIT_COMMIT="3330ff0790eaa48b0b54174edc0736b9b6006841"
SRC_URI="https://codeload.github.com/mono/xsp/tar.gz/${EGIT_COMMIT} -> ${PN}-${PV}.tar.gz"
# setting S is not necessary with vcs-snapshot
#S="${WORKDIR}/xsp-${EGIT_COMMIT}"
IUSE="+${USE_DOTNET} systemd openrc +xsp +modmono fastcgi examples doc test debug developer"
# systemd = install .service files
# openrc = install init.d scripts
# modmono = install mod-mono-server
# fastcgi = Add support for the FastCGI interface (install fastcgi-mono-server)
# man = Build the manpages
# examples = install test applications
# test ~= ??? unit tests ???
# RESTRICT is going below IUSE because of "test" USE flag (but I don't know is order important or no)"
RESTRICT="mirror !test? ( test )"
DEPEND="dev-db/sqlite:3"
RDEPEND="
${DEPEND}
acct-group/aspnet
acct-user/aspnet
"
SANDBOX_WRITE="${SANDBOX_WRITE}:/etc/mono/registry/:/etc/mono/registry/last-btime"
src_prepare() {
eapply "${FILESDIR}/disable-tests.patch"
eapply "${FILESDIR}/acme.patch"
eapply "${FILESDIR}/aclocal-fix.patch"
if [ -z "$LIBTOOL" ]; then
LIBTOOL=`which glibtool 2>/dev/null`
if [ ! -x "$LIBTOOL" ]; then
LIBTOOL=`which libtool`
fi
fi
eaclocal -I build/m4/shamrock -I build/m4/shave $ACLOCAL_FLAGS
if test -z "$NO_LIBTOOLIZE"; then
${LIBTOOL}ize --force --copy
fi
eapply_user
eautoconf
eautomake --gnu --add-missing --force --copy #nowarn
}
src_configure() {
myeconfargs=("--enable-maintainer-mode")
use test && myeconfargs+=("--with_unit_tests")
( ! use doc ) || myeconfargs+=("--disable-docs")
econf ${myeconfargs}
}
src_compile() {
local PROPERTIES=(
'/p:PrepareProjectReferencesDependsOn="AssignProjectConfiguration;_SplitProjectReferencesByFileExistence"'
'/p:GetCopyToOutputDirectoryItemsDependsOn="AssignTargetPaths;_SplitProjectReferencesByFileExistence"'
)
# see https://unix.stackexchange.com/questions/29509/transform-an-array-into-arguments-of-a-command
# ${PROPERTIES[@]}
emsbuild ${PROPERTIES[@]} xsp.sln
}
#pkg_preinst() {
# enewgroup aspnet
# enewuser aspnet -1 -1 /tmp aspnet
#}
src_install() {
emake DESTDIR="${ED}" install
if test -z "$NO_LIBTOOLIZE"; then
${LIBTOOL}ize --force --copy
fi
if ! use examples; then
/bin/rm -rf "${ED}/usr/lib64/xsp/test" || die
fi
if use openrc; then
if use xsp; then
newinitd "${PATCHDIR}/xsp.initd" xsp
newconfd "${PATCHDIR}/xsp.confd" xsp
fi
if use modmono; then
newinitd "${PATCHDIR}/mod-mono-server-r1.initd" mod-mono-server
newconfd "${PATCHDIR}/mod-mono-server.confd" mod-mono-server
fi
if use fastcgi; then
newinitd "${PATCHDIR}/fastcgi-mono-server-r1.initd" fastcgi-mono-server
newconfd "${PATCHDIR}/fastcgi-mono-server.confd" fastcgi-mono-server
fi
keepdir /var/run/aspnet
fi
if use systemd; then
if use xsp; then
keepdir "/etc/xsp4/conf.d"
insinto "/etc/xsp4"
doins "${FILESDIR}/systemd/mono.webapp"
systemd_dounit "${FILESDIR}"/systemd/mono-xsp4.service
if use doc; then
insinto /etc/xsp4/conf.d
doins "${FILESDIR}/systemd/readme.txt"
fi
fi
if use modmono; then
keepdir "/etc/mod-mono-server/conf.d"
insinto "/etc/mod-mono-server"
doins "${FILESDIR}/systemd/mono.webapp"
systemd_dounit "${FILESDIR}"/systemd/mod-mono-server.service
insinto "/etc/mod-mono-server"
doins "${FILESDIR}/systemd/mono.webapp"
fi
if use fastcgi; then
keepdir "/etc/fastcgi-mono-server/conf.d"
insinto "/etc/fastcgi-mono-server"
doins "${FILESDIR}/systemd/mono.webapp"
systemd_dounit "${FILESDIR}"/systemd/fastcgi-mono-server.service
insinto "/etc/fastcgi-mono-server"
doins "${FILESDIR}/systemd/mono.webapp"
fi
fi
}