rt-4.4.4-r3.ebuild

Download (6.6 KB)

# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit webapp depend.apache

DESCRIPTION="RT is an enterprise-grade ticketing system"
HOMEPAGE="https://www.bestpractical.com/rt/"
SRC_URI="https://download.bestpractical.com/pub/${PN}/release/${P}.tar.gz"

KEYWORDS="~amd64 ~riscv"
LICENSE="GPL-2"
IUSE="mysql +postgres fastcgi lighttpd"
REQUIRED_USE="^^ ( mysql postgres )"

RESTRICT="test"

DEPEND="
	acct-group/rt
	acct-user/rt
	>=dev-lang/perl-5.10.1
	>=dev-perl/Apache-Session-1.53
	>=dev-perl/CGI-4
	>=dev-perl/CSS-Squish-0.06
	>=dev-perl/Class-Accessor-0.34
	>=dev-perl/Class-ReturnValue-0.550.0-r1
	>=dev-perl/DBI-1.37
	>=dev-perl/Date-Extract-0.02
	>=dev-perl/DateTime-Format-Natural-0.67
	>=dev-perl/Devel-StackTrace-1.19
	>=dev-perl/Email-Address-1.912.0
	>=dev-perl/Email-Address-List-0.60.0
	>=dev-perl/HTML-FormatText-WithLinks-0.14
	>=dev-perl/HTML-Mason-1.43
	>=dev-perl/HTML-Scrubber-0.08
	>=dev-perl/HTTP-Server-Simple-0.34
	>=dev-perl/HTTP-Server-Simple-Mason-0.14
	>=dev-perl/Locale-Maketext-Lexicon-0.32
	>=dev-perl/Log-Dispatch-2.410.0
	>=dev-perl/MIME-tools-5.425
	>=dev-perl/MailTools-1.60
	>=dev-perl/Module-Versions-Report-1.05
	>=dev-perl/Role-Basic-0.12
	>=dev-perl/Symbol-Global-Name-0.04
	>=dev-perl/Text-Quoted-2.80.0
	>=dev-perl/Text-WikiFormat-0.76
	>=dev-perl/Tree-Simple-1.04
	>=dev-perl/XML-RSS-1.05
	>=dev-perl/DBIx-SearchBuilder-1.660.0
	>=virtual/perl-Digest-MD5-2.27
	>=virtual/perl-Encode-2.730.0
	>=virtual/perl-File-Spec-0.8
	>=virtual/perl-Getopt-Long-2.24
	>=virtual/perl-Locale-Maketext-1.06
	>=virtual/perl-Storable-2.08
	dev-perl/Business-Hours
	dev-perl/CGI-Emulate-PSGI
	dev-perl/CGI-PSGI
	dev-perl/Cache-Simple-TimedExpiry
	dev-perl/Calendar-Simple
	dev-perl/Convert-Color
	dev-perl/Crypt-Eksblowfish
	dev-perl/Crypt-SSLeay
	dev-perl/Crypt-X509
	dev-perl/CSS-Minifier-XS
	dev-perl/Data-Page-Pageset
	dev-perl/DBD-SQLite
	dev-perl/Data-GUID
	dev-perl/Data-ICal
	dev-perl/Date-Manip
	dev-perl/Devel-GlobalDestruction
	dev-perl/File-ShareDir
	dev-perl/File-Which
	dev-perl/GDGraph
	dev-perl/GDTextUtil
	dev-perl/GD[png(+),gif(+)]
	dev-perl/GnuPG-Interface
	dev-perl/GraphViz
	dev-perl/HTML-Formatter
	dev-perl/HTML-FormatText-WithLinks-AndTables
	dev-perl/HTML-Gumbo
	dev-perl/HTML-Mason-PSGIHandler
	dev-perl/HTML-Parser
	dev-perl/HTML-Quoted
	dev-perl/HTML-RewriteAttributes
	dev-perl/HTML-Tree
	dev-perl/IPC-Run3
	dev-perl/JSON
	dev-perl/JavaScript-Minifier-XS
	dev-perl/MIME-Types
	dev-perl/Module-Refresh
	dev-perl/Mozilla-CA
	dev-perl/Net-CIDR
	dev-perl/PerlIO-eol
	dev-perl/Plack
	dev-perl/Regexp-Common-net-CIDR
	dev-perl/Regexp-IPv6
	dev-perl/Scope-Upper
	dev-perl/Starlet
	dev-perl/String-ShellQuote
	dev-perl/TermReadKey
	dev-perl/Text-Autoformat
	dev-perl/Text-Password-Pronounceable
	dev-perl/Time-ParseDate
	dev-perl/TimeDate
	dev-perl/UNIVERSAL-require
	dev-perl/libwww-perl
	dev-perl/Locale-Maketext-Fuzzy
	dev-perl/Net-IP
	dev-perl/Net-Server
	dev-perl/Regexp-Common
	dev-perl/Text-Template
	dev-perl/Text-Wrapper
	virtual/perl-Digest
	virtual/perl-File-Temp
	virtual/perl-Scalar-List-Utils
	virtual/perl-Time-HiRes
	virtual/perl-libnet

	fastcgi? (
		dev-perl/FCGI
		dev-perl/FCGI-ProcManager
	)
	!lighttpd? (
		dev-perl/Apache-DBI
		!fastcgi? ( >=www-apache/mod_perl-2 )
	)
	lighttpd? ( dev-perl/FCGI )
	mysql? ( >=dev-perl/DBD-mysql-2.1018 )
	postgres? ( >=dev-perl/DBD-Pg-1.43 )
"

RDEPEND="${DEPEND}
	virtual/mta
	!lighttpd? ( ${APACHE2_DEPEND} )
	lighttpd? (
		>=www-servers/lighttpd-1.3.13
		sys-apps/openrc
	)
"

need_httpd_cgi

pkg_setup() {
	webapp_pkg_setup

	ewarn
	ewarn "If you are upgrading from an existing RT installation"
	ewarn "make sure to read the related upgrade documentation in"
	ewarn "${ROOT}usr/share/doc/${PF}."
	ewarn
}

src_prepare() {
	# add Gentoo-specific layout
	cat "${FILESDIR}"/config.layout-gentoo >> config.layout
	sed -e "s|PREFIX|${EPREFIX}/${MY_HOSTROOTDIR}/${PF}|g" \
		-e "s|HTMLDIR|${EPREFIX}/${MY_HTDOCSDIR}|g" \
		-e 's|/\+|/|g' \
		-i ./config.layout || die 'config sed failed'

	# don't need to check dev dependencies
	sed -e "s|\$args{'with-DEV'} =1;|#\$args{'with-DEV'} =1;|" \
		-i sbin/rt-test-dependencies.in || die 'dev sed failed'

	eapply "${FILESDIR}/rt-makefile-serialize-install-prereqs.patch"
	eapply_user
}

src_configure() {
	local web
	local myconf
	local depsconf

	if use mysql ; then
		myconf="--with-db-type=mysql --with-db-dba=root"
		depsconf="--with-MYSQL"
	elif use postgres ; then
		myconf="--with-db-type=Pg --with-db-dba=postgres"
		depsconf="--with-PG"
	else
		die "Pick a database backend"
	fi

	if use fastcgi ; then
		myconf+=" --with-web-handler=fastcgi"
		web="apache"
		depsconf+=" --with-FASTCGI"
	elif use lighttpd ; then
		myconf+=" --with-web-handler=fastcgi"
		web="lighttpd"
		depsconf+=" --with-FASTCGI"
	else
		myconf+=" --with-web-handler=modperl2"
		web="apache"
		depsconf+=" --with-MODPERL2"
	fi
	# Any loading Date::Manip from here on
	# may fail if TZ=Factory as it is on gentoo install
	# media ( affects install as well )
	export TZ=UTC

	./configure --enable-layout=Gentoo \
		--with-bin-owner=rt \
		--with-libs-owner=rt \
		--with-libs-group=rt \
		--with-rt-group=rt \
		--with-web-user=${web} \
		--with-web-group=${web} \
		${myconf}

	# check for missing deps and ask to report if something is broken
	/usr/bin/perl ./sbin/rt-test-dependencies ${depsconf} > "${T}"/t
	if grep -q "MISSING" "${T}"/t; then
		ewarn "Missing Perl dependency!"
		ewarn
		cat "${T}"/t | grep MISSING
		ewarn
		ewarn "Please run perl-cleaner. If the problem persists,"
		ewarn "please file a bug in the Gentoo Bugzilla with the information above"
		die "Missing dependencies."
	fi
}

src_compile() { :; }

src_install() {
	webapp_src_preinst
	emake DESTDIR="${D}" install

	dodoc -r docs/*
	# Disable compression because `perldoc` doesn't decompress transparently
	docompress -x /usr/share/doc

	# make sure we don't clobber existing site configuration
	rm -f "${ED}"/${MY_HOSTROOTDIR}/${PF}/etc/RT_SiteConfig.pm

	# fix paths
	find "${ED}" -type f -print0 | xargs -0 sed -i -e "s:${ED}::g"

	# copy upgrade files
	insinto "${MY_HOSTROOTDIR}/${PF}"
	doins -r etc/upgrade

	# require the web server's permissions
	webapp_serverowned "${MY_HOSTROOTDIR}"/${PF}/var
	webapp_serverowned "${MY_HOSTROOTDIR}"/${PF}/var/mason_data/obj

	webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt
	webapp_hook_script "${FILESDIR}"/reconfig

	webapp_src_install
}

pkg_postinst() {
	webapp_pkg_postinst

	if use lighttpd ; then
		elog "We no longer install initscripts as Best Practical's recommended"
		elog "implementation is to let Lighttpd manage the FastCGI instance."
		elog
		elog "You may find the following helpful:"
		elog "   perldoc /usr/share/doc/${P}/web_deployment.pod"
	fi
}

Thank you!