author | Jan Alexander Steffens
<heftig@archlinux.org> 2021-11-11 22:42:04 UTC |
committer | Jan Alexander Steffens
<heftig@archlinux.org> 2021-11-11 22:42:04 UTC |
parent | 484b3aa86a4ad4db07d88b6f57069798c9ac2306 |
PKGBUILD | +57 | -38 |
wireplumber.install | +10 | -11 |
diff --git a/PKGBUILD b/PKGBUILD index 3d9894e..4d80049 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,57 +1,76 @@ # Maintainer: David Runge <dvzrv@archlinux.org> +# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org> pkgbase=wireplumber -pkgname=('wireplumber' 'wireplumber-docs') +pkgname=(wireplumber wireplumber-docs) pkgver=0.4.5 -pkgrel=1 +pkgrel=2 pkgdesc="Session / policy manager implementation for PipeWire" -arch=('x86_64') url="https://gitlab.freedesktop.org/pipewire/wireplumber" -license=('MIT') -makedepends=('cmake' 'cpptoml' 'doxygen' 'glib2' 'gobject-introspection' -'hotdoc' 'lua' 'meson' 'pipewire' 'python-breathe' 'python-sphinx_rtd_theme' -'python-sphinx' 'systemd') -checkdepends=('pipewire-alsa' 'pipewire-jack' 'pipewire-pulse') -source=("$pkgname-$pkgver.tar.gz::https://gitlab.freedesktop.org/pipewire/${pkgname}/-/archive/${pkgver}/${pkgname}-${pkgver}.tar.gz") -sha512sums=('b0d5962e7a83709cc3115fbf0a04b63660085aeea2ebda6d78d692065ccb193cea8b44bb506fa440cf0b88bfae71a4f69a192cd6cba885ebf3c9270bea50c67a') -b2sums=('177984901790228d8ddeb8ee2a548eb53db07c8077734590c3f964df36cfa47a4099e049ae9a19a136f4147c75b7122359a73b8387a641768f71484b9c4ab119') +license=(MIT) +arch=(x86_64) +makedepends=(git meson doxygen graphviz 'pipewire>=0.3.37' systemd glib2 lua + gobject-introspection python-sphinx python-sphinx_rtd_theme + python-breathe python-lxml) +_commit=3946457a7942a179c0f61c60de8cb8fc643391dd # tags/0.4.5 +source=("$pkgbase::git+https://gitlab.freedesktop.org/pipewire/wireplumber.git#commit=$_commit") +sha256sums=('SKIP') + +pkgver() { + cd $pkgbase + git describe --tags | sed 's/-/+/g' +} + +prepare() { + cd $pkgbase +} build() { - cd "$pkgname-$pkgver" - arch-meson \ - -Dsystem-lua=true \ - -Delogind=disabled \ - build - ninja -C build + local meson_options=( + -D system-lua=true + -D elogind=disabled + ) + + arch-meson $pkgbase build "${meson_options[@]}" + meson compile -C build } check() { - cd "$pkgname-$pkgver" - ninja -C build test || echo "Known to fail: https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/18" + 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=('gcc-libs' 'glibc' 'lua' 'libgio-2.0.so' 'libglib-2.0.so' - 'libgmodule-2.0.so' 'libgobject-2.0.so' 'libpipewire-0.3.so') - optdepends=('wireplumber-docs: for documentation') - provides=('libwireplumber-0.4.so' 'pipewire-session-manager') - conflicts=('pipewire-media-session') - install="${pkgname}.install" - - cd "$pkgbase-$pkgver" - DESTDIR="${pkgdir}" meson install -C build - install -vDm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}" - install -vDm 644 {NEWS,README}.rst -t "${pkgdir}/usr/share/doc/${pkgname}" - # remove files provided by wireplumber-docs - rm -frv "${pkgdir}/usr/share/doc/${pkgname}/html" + depends=('pipewire>=0.3.37' 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)" + pkgdesc+=" - documentation" + + mv docs/* "$pkgdir" - cd "$pkgbase-$pkgver" - DESTDIR="${pkgdir}" meson install -C build - install -vDm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}" - # remove files provided by wireplumber - rm -frv "${pkgdir}/usr/"{bin,include,lib,share/{gir*,wireplumber}} "${pkgdir}/etc/" + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 $pkgbase/LICENSE } + +# vim:set sw=2 et: diff --git a/wireplumber.install b/wireplumber.install index 93bc4d5..7da3188 100644 --- a/wireplumber.install +++ b/wireplumber.install @@ -1,21 +1,20 @@ post_install() { - # Enable service by default, as it is aliased for + # Enable service by default, creating an alias from # pipewire-session-manager.service, which is required by pipewire.service systemctl --global enable wireplumber.service } post_upgrade() { + # Reenable the service if needed so the alias gets created. if (( $(vercmp "$2" '0.4.4-2') < 0)); then - printf "\tReenable any per-user enabled wireplumber.service\n \ - \tmanually to establish a new service alias for\n \ - \tpipewire-session-manager.service added with 0.4.4.\n" - # reenable already enabled global pipewire-media-session.service, as an alias is introduced with 0.3.38 - if systemctl --global is-enabled -q wireplumber.service; then - systemctl --global reenable wireplumber.service - fi - # in case the service has not been enabled before, enable it: - # wireplumber and pipewire-media-session conflict from this point on - systemctl --global enable wireplumber.service + # Unlike pipewire-media-session, we introduce the enable of wireplumber + # in the same release as the alias, thus can unconditionally reenable. + systemctl --global reenable wireplumber.service + cat <<MSG +>>> If you enabled wireplumber.service manually for any user, run + "systemctl --user reenable wireplumber.service" for these users + now. This will create a required service alias. +MSG fi }