# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>

pkgbase=gvfs
pkgname=(gvfs gvfs-{smb,afc,gphoto2,goa,mtp,nfs,google})
pkgver=1.48.1
pkgrel=1
pkgdesc="Virtual filesystem implementation for GIO"
url="https://wiki.gnome.org/Projects/gvfs"
arch=(x86_64)
license=(LGPL)
depends=(avahi dconf fuse3 libarchive libcdio-paranoia libsoup udisks2 libsecret
         libbluray libgudev gcr psmisc 'gsettings-desktop-schemas>=3.34.0')
makedepends=(dbus libgphoto2 libimobiledevice smbclient docbook-xsl gtk3 libmtp
             gnome-online-accounts libnfs libgdata git gtk-doc python meson
             openssh)
groups=(gnome)
_commit=a971ec4b5c1ff016e7273f2d390248f8c2d65106  # tags/1.48.1^0
source=("git+https://gitlab.gnome.org/GNOME/gvfs.git#commit=$_commit"
        gvfsd.hook)
sha256sums=('SKIP'
            'd3b714db35b2ce75d7f6d528044554decbb9149a98425aff119a071ca0a25282')

prepare() {
  cd $pkgbase
}

pkgver() {
  cd $pkgbase
  git describe --tags | sed 's/-/+/g'
}

build() {
  arch-meson $pkgbase build -D man=true
  meson compile -C build
}

check() {
  meson test -C build --print-errorlogs
}

_split() {
  local name="$1" src dest; shift
  for src; do
    echo "$name: /usr/$src"
    dest="$srcdir/$name/$src"
    mkdir -p "${dest%/*}"
    mv -T "$src" "$dest"
    rmdir -p --ignore-fail-on-non-empty "${src%/*}"
  done
}

package_gvfs() {
  replaces=(gvfs-{obexftp,afp})
  optdepends=('gvfs-afc: AFC (mobile devices) support'
              'gvfs-smb: SMB/CIFS (Windows client) support'
              'gvfs-gphoto2: gphoto2 (PTP camera/MTP media player) support'
              'gvfs-mtp: MTP device support'
              'gvfs-goa: gnome-online-accounts (e.g. OwnCloud) support'
              'gvfs-nfs: NFS support'
              'gvfs-google: Google Drive support'
              'gtk3: Recent files support')
  options=(!emptydirs)

  DESTDIR="$pkgdir" meson install -C build

  install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 *.hook
  install -d -o root -g 102 -m 750 "$pkgdir/usr/share/polkit-1/rules.d"

  cd "$pkgdir/usr"

  _split smb \
    lib/gvfsd-smb{,-browse} \
    share/GConf/gsettings/gvfs-smb.convert \
    share/glib-2.0/schemas/org.gnome.system.smb.gschema.xml \
    share/gvfs/mounts/smb{,-browse}.mount

  _split afc \
    lib/gvfs{-afc-volume-monitor,d-afc} \
    lib/systemd/user/gvfs-afc-volume-monitor.service \
    share/dbus-1/services/org.gtk.vfs.AfcVolumeMonitor.service \
    share/gvfs/mounts/afc.mount \
    share/gvfs/remote-volume-monitors/afc.monitor

  _split gphoto2 \
    lib/gvfs{-gphoto2-volume-monitor,d-gphoto2} \
    lib/systemd/user/gvfs-gphoto2-volume-monitor.service \
    share/dbus-1/services/org.gtk.vfs.GPhoto2VolumeMonitor.service \
    share/gvfs/mounts/gphoto2.mount \
    share/gvfs/remote-volume-monitors/gphoto2.monitor

  _split mtp \
    lib/gvfs{-mtp-volume-monitor,d-mtp} \
    lib/systemd/user/gvfs-mtp-volume-monitor.service \
    share/dbus-1/services/org.gtk.vfs.MTPVolumeMonitor.service \
    share/gvfs/mounts/mtp.mount \
    share/gvfs/remote-volume-monitors/mtp.monitor

  _split goa \
    lib/gvfs-goa-volume-monitor \
    lib/systemd/user/gvfs-goa-volume-monitor.service \
    share/dbus-1/services/org.gtk.vfs.GoaVolumeMonitor.service \
    share/gvfs/remote-volume-monitors/goa.monitor

  _split nfs \
    lib/gvfsd-nfs \
    share/gvfs/mounts/nfs.mount

  _split google \
    lib/gvfsd-google \
    share/gvfs/mounts/google.mount
}

package_gvfs-smb() {
  pkgdesc+=" (SMB/CIFS backend; Windows client)"
  depends=("gvfs=$pkgver" 'smbclient>=4.12.0')

  mv "$srcdir/smb" "$pkgdir/usr"
}

package_gvfs-afc() {
  pkgdesc+=" (AFC backend; Apple mobile devices)"
  depends=("gvfs=$pkgver" libimobiledevice usbmuxd)

  mv "$srcdir/afc" "$pkgdir/usr"
}

package_gvfs-gphoto2() {
  pkgdesc+=" (gphoto2 backend; PTP camera, MTP media player)"
  depends=("gvfs=$pkgver" libgphoto2)

  mv "$srcdir/gphoto2" "$pkgdir/usr"
}

package_gvfs-mtp() {
  pkgdesc+=" (MTP backend; Android, media player)"
  depends=("gvfs=$pkgver" libmtp)

  mv "$srcdir/mtp" "$pkgdir/usr"
}

package_gvfs-goa() {
  pkgdesc+=" (Gnome Online Accounts backend; cloud storage)"
  depends=("gvfs=$pkgver" gnome-online-accounts)

  mv "$srcdir/goa" "$pkgdir/usr"
}

package_gvfs-nfs() {
  pkgdesc+=" (NFS backend)"
  depends=("gvfs=$pkgver" libnfs)
  install=gvfs-nfs.install

  mv "$srcdir/nfs" "$pkgdir/usr"
}

package_gvfs-google() {
  pkgdesc+=" (Google Drive backend)"
  depends=("gvfs-goa=$pkgver" libgdata)

  mv "$srcdir/google" "$pkgdir/usr"
}

# vim:set sw=2 et:
