View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
WEBAPP_MANUAL_SLOT="yes"
inherit systemd webapp
MY_PN="BackupPC"
MY_P="${MY_PN}-${PV}"
DESCRIPTION="High-performance backups to a server's disk"
HOMEPAGE="https://backuppc.github.io/backuppc/"
SRC_URI="https://github.com/${PN}/${PN}/releases/download/${PV}/${MY_P}.tar.gz"
S=${WORKDIR}/${MY_P}
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="rrdtool rss samba systemd"
DEPEND=">=dev-perl/BackupPC-XS-0.62
dev-lang/perl
dev-perl/Archive-Zip
dev-perl/CGI
dev-perl/File-Listing
dev-perl/File-RsyncP
dev-perl/Time-ParseDate"
RDEPEND="${DEPEND}
>=net-misc/rsync-bpc-3.1.2.2
rrdtool? ( net-analyzer/rrdtool[graph] )
rss? ( dev-perl/XML-RSS )
samba? ( net-fs/samba )
acct-group/backuppc
acct-user/backuppc
app-arch/par2cmdline
net-misc/rsync
virtual/httpd-cgi
virtual/mta"
set_config_option() {
# Examples of things this needs to edit:
# $Conf{HardLinkMax} = 31999;
# $Conf{PerlModuleLoad} = undef;
# $Conf{ServerInitdPath} = '';
sed -r -e "s:^(\\\$Conf\{$1\}\s+=\s)(.*)(;.*)$:\1'$2'\3:" \
-i conf/config.pl
}
pkg_setup() {
webapp_pkg_setup
# Avoid double slashes
CGIDIR=${MY_CGIBINDIR/\/\///}
IMAGEDIR="${MY_HTDOCSDIR/\/\///}"
CONFDIR="/etc/${PN}"
LOGDIR="/var/log/${PN}"
RUNDIR="/run/${PN}"
TOPDIR="/var/lib/${PN}"
INSTALLDIR="/usr"
IMAGEDIRURL="/${PN}"
}
src_prepare() {
default
find . -type f -exec sed -i "s:__CGIDIR__:${CGIDIR}:g" {} \;
find . -type f -exec sed -i "s:__CONFDIR__:${CONFDIR}:g" {} \;
find . -type f -exec sed -i "s:__IMAGEDIR__:${IMAGEDIR}:g" {} \;
find . -type f -exec sed -i "s:__IMAGEDIRURL__:${IMAGEDIRURL}:g" {} \;
find . -type f -exec sed -i "s:__INSTALLDIR__:${INSTALLDIR}:g" {} \;
find . -type f -exec sed -i "s:__LOGDIR__:${LOGDIR}:g" {} \;
find . -type f -exec sed -i "s:__RUNDIR__:${RUNDIR}:g" {} \;
find . -type f -exec sed -i "s:__TOPDIR__:${TOPDIR}:g" {} \;
find . -type f -exec sed -i "s:__BACKUPPCUSER__:backuppc:g" {} \;
sed "s:my \$useFHS = 0;:my \$useFHS = 1;:" -i lib/BackupPC/Lib.pm
sed "s:/share/doc/BackupPC/BackupPC.html:/share/doc/${PF}/BackupPC.html:" \
-i lib/BackupPC/CGI/View.pm
set_config_option BackupPCUser backuppc
set_config_option TopDir "${TOPDIR}"
set_config_option ConfDir "${CONFDIR}"
set_config_option LogDir "${LOGDIR}"
set_config_option RunDir "${RUNDIR}"
set_config_option InstallDir "${INSTALLDIR}"
set_config_option CgiDir "${CGIDIR}"
set_config_option CgiImageDirURL "${IMAGEDIRURL}"
set_config_option RsyncBackupPCPath /usr/bin/rsync_bpc
set_config_option TarClientPath /bin/tar
set_config_option RsyncClientPath /usr/bin/rsync
set_config_option PingPath /bin/ping
set_config_option Ping6Path /bin/ping6
set_config_option DfPath /bin/df
set_config_option SshPath /usr/bin/ssh
set_config_option SendmailPath /usr/sbin/sendmail
set_config_option SplitPath /usr/bin/split
set_config_option ParPath /usr/bin/par2
set_config_option CatPath /bin/cat
set_config_option GzipPath /bin/gzip
set_config_option Bzip2Path /bin/bzip2
if use samba; then
set_config_option SmbClientPath /usr/bin/smbclient
set_config_option NmbLookupPath /usr/bin/nmblookup
fi
use rrdtool && set_config_option RrdToolPath /usr/bin/rrdtool
}
src_compile() {
pod2man doc/BackupPC.pod backuppc.8
}
src_install() {
webapp_src_preinst
insinto "${CONFDIR}"
doins conf/config.pl conf/hosts
dobin bin/*
insinto /usr/lib/
doins -r lib/*
dodoc doc/BackupPC.html ChangeLog README.md
doman backuppc.8
exeinto "${CGIDIR}"
doexe cgi-bin/BackupPC_Admin
insinto "${IMAGEDIR}"
doins images/* conf/*.js conf/*.css
keepdir "${LOGDIR}" "${TOPDIR}"/{pool,pc,cpool}
newinitd "${FILESDIR}"/backuppc.initd backuppc
newconfd "${FILESDIR}"/backuppc.confd backuppc
systemd_dounit systemd/src/backuppc.service
webapp_src_install
fowners -R backuppc:backuppc "${CONFDIR}" "${LOGDIR}" "${TOPDIR}"
}
pkg_postinst() {
elog "BackupPC has been installed, but a few more things are required"
elog "to start using it"
elog
elog "- Read the documentation in /usr/share/doc/${PF}/BackupPC.html."
elog " Please pay special attention to the security section."
elog
elog "- Check the config in ${CONFDIR}/config.pl and make sure to set"
elog " CgiAdminUsers and/or CgiAdminUserGroup."
elog
elog "- BackupPC consists of a daemon and a CGI web GUI."
elog
elog "- You can launch BackupPC daemon by running:"
elog
elog " # /etc/init.d/backuppc start"
elog
elog "- The init script uses settings from ${CONFDIR}/config.pl."
elog
elog "- To enable the web GUI:"
elog " - Install web parts of BackupPC using webapp-config."
elog " - Set up a web server of your choise to run BackupPC_Admin"
elog " via CGI."
elog " - Set up a web server to serve static assets. BackupPC expects"
elog " static assets on ${IMAGEDIRURL} path."
elog " - Set up a web server to set REMOTE_USER and SCRIPT_NAME CGI"
elog " environment variables, BackupPC needs both to work."
webapp_pkg_postinst
}