144 lines
3.7 KiB
Bash
144 lines
3.7 KiB
Bash
# Copyright 1999-2021 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
|
|
inherit flag-o-matic toolchain-funcs
|
|
|
|
DESCRIPTION="Distributed Checksum Clearinghouse"
|
|
HOMEPAGE="https://www.rhyolite.com/dcc/"
|
|
SRC_URI="https://www.rhyolite.com/dcc/source/old/${P}.tar.Z"
|
|
|
|
LICENSE="DCC GPL-2"
|
|
SLOT="0"
|
|
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ppc ppc64 sparc x86"
|
|
IUSE="cgi ipv6 rrdtool milter"
|
|
|
|
RDEPEND="
|
|
dev-lang/perl
|
|
|| (
|
|
net-ftp/ftp
|
|
net-misc/curl
|
|
net-misc/wget
|
|
www-client/fetch
|
|
)
|
|
milter? (
|
|
|| (
|
|
mail-filter/libmilter
|
|
mail-mta/sendmail
|
|
)
|
|
)
|
|
rrdtool? ( net-analyzer/rrdtool )"
|
|
DEPEND="${RDEPEND}"
|
|
|
|
dcc_cgibin=var/www/localhost/cgi-bin/dcc
|
|
dcc_homedir=var/dcc
|
|
dcc_libexec=usr/sbin
|
|
dcc_man=usr/share/man
|
|
dcc_rundir=var/run/dcc
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-1.3.140-freebsd.patch
|
|
"${FILESDIR}"/${P}-fno-common.patch
|
|
)
|
|
|
|
src_configure() {
|
|
tc-export CC AR RANLIB
|
|
local myconf=(
|
|
--bindir="${EPREFIX}"/usr/bin
|
|
--homedir="${EPREFIX}"/${dcc_homedir}
|
|
--libexecdir="${EPREFIX}"/${dcc_libexec}
|
|
--mandir="${EPREFIX}"/usr/share/man
|
|
--enable-dccifd
|
|
--enable-server
|
|
--with-DDC-MD5
|
|
--with-installroot="${D}"
|
|
--with-rundir="${EPREFIX}"/${dcc_rundir}
|
|
--with-uid=root
|
|
--with-updatedcc_pfile="${EPREFIX}"/${dcc_homedir}/updatecc.pfile
|
|
--with-db-memory=64
|
|
--with-max-db-mem=128
|
|
--with-max-log-size=0
|
|
--with-make-cmd=${MAKE:-make}
|
|
$(use_enable ipv6 IPv6)
|
|
$(use_enable milter dccm)
|
|
$(use_with cgi cgibin ${dcc_cgibin})
|
|
$(use_with milter sendmail)
|
|
)
|
|
|
|
einfo "Using config: ${myconf[@]}"
|
|
|
|
# This is NOT a normal configure script.
|
|
./configure "${myconf[@]}" || die "configure failed!"
|
|
}
|
|
|
|
moveconf() {
|
|
local i
|
|
for i in $@; do
|
|
mv "${ED}/${dcc_homedir}/${i}" "${ED}"/etc/dcc || die
|
|
dosym ../../etc/dcc/"${i}" "${dcc_homedir}/${i}"
|
|
done
|
|
}
|
|
|
|
src_install() {
|
|
# stolen from the RPM .spec and modified for gentoo
|
|
export MANOWN=root
|
|
export MANGRP=$(id -g -n root)
|
|
export BINOWN="${MANOWN}"
|
|
export BINGRP="${MANGRP}"
|
|
export DCC_PROTO_HOMEDIR="${ED}/${dcc_homedir}"
|
|
export DCC_CGIBINDIR="${ED}/${dcc_cgibin}"
|
|
export DCC_SUID="${BINOWN}"
|
|
export DCC_OWN="${BINOWN}"
|
|
export DCC_GRP="${BINGRP}"
|
|
|
|
dodir /etc/cron.daily "${dcc_homedir}" /usr/bin /usr/sbin /usr/share/man/man{0,8} /etc/dcc
|
|
if use cgi ; then
|
|
dodir "${dcc_cgibin}"
|
|
fi
|
|
keepdir /var/log/dcc
|
|
|
|
emake install
|
|
|
|
# branding and setting reasonable defaults
|
|
sed -e "s/BRAND=\$/BRAND='Gentoo ${PF}'/;" \
|
|
-e "s/GREY_ENABLE=\$/GREY_ENABLE=off/;" \
|
|
-e "s/DCCM_LOG_AT=5\$/DCCM_LOG_AT=50/;" \
|
|
-e "s,DCCM_LOGDIR=\"log\"\$,DCCM_LOGDIR=\"/var/log/dcc\",;" \
|
|
-e "s/DCCM_ARGS=\$/DCCM_ARGS='-SHELO -Smail_host -SSender -SList-ID'/;" \
|
|
-e "s/DCCIFD_ARGS=\$/DCCIFD_ARGS=\"\$DCCM_ARGS\"/;" \
|
|
-e 's/DCCIFD_ENABLE=off/DCCIFD_ENABLE=on/' \
|
|
-e 's/DBCLEAN_LOGDAYS=14/DBCLEAN_LOGDAYS=1/' \
|
|
-i "${ED}/${dcc_homedir}/dcc_conf" || die
|
|
|
|
if use milter ; then
|
|
# enable milter
|
|
sed -i -e "s:^[\t #]*\(DCCM_ENABLE[\t ]*=[\t ]*\).*:\1on:g" \
|
|
"${ED}/${dcc_homedir}"/dcc_conf || die
|
|
fi
|
|
|
|
# provide cronjob
|
|
mv "${ED}"/usr/sbin/cron-dccd "${ED}"/etc/cron.daily/dccd || die "mv failed"
|
|
|
|
# clean up
|
|
mv "${ED}"/usr/sbin/logger "${ED}"/usr/sbin/logger-dcc || die "mv failed"
|
|
|
|
if ! use rrdtool; then
|
|
# remove rrdtool interface scripts
|
|
rm "${ED}"/usr/sbin/dcc-stats-{collect,graph,init} || die "Failed to clean up rrdtool scripts"
|
|
fi
|
|
|
|
# clean up
|
|
rm "${ED}"/usr/sbin/{rcDCC,updatedcc} || die
|
|
|
|
# place configuration files into /etc instead of /var/dcc
|
|
moveconf dcc_conf flod grey_flod grey_whitelist ids map map.txt whiteclnt whitecommon whitelist
|
|
|
|
newinitd "${FILESDIR}"/dcc.initd-1.3.154 dcc
|
|
newconfd "${FILESDIR}"/dcc.confd dcc
|
|
|
|
rmdir "${ED}"/var/dcc/log/ || die
|
|
|
|
dodoc CHANGES RESTRICTIONS
|
|
doman *.{0,8}
|
|
}
|