123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- # Copyright 1999-2017 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- EAPI=5
- inherit depend.apache eutils user systemd
- MY_P="BackupPC-${PV}"
- DESCRIPTION="High-performance backups to a server's disk"
- HOMEPAGE="http://backuppc.sourceforge.net/"
- SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
- LICENSE="GPL-2"
- KEYWORDS="amd64 x86"
- IUSE="rss samba"
- # The CGI modules are handled in $RDEPEND.
- APACHE_MODULES="apache2_modules_alias," # RedirectMatch
- APACHE_MODULES+="apache2_modules_authn_core," # AuthType
- APACHE_MODULES+="apache2_modules_authz_core," # Require
- APACHE_MODULES+="apache2_modules_authz_host," # Require host
- APACHE_MODULES+="apache2_modules_authz_user" # Require valid-user
- DEPEND="dev-lang/perl
- app-admin/apache-tools
- app-admin/makepasswd"
- # Older versions of mod_perl think they're compatibile with apache-2.4,
- # so we require the new one explicitly.
- RDEPEND="${DEPEND}
- virtual/perl-IO-Compress
- dev-perl/Archive-Zip
- dev-perl/CGI
- dev-perl/libwww-perl
- app-arch/tar
- app-arch/par2cmdline
- app-arch/gzip
- app-arch/bzip2
- virtual/mta
- >=www-apache/mod_perl-2.0.9
- www-apache/mpm_itk
- || ( >=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_cgi]
- >=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_cgid]
- >=www-servers/apache-2.4[${APACHE_MODULES},apache2_modules_fcgid] )
- net-misc/rsync
- dev-perl/File-RsyncP
- rss? ( dev-perl/XML-RSS )
- samba? ( net-fs/samba )"
- need_apache2_4
- SLOT="0"
- S="${WORKDIR}/${MY_P}"
- CGIDIR="/usr/lib/backuppc/htdocs"
- CONFDIR="/etc/BackupPC"
- DATADIR="/var/lib/backuppc"
- DOCDIR="/usr/share/doc/${PF}"
- LOGDIR="/var/log/BackupPC"
- pkg_setup() {
- enewgroup backuppc
- enewuser backuppc -1 /bin/bash /var/lib/backuppc backuppc
- }
- src_prepare() {
- epatch "${FILESDIR}/3.3.0/01-fix-configure.pl.patch"
- epatch "${FILESDIR}/3.3.0/02-fix-config.pl-formatting.patch"
- epatch "${FILESDIR}/3.3.0/03-reasonable-config.pl-defaults.patch"
- epatch "${FILESDIR}/3.2.0/04-add-docdir-marker.patch"
- epatch "${FILESDIR}/3.2.0/05-nicelevel.patch"
- epatch "${FILESDIR}"/${P}-perl522.patch #580254
- # Fix docs location using the marker that we've patched in.
- sed -i "s+__DOCDIR__+${DOCDIR}+" "lib/BackupPC/CGI/View.pm" \
- || die "failed to sed the documentation location"
- }
- src_install() {
- local myconf
- myconf=""
- if use samba ; then
- myconf="--bin-path smbclient=$(type -p smbclient)"
- myconf="${myconf} --bin-path nmblookup=$(type -p nmblookup)"
- fi
- /usr/bin/env perl ./configure.pl \
- --batch \
- --bin-path perl=$(type -p perl) \
- --bin-path tar=$(type -p tar) \
- --bin-path rsync=$(type -p rsync) \
- --bin-path ping=$(type -p ping) \
- --bin-path df=$(type -p df) \
- --bin-path ssh=$(type -p ssh) \
- --bin-path sendmail=$(type -p sendmail) \
- --bin-path hostname=$(type -p hostname) \
- --bin-path gzip=$(type -p gzip) \
- --bin-path bzip2=$(type -p bzip2) \
- --config-dir "${CONFDIR}" \
- --install-dir /usr \
- --data-dir "${DATADIR}" \
- --hostname 127.0.0.1 \
- --uid-ignore \
- --dest-dir "${D%/}" \
- --html-dir "${CGIDIR}"/image \
- --html-dir-url /image \
- --cgi-dir "${CGIDIR}" \
- --fhs \
- ${myconf} || die "failed the configure.pl script"
- ebegin "Installing documentation"
- pod2man \
- -errors=none \
- --section=8 \
- --center="BackupPC manual" \
- "${S}"/doc/BackupPC.pod backuppc.8 \
- || die "failed to generate man page"
- doman backuppc.8
- # Place the documentation in the correct location
- dodoc "${D}/usr/doc/BackupPC.html"
- dodoc "${D}/usr/doc/BackupPC.pod"
- rm -rf "${D}/usr/doc" || die
- eend 0
- # Setup directories
- dodir "${CONFDIR}/pc"
- keepdir "${CONFDIR}"
- keepdir "${CONFDIR}/pc"
- keepdir "${DATADIR}"/{trash,pool,pc,cpool}
- keepdir "${LOGDIR}"
- ebegin "Setting up init.d/conf.d/systemd scripts"
- newinitd "${S}"/init.d/gentoo-backuppc backuppc
- newconfd "${S}"/init.d/gentoo-backuppc.conf backuppc
- systemd_dounit "${FILESDIR}/${PN}.service"
- insinto "${APACHE_MODULES_CONFDIR}"
- doins "${FILESDIR}"/99_backuppc.conf
- # Make sure that the ownership is correct
- chown -R backuppc:backuppc "${D}${CONFDIR}" || die
- chown -R backuppc:backuppc "${D}${DATADIR}" || die
- chown -R backuppc:backuppc "${D}${LOGDIR}" || die
- }
- pkg_postinst() {
- elog "Installation finished, you may now start using BackupPC."
- elog
- elog "- Read the documentation in /usr/share/doc/${PF}/BackupPC.html"
- elog " Please pay special attention to the security section."
- elog
- elog "- You can launch backuppc by running:"
- elog
- elog " # /etc/init.d/backuppc start"
- elog
- elog "- To enable the GUI, first edit ${ROOT}etc/conf.d/apache2 and add,"
- elog
- elog " \"-D BACKUPPC -D PERL -D MPM_ITK\""
- elog
- elog " to the APACHE2_OPTS line."
- elog
- elog " Then you must edit ${ROOT}etc/apache2/modules.d/00_mpm_itk.conf"
- elog " and adjust the values of LimitUIDRange/LimitGIDRange to include"
- elog " the UID and GID of the backuppc user."
- elog
- elog " Finally, start apache:"
- elog
- elog " # /etc/init.d/apache2 start"
- elog
- elog " The web interface should now be running on,"
- elog
- elog " http://127.0.0.1:8080/"
- elog
- # Generate a new password if there's no auth file
- if [[ ! -f "${CONFDIR}/users.htpasswd" ]]; then
- adminuser="backuppc"
- adminpass=$( makepasswd --chars=12 )
- htpasswd -bc "${CONFDIR}/users.htpasswd" $adminuser $adminpass
- elog ""
- elog "- Created admin user $adminuser with password $adminpass"
- elog " To add new users, run: "
- elog ""
- elog " # htpasswd ${CONFDIR}/users.htpasswd newUser"
- fi
- }
|