git » wireplumber.git » main » tree

[main] / PKGBUILD

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

pkgbase=wireplumber
pkgname=(
  wireplumber
  libwireplumber
#  wireplumber-docs
)
pkgver=0.5.2
pkgrel=2
pkgdesc="Session / policy manager implementation for PipeWire"
url="https://pipewire.pages.freedesktop.org/wireplumber/"
arch=(x86_64 'armv7h')
license=(MIT)
makedepends=(
  doxygen
  gcc-libs
  git
  glib2
  glibc
  gobject-introspection
  graphviz
  libpipewire
  lua
  meson
  pipewire
  python-breathe
  python-lxml
#  python-sphinx
#  python-sphinx_rtd_theme
  python-packaging
  systemd
  systemd-libs
)
checkdepends=(pipewire-audio)
source=(
  "git+https://gitlab.freedesktop.org/pipewire/$pkgbase.git#tag=$pkgver"
)
b2sums=('27cd96b6f8d7f3be588074db2e99e1ec253d5fe8f9098b7080699d9bef6beb258bd9a4b12a00ebe637078613c3363496d71f2ef344c91284b8ef5f71e4d24736')

prepare() {
  cd $pkgbase

  # Backport crash fix for aborted links
  # https://gitlab.archlinux.org/archlinux/packaging/packages/wireplumber/-/issues/4
  # https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/644
  git cherry-pick -n 1ddfbc532c87fb0ad18e128d574e5c3b72089416 \
                     89b6766cd6a64c8d52512ae2c091de3f5aae034f \
                     4ed51791e03b63adbaf792564aa201a6d71a1050
}

build() {
  local meson_options=(
    -D elogind=disabled
    -D system-lua=true
    -D doc=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
}

_ver=${pkgver:0:3}

package_wireplumber() {
  depends=(
    "libwireplumber=$pkgver-$pkgrel"
    gcc-libs
    glibc
    libg{lib,object,io}-2.0.so
    libpipewire
    libpipewire-0.3.so
#    libsystemd.so
    lua
    pipewire
    systemd-libs
  )
  optdepends=(
    'wireplumber-docs: Documentation'
  )
  provides=(pipewire-session-manager)
  conflicts=(pipewire-media-session)
  install=wireplumber.install

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

  (
    cd "$pkgdir"

    _pick libw usr/lib/libwireplumber-$_ver.so*
    _pick libw usr/lib/girepository-1.0
    _pick libw usr/lib/pkgconfig
    _pick libw usr/include
    _pick libw usr/share/gir-1.0

 #   _pick docs 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_libwireplumber() {
  pkgdesc+=" - client library"
  depends=(
    gcc-libs
    glibc
    libg{lib,module,object,io}-2.0.so
    libpipewire-0.3.so
  )
  provides=(libwireplumber-$_ver.so)

  mv libw/* "$pkgdir"

  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 sts=-1 et: