# Maintainer: Christian Hesse <mail@eworm.de>
# Maintainer: T.J. Townsend <blakkheim@archlinux.org>

pkgname=rsync
pkgver=3.4.1
pkgrel=2.2
pkgdesc='A fast and versatile file copying tool for remote and local files'
arch=('x86_64' 'aarch64')
url='https://rsync.samba.org/'
license=('GPL-3.0-or-later')
depends=('acl' 'libacl.so' 'lz4' 'openssl' 'popt' 'xxhash' 'libxxhash.so'
         'zlib' 'zstd')
optdepends=('python: for rrsync')
makedepends=('git' 'python-commonmark')
backup=('etc/rsyncd.conf')
validpgpkeys=('0048C8B026D4C96F0E589C2F6C859FB14B96A8C5'  # Wayne Davison <wayned@users.sourceforge.net>
              '9FEF112DCE19A0DC7E882CB81BB24997A8535F6F') # Andrew Tridgell <andrew@tridgell.net
source=("git+https://github.com/RsyncProject/rsync.git#tag=v${pkgver}?signed"
        '0001-bool-is-a-keyword-in-C23.patch'
        'rsyncd.conf')
sha256sums=('97ac2998444ad0611ea47103e294682fc39c7518a33af3ef3e44fdb1ed282021'
            '64c5cb74d5aa802c366d3f85db87e2fde0e3744a780f038eae25d05428d5f53a'
            '733ccb571721433c3a6262c58b658253ca6553bec79c2bdd0011810bb4f2156b')

_backports=(
)

_reverts=(
)

prepare() {
  cd ${pkgname}

  local _c
  for _c in "${_backports[@]}"; do
    if [[ $_c == *..* ]]; then
      git log --oneline --reverse "${_c}"
    else
      git log --oneline -1 "${_c}"
    fi
    git cherry-pick -n -m1 "${_c}"
  done
  for _c in "${_reverts[@]}"; do
    git log --oneline -1 "${_c}"
    git revert -n "${_c}"
  done

  # bool is a keyword in C23
  # https://github.com/RsyncProject/rsync/pull/716
  patch -Np1 < ../0001-bool-is-a-keyword-in-C23.patch
}

build() {
  cd ${pkgname}

  ./configure \
    --prefix=/usr \
    --enable-ipv6 \
    --disable-debug \
    --with-rrsync \
    --with-included-popt=no \
    --with-included-zlib=no
  make
}

check() {
  cd ${pkgname}

  # check for IPv6 support
  # https://gitlab.archlinux.org/archlinux/packaging/packages/rsync/-/commit/8936e33b245da170e7b5488b4ca35727ac9c4b68
  if rsync -V | grep -q 'no IPv6'; then
    echo 'Built without IPv6 support!' >&2
    exit 1
  fi

  make test
}

package() {
  cd ${pkgname}

  make DESTDIR="$pkgdir" install
  # install support scripts to doc
  for i in support/*; do
    install -Dm0644 "$i" "$pkgdir/usr/share/doc/rsync/$i"
  done
  install -Dm0644 "tech_report.tex" "$pkgdir/usr/share/doc/rsync/tech_report.tex"
  install -Dm0644 ../rsyncd.conf "$pkgdir/etc/rsyncd.conf"
  install -Dm0644 packaging/systemd/rsync.service "$pkgdir/usr/lib/systemd/system/rsyncd.service"
  install -Dm0644 packaging/systemd/rsync.socket "$pkgdir/usr/lib/systemd/system/rsyncd.socket"
  install -Dm0644 packaging/systemd/rsync@.service "$pkgdir/usr/lib/systemd/system/rsyncd@.service"
}
