| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI="5" |
| |
| inherit eutils systemd webapp user |
| |
| MY_P="BackupPC-${PV}" |
| |
| DESCRIPTION="A high-performance system for backing up computers 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" |
| |
| DEPEND="dev-lang/perl |
| app-admin/apache-tools |
| app-admin/makepasswd" |
| RDEPEND="${DEPEND} |
| virtual/perl-IO-Compress |
| dev-perl/Archive-Zip |
| dev-perl/libwww-perl |
| >=app-arch/tar-1.13.20 |
| app-arch/par2cmdline |
| app-arch/gzip |
| app-arch/bzip2 |
| virtual/mta |
| www-apache/mod_perl |
| www-servers/apache |
| net-misc/rsync |
| >=dev-perl/File-RsyncP-0.68 |
| rss? ( dev-perl/XML-RSS ) |
| samba? ( net-fs/samba )" |
| |
| WEBAPP_MANUAL_SLOT="yes" |
| SLOT="0" |
| |
| S=${WORKDIR}/${MY_P} |
| |
| CONFDIR="/etc/BackupPC" |
| DATADIR="/var/lib/backuppc" |
| LOGDIR="/var/log/BackupPC" |
| |
| pkg_setup() { |
| webapp_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" |
| |
| # Fix the documentation location in the CGI interface |
| epatch "${FILESDIR}/3.2.0/04-add-docdir-marker.patch" |
| sed -i "s+__DOCDIR__+/usr/share/doc/${PF}+" "lib/BackupPC/CGI/View.pm" |
| |
| epatch "${FILESDIR}/3.2.0/05-nicelevel.patch" |
| sed -i -e 's/--chuid ${USER}//' "${S}"/init.d/src/gentoo-backuppc || die "Failed to fix the init script" |
| } |
| |
| src_test() { |
| true |
| } |
| |
| src_install() { |
| webapp_src_preinst |
| |
| 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 $(hostname) \ |
| --uid-ignore \ |
| --dest-dir "${D%/}" \ |
| --html-dir ${MY_HTDOCSDIR}/image \ |
| --html-dir-url /image \ |
| --cgi-dir ${MY_HTDOCSDIR} \ |
| --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" |
| |
| 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" |
| eend 0 |
| |
| ebegin "Setting up an apache instance for backuppc" |
| |
| cp "${FILESDIR}/apache2-backuppc."{conf,init} "${WORKDIR}/" |
| cp "${FILESDIR}/httpd.conf" "${WORKDIR}/httpd.conf" |
| sed -i -e "s+HTDOCSDIR+${MY_HTDOCSDIR}+g" "${WORKDIR}/httpd.conf" |
| sed -i -e "s+AUTHFILE+${CONFDIR}/users.htpasswd+g" "${WORKDIR}/httpd.conf" |
| |
| moduledir="/usr/lib/apache2/modules" |
| |
| # Check if the Apache ServerRoot is real. |
| # This is sometimes broken on older amd64 systems. |
| # In this case we just patch our config file appropriately. |
| if [[ ! -d "/usr/lib/apache2" ]]; then |
| if [[ -d "/usr/lib64/apache2" ]]; then |
| sed -i -e "s+/usr/lib/apache2+/usr/lib64/apache2+g" "${WORKDIR}/httpd.conf" |
| sed -i -e "s+/usr/lib/apache2+/usr/lib64/apache2+g" "${WORKDIR}/apache2-backuppc.conf" |
| moduledir="/usr/lib64/apache2/modules" |
| fi |
| fi |
| |
| # Check if we're using mod_cgid instead of mod_cgi |
| # This happens if you install apache with USE="threads" |
| if [[ -f "${moduledir}/mod_cgid.so" ]]; then |
| sed -i -e "s+mod_cgi+mod_cgid+g" "${WORKDIR}/httpd.conf" |
| sed -i -e "s+cgi_module+cgid_module+g" "${WORKDIR}/httpd.conf" |
| fi |
| |
| # Install conf.d/init.d files for apache2-backuppc |
| if [ -e /etc/init.d/apache2 ]; then |
| newconfd "${WORKDIR}/apache2-backuppc.conf" apache2-backuppc |
| newinitd /etc/init.d/apache2 apache2-backuppc |
| else |
| newconfd "${WORKDIR}/apache2-backuppc.conf" apache2-backuppc |
| newinitd "${WORKDIR}/apache2-backuppc.init" apache2-backuppc |
| fi |
| |
| insopts -m 0644 |
| insinto ${CONFDIR} |
| doins "${WORKDIR}/httpd.conf" |
| |
| eend $? |
| |
| webapp_src_install || die "webapp_src_install" |
| |
| # Make sure that the ownership is correct |
| chown -R backuppc:backuppc "${D}${CONFDIR}" |
| chown -R backuppc:backuppc "${D}${DATADIR}" |
| chown -R backuppc:backuppc "${D}${LOGDIR}" |
| } |
| |
| pkg_postinst() { |
| # This is disabled since BackupPC doesn't need it |
| # webapp_pkg_postinst |
| |
| elog "Installation finished, now 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 and it's apache web interface by running:" |
| elog " # /etc/init.d/backuppc start" |
| elog " # /etc/init.d/apache2-backuppc start" |
| |
| if [[ ! -e /etc/runlevels/default/backuppc ]]; then |
| elog "" |
| elog "- You also might want to add these scripts to your default runlevel:" |
| elog " # rc-update add backuppc default" |
| elog " # rc-update add apache2-backuppc default" |
| fi |
| |
| # 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 " # htpasswd ${CONFDIR}/users.htpasswd newUser" |
| fi |
| |
| if [[ -d "/etc/backuppc" ]]; then |
| ewarn "" |
| ewarn "Detected old config directory in /etc/backuppc" |
| ewarn "Please migrate relevant config files to ${CONFDIR} before starting backuppc" |
| fi |
| } |