# 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, and patches in source
pkgrel=1.6
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"
        # https://gitlab.steamos.cloud/jupiter/tasks/-/issues/421
        'c27db7bbc4c61a7765e0b4ae919a53eda7c1ba5a.patch'
        'a0f1d3c81585a263fa14ba3f3226ce99e3a86bf2.patch'
        # https://gitlab.steamos.cloud/jupiter/tasks/-/issues/430
        '5211a174a2521abaa490c545b6146a9a2d99d523.patch'
        # https://gitlab.steamos.cloud/jupiter/tasks/-/issues/456
        'cd676a10d923dbd56d3c69d3a5a61fe826ec8b35.patch'
        # fix for bluetooth deviced names
        'e7abd16903d974317825c3d0b19841caba2c0c9.patch'
)

sha256sums=('SKIP'
            '67db960e890a32eb4eac7342c9ad980c04f93bae8e71267e445b152d7462279b'
            '3ffee60308d8bc0a7a536340b5836c2907ed063ae8d12530fd7438164bfd9fc1'
            'a462ef81df7e78e77f16169bd7c30771fa2a671681acba34327b3deccdfdd679'
            'a023fad0159bdd870e6e4f50db7589437f47fe9f3cef1cdcc23aad2a987f4989'
            'ebde3e3384e0791d5fe07d3e2560dbb096864508a9ff2050db1981490df5ae9e')

_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

  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    [[ $src = *.patch ]] || continue
    echo "Applying patch $src..."
    patch -Np1 < "../$src"
  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:
