# Maintainer: Sébastien Luttringer

pkgname=backuppc
pkgver=4.4.0
_xsver=0.62
_rbpcver=3.1.3.0
pkgrel=9
pkgdesc='Enterprise-grade system for backing up Linux, Windows and MacOS PCs'
url='https://github.com/backuppc/'
license=('GPL2')
arch=('x86_64')
makedepends=('git')
depends=('glibc' 'popt' 'perl' 'par2cmdline' 'perl-archive-zip' 'perl-io-dirent'
         'perl-file-listing' 'perl-time-modules' 'perl-cgi' 'perl-xml-rss'
         'perl-json-xs' 'smtp-forwarder')
optdepends=('openssh: ssh transfert support'
            'rsync: rsync transfert support'
            'smbclient: smb/cifs transfert support'
            'rrdtool: graphs of the pool usage ')
source=("https://github.com/backuppc/backuppc/releases/download/$pkgver/BackupPC-$pkgver.tar.gz"
        "https://github.com/backuppc/backuppc-xs/releases/download/${_xsver}/BackupPC-XS-${_xsver}.tar.gz"
        "https://github.com/backuppc/rsync-bpc/releases/download/${_rbpcver}/rsync-bpc-${_rbpcver}.tar.gz"
        "$pkgname.service"
        "$pkgname.sysusers"
        "$pkgname.tmpfiles"
        "$pkgname.profile.sh"
        "$pkgname.profile.csh"
        "$pkgname.httpd"
        'https://github.com/backuppc/backuppc/commit/2c9270b9b849b2c86ae6301dd722c97757bc9256.patch')
install=$pkgname.install
backup=("etc/$pkgname/config.pl"
        "etc/$pkgname/hosts"
        "etc/httpd/conf/extra/$pkgname.conf"
        "etc/$pkgname/$pkgname.users")
sha256sums=('8bc04cd513d47629508bd2fd6f455ced38316974913638e971f44e37786c6365'
            '94d863083a466558f82f10b1b95db7742ea99ebce808214f20897b343dc32b18'
            '3eeb137319b608512b2d23c54ea8b52b511db806ffbd5fa730a394431d556f3f'
            '70b414d681b47b8b41a228d8155761eac5f67b63bcdc6e0e4da7a0d27f3b6810'
            '82598186b24b28d7e76c174ac90b046831954d3ebfe22219fa67a9011e306f3f'
            'ef5c4fde24e14ab5828fed085a7dd8fd699dfdbbd875bc6c29b41ec2b0ae645b'
            'daa9690efe856b01dc749be0dcc8f3daebf7c1c62500df2431eeb2762b446284'
            '2c96d3be7ce0f681ea4b34abab93154b086132166658a747a7a8ed8c7ed2757e'
            '97dbe6a0c8302d0e6ff6f97e77ca9fb4187272abb43dd01fff431170b6d39e6e'
            'b4547f90f903d067fd09c4f2c168e204d818b69543defa8cad5dbdd2dfc258eb')

prepare() {
  cd BackupPC-$pkgver
  # apply patch from the source array (should be a pacman feature)
  local filename
  for filename in "${source[@]}"; do
    if [[ "$filename" =~ \.patch$ ]]; then
      echo "Applying patch ${filename##*/}"
      patch -p1 -N -i "$srcdir/${filename##*/}"
    fi
  done
  :
}

build() {
  echo 'rsync-bpc'
  cd "$srcdir"/rsync-bpc-$_rbpcver
  CFLAGS+=" -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -std=gnu17" \
  ./configure --prefix=/usr/share/backuppc
  make
}

package() {
  echo 'rsync-bpc'
  cd "$srcdir"/rsync-bpc-$_rbpcver
  make install DESTDIR="$pkgdir"

  echo 'backuppc-xs'
  cd "$srcdir"/BackupPC-XS-$_xsver
  perl Makefile.PL INSTALLDIRS=vendor
  make -j1 # parallel build fail
  make install DESTDIR="$pkgdir"

  echo 'backuppc'
  cd "$srcdir"/BackupPC-$pkgver
  export PERLLIB=$(echo "$pkgdir"/usr/lib/perl5/*/vendor_perl/)
  perl configure.pl \
    --batch \
    --no-set-perms \
    --uid-ignore \
    --hostname __HOSTNAME__ \
    --compress-level 5 \
    --backuppc-user=backuppc \
    --dest-dir "$pkgdir" \
    --fhs \
    --install-dir /usr/share/$pkgname \
    --config-dir /etc/$pkgname \
    --cgi-dir /usr/share/$pkgname/cgi-bin \
    --html-dir /usr/share/$pkgname/html \
    --html-dir-url /backuppc \
    --data-dir /var/lib/$pkgname \
    --log-dir /var/log/$pkgname \
    --run-dir /run/$pkgname \
    --bin-path rsync_bpc=/usr/share/backuppc/bin/rsync_bpc \
    --bin-path smbclient=/usr/bin/smbclient \
    --bin-path nmblookup=/usr/bin/nmblookup \
    --bin-path rsync=/usr/bin/rsync \
    --bin-path ssh=/usr/bin/ssh \
    --bin-path sendmail=/usr/bin/sendmail \
    --bin-path ping=/usr/bin/ping \
    --bin-path ping6=/usr/bin/ping \
    --bin-path rrdtool=/usr/bin/rrdtool \
    --
  cd "$srcdir"
  # systemd
  install -D -m 644 $pkgname.service "$pkgdir/usr/lib/systemd/system/$pkgname.service"
  install -D -m 644 $pkgname.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
  install -D -m 644 $pkgname.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
  # install shell profiles
  install -D -m 755 $pkgname.profile.sh "$pkgdir/etc/profile.d/$pkgname.sh"
  install -D -m 755 $pkgname.profile.csh "$pkgdir/etc/profile.d/$pkgname.csh"
  # install apache http
  install -D -m 644 $pkgname.httpd "$pkgdir/etc/httpd/conf/extra/$pkgname.conf"
  install -D -m 640 /dev/null "$pkgdir/etc/$pkgname/$pkgname.users"
  # set correct permissions
  cd "$pkgdir"
  chown 126:126 -R etc/$pkgname
  chown 126:126 -R var/{log,lib}/$pkgname
  chmod 755 etc
  chmod 755 -R var usr/share/$pkgname/{cgi-,}bin
  chmod 750 var/log/$pkgname etc/$pkgname
  chmod 750 -R var/lib/$pkgname
  chmod 640 etc/$pkgname/{config.pl,hosts}
  # no /run
  rm -rv "$pkgdir"/run
  # no core_perl directory
  rm -rv "$pkgdir"/usr/lib/perl5/*/core_perl
}

# vim:set ts=2 sw=2 et:
