Failed to build snap with Pipewire

Hello, In last week I tried to migrate my snap to GTK4, Gnome 40 and Core 22 I face issue but @popey help me solve it

now I’m facing the following issue when initialize pipewire

[E] pw.loop [loop.c:86 pw_loop_new()] 0x557969229520: can't make support.system handle: No such file or directory

as I understand pipewire wasn’t included or similar issue:

my snapcraft.yml is following: https://github.com/xlmnxp/blue-recorder/blob/master/snap/snapcraft.yaml and I tried to add

  pipewire:
    source: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/0.3.32/pipewire-0.3.32.tar.gz
    plugin: meson
    meson-parameters:
      - --prefix=/usr
      - --buildtype=release
      - --strip
      - -Dalsa=disabled
      - -Dpipewire-alsa=disabled
      - -Djack=disabled
      - -Dpipewire-jack=disabled
      - -Dsession-managers=[]
    build-packages:
      - pkg-config
      - libdbus-1-dev
      - libpulse-dev
    prime:
      - usr/lib/*/pipewire-*
      - usr/lib/*/spa-*
      - usr/lib/*/libpipewire*.so*
      - usr/share/pipewire

and that didn’t solve the issue and I got:

Failed to stage: parts list the same file with different contents or permissions.
Parts 'pipewire' and 'blue-recorder' list the following files, but with different contents or permissions:
    usr/bin/pipewire
    usr/bin/pw-cli
    usr/bin/pw-dot
    usr/bin/pw-dump
    usr/bin/pw-link
    usr/bin/pw-loopback
    usr/bin/pw-metadata
    usr/bin/pw-mididump
    usr/bin/pw-mon
    usr/bin/pw-profiler
    usr/bin/pw-reserve
    usr/bin/spa-inspect
    usr/bin/spa-json-dump
    usr/bin/spa-monitor
    usr/lib/systemd/user/pipewire.service
    usr/lib/systemd/user/pipewire.socket
    usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstpipewire.so
    usr/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-access.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-adapter.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-client-device.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-client-node.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-echo-cancel.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-filter-chain.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-link-factory.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-loopback.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-metadata.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-portal.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-profiler.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-protocol-native.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-protocol-pulse.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-protocol-simple.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-pulse-tunnel.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-rt.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-rtkit.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-session-manager.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-spa-device-factory.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-spa-device.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-spa-node-factory.so
    usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-spa-node.so
    usr/lib/x86_64-linux-gnu/spa-0.2/audioconvert/libspa-audioconvert.so
    usr/lib/x86_64-linux-gnu/spa-0.2/audiomixer/libspa-audiomixer.so
    usr/lib/x86_64-linux-gnu/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
    usr/lib/x86_64-linux-gnu/spa-0.2/control/libspa-control.so
    usr/lib/x86_64-linux-gnu/spa-0.2/support/libspa-dbus.so
    usr/lib/x86_64-linux-gnu/spa-0.2/support/libspa-journal.so
    usr/lib/x86_64-linux-gnu/spa-0.2/support/libspa-support.so
    usr/lib/x86_64-linux-gnu/spa-0.2/v4l2/libspa-v4l2.so
    usr/lib/x86_64-linux-gnu/spa-0.2/videoconvert/libspa-videoconvert.so
    usr/lib/x86_64-linux-gnu/spa-0.2/videotestsrc/libspa-videotestsrc.so
    usr/lib/x86_64-linux-gnu/spa-0.2/volume/libspa-volume.so
    usr/share/pipewire/client-rt.conf
    usr/share/pipewire/client.conf
    usr/share/pipewire/jack.conf
    usr/share/pipewire/pipewire.conf             
Failed to execute pack in instance.                                                                                                                                                

Regards, Salem Yaslem

As I understand the issue related to something like

there other project face same issue https://github.com/Soundux/Soundux/issues/275

1 Like

Well, you stage libpipewire and gstreamer-pipewire from the archive in your blue-recorder part already, then you add another part to build it from a newer upstream source, that can not work…

You could try to remove the staged libs and use an after statement in the blue-recorder part so it gets linked against the upstream libs you built…

when I removed the packages from stage I got

domain: gst_parse_error, code: 1, message: "no element \"pipewiresrc\""

you might need to extend GST_PLUGIN_PATH or GST_PLUGIN_SYSTEM_PATH to point to your self-built gstreamer sink/source binary …

1 Like

For what it is worth, we’re looking at adding Pipewire to the gnome-42-2204 snap:

https://github.com/ubuntu/gnome-sdk/pull/186

https://github.com/snapcore/snapcraft-desktop-integration/pull/20

If you want to get something working before that, the parts relevant to you would be setting the PIPEWIRE_CONFIG_DIR, PIPEWIRE_MODULE_DIR, and SPA_PLUGIN_DIR environment variables. Those are necessary to use libpipewire if it is installed to a prefix different to what it was configured with when building.

1 Like

I added them and still issue, cannot find pipewiresrc

I see it merged 3 days ago, How I can make use of it?