# Maintainer: David Runge <dvzrv@archlinux.org>
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>

pkgbase=wireplumber
pkgname=(wireplumber wireplumber-docs)
pkgver=0.4.7
# SteamOS: see the backports section
pkgrel=1.2
pkgdesc="Session / policy manager implementation for PipeWire"
url="https://pipewire.pages.freedesktop.org/wireplumber/"
license=(MIT)
arch=(x86_64)
makedepends=(git meson doxygen graphviz 'pipewire>=0.3.43' systemd glib2 lua
             gobject-introspection python-sphinx python-sphinx_rtd_theme
             python-breathe python-lxml)
_commit=afb177b5e0840d54dc41d02920702c3c9580ce02  # tags/0.4.7
source=("$pkgbase::git+https://gitlab.freedesktop.org/pipewire/wireplumber.git#commit=$_commit")
sha256sums=('SKIP')

_backports=(
        # https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/295
        '211f1e6b6cd4898121e4c2b821fae4dea6cc3317'
        # https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/300
        '95e7c4abe801e922a7fbd5c9e6e9557035fd8f0a'
        '0272e11c53a33226a5d80c68d00d6336fd5f0af7'
        # https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/304
        '10531e95b5029541e91c1f1fc68f999419643d4a'
        # https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/307
        '2ba94f632b54df997ac856d2c82a8a4073dbc316'
        '384c5775f8dfdc809132821a4177add45d168c8c'
)

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

prepare() {
  cd "${srcdir}/wireplumber"

  echo "Apply backports..."
  local _c
  for _c in "${_backports[@]}"; do
    git log --oneline -1 "${_c}"
    git cherry-pick -n "${_c}"
  done
}

build() {
  local meson_options=(
    -D system-lua=true
    -D elogind=disabled
  )

  arch-meson $pkgbase build "${meson_options[@]}"
  meson compile -C build
}

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

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_wireplumber() {
  depends=('pipewire>=0.3.43' lua libpipewire-0.3.so libsystemd.so
           libg{lib,module,object,io}-2.0.so)
  optdepends=('wireplumber-docs: Documentation')
  provides=(pipewire-session-manager libwireplumber-0.4.so)
  conflicts=(pipewire-media-session)
  install=wireplumber.install

  meson install -C build --destdir "$pkgdir"

  _pick docs "$pkgdir"/usr/share/doc

  install -Dt "$pkgdir/usr/share/doc/$pkgname" -m644 $pkgbase/{NEWS,README}*
  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgbase/LICENSE
}

package_wireplumber-docs() {
  pkgdesc+=" - documentation"

  mv docs/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgbase/LICENSE
}

# vim:set sw=2 et:
