Skip to main content
Topic: Dependence of pipewire from wireplumber wrong (Read 1219 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Dependence of pipewire from wireplumber wrong

Hi,
I'm using pipewire with pipewire-media-session.
pacman wants to force a change to wireplumber on me :(
Code: [Select]
resolving dependencies...
looking for conflicting packages...
:: wireplumber and pipewire-media-session are in conflict. Remove pipewire-media-session? [y/N]
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
:: wireplumber and pipewire-media-session are in conflict

Sight.
/etc/pacman.conf
Code: [Select]
 IgnorePkg   = pipewire-alsa alsa-card-profiles pipewire pipewire-pulse

Now:
Code: [Select]
:: Starting full system upgrade...
warning: alsa-card-profiles: ignoring package upgrade (1:0.3.53-1 => 1:0.3.53-2)
warning: pipewire: ignoring package upgrade (1:0.3.53-1 => 1:0.3.53-2)
warning: pipewire-alsa: ignoring package upgrade (1:0.3.53-1 => 1:0.3.53-2)
warning: pipewire-pulse: ignoring package upgrade (1:0.3.53-1 => 1:0.3.53-2)
resolving dependencies...
looking for conflicting packages...

Re: Dependence of pipewire from wireplumber wrong

Reply #1
>>pacman wants to force a change to wireplumber on me :(

Ok, how is this a bad change?

Both packages seem to be session managers for pipewire, with wireplumber also being a policy manager.

Re: Dependence of pipewire from wireplumber wrong

Reply #2
Hi,

> Ok, how is this a bad change?

I forgot where I started 'pipewire-media-session'  :o

Code: [Select]
find /usr /etc ~ -type f -print0 | xargs -0 /usr/bin/file | grep -se 'ASCII text' | cut -d':' -f1 | xargs grep -sle 'pipewire-media-session'

This showed me where it is.
wireplumber works, so far.

Re: Dependence of pipewire from wireplumber wrong

Reply #3

It's bad for me as I find wireplumber does not work as well as pipewire-media-session.
I've retested wireplumber many times, most recently only a week or so ago, and each time there are issues I simply don't have with pipewire-media-session. I mentioned elsewhere on the forum that on the most recent switch to wireplumber Kmix would revert to using my (unused for audio) GPU as the master channel every time I started X and also that the 'playback streams' in kmix had sliders for whatever audio was playing but they were non functional. I spent zero time troubleshooting this. Just went back to pipewire-media-session.

I was having stability issues with pipewire but I'd been holding back my kernel to the very last 5.17 release for a reason, but as soon as I didn't need to do that and updated to the current kernel the stability issues went away.

What's interesting to me is that wireplumber started force replacing pipewire-media-session back in May but then the change was quickly reverted.
Yet looking at the wireplumber package no further changes are showing here atm. So I'm not sure yet where this latest forced replace is coming from but I'm going to try and find out.

The forced replace is also unnecessary imho as the two packages have no conflicting files. Both could be installed and you could then just choose which one to run.

Edit: Ok the forced wireplumber comes from pipewire-pulse
https://github.com/archlinux/svntogit-packages/commit/e26e14fbfeaa3af3f7e0f8c4e44d82b8a3949ea9
Now depends on wireplumber instead of a 'pipewire-session-manager'.

Hacky fix incoming

 

Re: Dependence of pipewire from wireplumber wrong

Reply #4
Hacky fix if you want both wireplumber and pipewire-media-session installed so you can continue using pipewire-media-session. Or just because you can!

For some reason my locked down Firefox doesn't seem to want to attach a file.
This is the PKGBUILD.
Code: [Select]
# Maintainer: Jan Alexander Steffens (heftig) <[email protected]>

pkgbase=my-pipewire-media-session
pkgname=(my-pipewire-media-session my-pipewire-media-session-docs)
_pkgbase=pipewire-media-session
_pkgname=(pipewire-media-session pipewire-media-session-docs)
pkgver=0.4.1
pkgrel=2
epoch=1
pkgdesc="Example session manager for PipeWire"
url="https://gitlab.freedesktop.org/pipewire/media-session"
license=(MIT)
arch=(x86_64)
makedepends=(git meson doxygen graphviz 'pipewire>=0.3.39' dbus
             alsa-lib)
options=(debug)
_commit=e5d5cf2404786af8bcc40bdb8a2962bef4ec18b6  # tags/0.4.1
source=("$_pkgbase::git+https://gitlab.freedesktop.org/pipewire/media-session.git#commit=$_commit")
sha256sums=('SKIP')

pkgver() {
  cd $_pkgbase
  git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g'
}

prepare() {
  cd $_pkgbase
}

build() {
  local meson_options=(
    -D docs=enabled
    -D systemd=disabled
    -D with-module-sets=[]
  )

  artix-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_my-pipewire-media-session() {
  depends=('pipewire>=0.3.39' libpipewire-0.3.so libdbus-1.so
           libasound.so)
  optdepends=('pipewire-media-session-docs: Documentation')
  provides=(pipewire-session-manager)

  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/COPYING
}

package_my-pipewire-media-session-docs() {
  pkgdesc+=" - documentation"

  mv docs/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$_pkgname" -m644 $_pkgbase/COPYING
}

# vim:set sw=2 et:
Save in an empty directory as a file named PKGBUILD
run
Code: [Select]
makepkg
Code: [Select]
sudo pacman -U my-pipewire-media-session-1:0.4.1-2-x86_64.pkg.tar.zst

You now have both installed and can choose which you run as your pipewire-session-manager

Caveats:
my-pipewire-media-session will not get updates automatically. Probably a moot point as I doubt pipewire-media-session will get any but if it does I'll post another PKGBUILD here eventually.
At some point I expect the unmaintained pipewire-media-session to stop working with pipewire to some degree or entirely. But that day has not yet come. At least not for me.
I don't see any down side to this as there are no conflicting files but I haven't given it a lot of thought. If this causes your parrot to escape or your oven to explode I bear no responsibility.

If wireplumber works perfectly for you you're probably better of using that.
I hate being forced down a certain path when there seems to be no valid reason to be forced? These packages can coexist.


Re: Dependence of pipewire from wireplumber wrong

Reply #5
Sorry I probably should have started a new topic, but I'm here now.

Upstream media-session has seen commits since the last 0.4.1 release 8 months ago. https://gitlab.freedesktop.org/pipewire/media-session/-/commits/master
So another version (works for me) based on the most recent commit:
Code: [Select]
# Maintainer: Jan Alexander Steffens (heftig) <[email protected]>

pkgbase=my-pipewire-media-session
pkgname=(my-pipewire-media-session my-pipewire-media-session-docs)
_pkgbase=pipewire-media-session
_pkgname=(pipewire-media-session pipewire-media-session-docs)
pkgver=0.4.1
pkgrel=3
epoch=1
pkgdesc="Example session manager for PipeWire"
url="https://gitlab.freedesktop.org/pipewire/media-session"
license=(MIT)
arch=(x86_64)
makedepends=(git meson doxygen graphviz 'pipewire>=0.3.39' dbus
             alsa-lib)
options=(debug)
_commit=a87008622c9d12dba6dd75c5bbf0bff126da22fb  # tags/0.4.1
source=("$_pkgbase::git+https://gitlab.freedesktop.org/pipewire/media-session.git#commit=$_commit")
sha256sums=('SKIP')

# pkgver() {
#   cd $_pkgbase
#   git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g'
# }

prepare() {
  cd $_pkgbase
}

build() {
  local meson_options=(
    -D docs=enabled
    -D systemd=disabled
    -D with-module-sets=[]
  )

  artix-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_my-pipewire-media-session() {
  depends=('pipewire>=0.3.39' libpipewire-0.3.so libdbus-1.so
           libasound.so)
  optdepends=('pipewire-media-session-docs: Documentation')
  provides=(pipewire-session-manager)

  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/COPYING
}

package_my-pipewire-media-session-docs() {
  pkgdesc+=" - documentation"

  mv docs/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$_pkgname" -m644 $_pkgbase/COPYING
}

# vim:set sw=2 et:
Same instructions as the last post except
Code: [Select]
sudo pacman -U my-pipewire-media-session-1:0.4.1-3-x86_64.pkg.tar.zst