Bug 273258 - multimedia/pipewire: is too old
Summary: multimedia/pipewire: is too old
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Gleb Popov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-21 09:26 UTC by Jan Beich
Modified: 2023-10-11 17:06 UTC (History)
0 users

See Also:
arrowd: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Beich freebsd_committer freebsd_triage 2023-08-21 09:26:51 UTC
I can't update multimedia/helvum >= 0.4.1 because
https://gitlab.freedesktop.org/pipewire/pipewire-rs/-/commit/7b75773274a5
depends on
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/00ae289a1481
and part of pipewire >= 0.3.65 (2023-01-24).

[libspa-sys 0.7.0] cargo:warning=src/type-info.c:61:58: error: use of undeclared identifier 'spa_type_video_flags'; did you mean 'spa_type_audio_flags'?
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=const struct spa_type_info* libspa_rs_type_video_flags = spa_type_video_flags;
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=                                                         ^~~~~~~~~~~~~~~~~~~~
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=                                                         spa_type_audio_flags
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=/usr/local/include/spa-0.2/spa/param/audio/type-info.h:153:35: note: 'spa_type_audio_flags' declared here
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=static const struct spa_type_info spa_type_audio_flags[] = {
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=                                  ^
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=src/type-info.c:62:67: error: use of undeclared identifier 'spa_type_video_interlace_mode'
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=const struct spa_type_info* libspa_rs_type_video_interlace_mode = spa_type_video_interlace_mode;
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=                                                                  ^
[libspa-sys 0.7.0] 
[libspa-sys 0.7.0] cargo:warning=2 errors generated.
Comment 1 Jan Beich freebsd_committer freebsd_triage 2023-09-28 12:30:21 UTC
With the latest pipewire-rs (due to partial legacy support) the error has changed:

  error[E0412]: cannot find type `spa_debug_context` in this scope
   --> libspa-sys/src/debug/pod.rs:8:19
    |
  8 |         ctx: *mut spa_debug_context,
    |                   ^^^^^^^^^^^^^^^^^ not found in this scope

  error[E0412]: cannot find type `spa_debug_context` in this scope
    --> libspa-sys/src/debug/pod.rs:18:19
     |
  18 |         ctx: *mut spa_debug_context,
     |                   ^^^^^^^^^^^^^^^^^ not found in this scope


Also, helvum 0.4.1 appears to work fine with pipewire-rs 0.6.0 (see ports 2c6b7355e43b) but helvum 0.5.0 depends on pipewire-rs >= 0.7 features:

  error[E0432]: unresolved import `pipewire::spa::param`
    --> src/pipewire_connection/mod.rs:35:9
     |
  35 |         param::{ParamInfoFlags, ParamType},
     |         ^^^^^ could not find `param` in `spa`

  error[E0432]: unresolved import `pipewire::spa::format`
    --> src/ui/graph/graph_view.rs:45:24
     |
  45 |     use pipewire::spa::format::MediaType;
     |                        ^^^^^^ could not find `format` in `spa`

  error[E0432]: unresolved import `pipewire::spa::format`
    --> src/ui/graph/port.rs:34:25
     |
  34 |     use pipewire::spa::{format::MediaType, Direction};
     |                         ^^^^^^ could not find `format` in `spa`

  error[E0432]: unresolved import `pipewire::spa::format`
    --> src/ui/graph/link.rs:18:20
     |
  18 | use pipewire::spa::format::MediaType;
     |                    ^^^^^^ could not find `format` in `spa`

  error[E0432]: unresolved imports `pipewire::spa::format`, `crate::MediaType`, `crate::MediaType`
    --> src/main.rs:23:21
     |
  23 | use pipewire::spa::{format::MediaType, Direction};
     |                     ^^^^^^ could not find `format` in `spa`
     |
    ::: src/graph_manager.rs:30:28
     |
  30 |     use crate::{ui::graph, MediaType, NodeType};
     |                            ^^^^^^^^^
     |
    ::: src/pipewire_connection/mod.rs:42:25
     |
  42 | use crate::{GtkMessage, MediaType, NodeType, PipewireMessage};
     |                         ^^^^^^^^^

  error[E0433]: failed to resolve: could not find `format` in `spa`
     --> src/graph_manager.rs:258:75
      |
  258 |         fn link_format_changed(&self, id: u32, media_type: pipewire::spa::format::MediaType) {
      |                                                                           ^^^^^^ could not find `format` in `spa`

  error[E0433]: failed to resolve: could not find `param` in `spa`
     --> src/pipewire_connection/mod.rs:327:42
      |
  327 |         .and_then(|param| pipewire::spa::param::format_utils::parse_format(param).ok())
      |                                          ^^^^^ could not find `param` in `spa`

  error[E0433]: failed to resolve: could not find `param` in `spa`
     --> src/pipewire_connection/mod.rs:461:43
      |
  461 |         .and_then(|format| pipewire::spa::param::format_utils::parse_format(format).ok())
      |                                           ^^^^^ could not find `param` in `spa`

  error[E0412]: cannot find type `Pod` in module `pipewire::spa::pod`
     --> src/pipewire_connection/mod.rs:323:40
      |
  323 |     param: Option<&pipewire::spa::pod::Pod>,
      |                                        ^^^ not found in `pipewire::spa::pod`

  error[E0593]: closure is expected to take 4 arguments, but it takes 5 arguments
     --> src/pipewire_connection/mod.rs:250:10
      |
  250 |           .param(clone!(@strong sender => move |_, param_id, _, _, param| {
      |  __________^^^^^_-
      | |          |
      | |          expected closure that takes 4 arguments
  251 | |             if param_id == ParamType::EnumFormat {
  252 | |                 handle_port_enum_format(port_id, param, &sender)
  253 | |             }
  254 | |         }))
      | |__________- takes 5 arguments

  error[E0599]: no method named `params` found for reference `&PortInfo` in the current scope
     --> src/pipewire_connection/mod.rs:300:27
      |
  300 |         let params = info.params();
      |                           ^^^^^^ method not found in `&PortInfo`

  error[E0599]: no method named `enum_params` found for reference `&pipewire::port::Port` in the current scope
     --> src/pipewire_connection/mod.rs:306:23
      |
  306 |                 proxy.enum_params(0, Some(ParamType::EnumFormat), 0, u32::MAX);
      |                       ^^^^^^^^^^^ method not found in `&Port`

  error[E0599]: no method named `format` found for reference `&LinkInfo` in the current scope
     --> src/pipewire_connection/mod.rs:460:10
      |
  459 |       let media_type = link_info
      |  ______________________-
  460 | |         .format()
      | |         -^^^^^^ method not found in `&LinkInfo`
      | |_________|
      |
Comment 2 Jan Beich freebsd_committer freebsd_triage 2023-10-08 11:35:30 UTC
https://github.com/waycrate/xdg-desktop-portal-luminous is also affected: v0.1.1 (the first tag) already specifies pipewire-sys-0.7.2 (Rust bindings), and according to git-blame(1) no revision existed that used pipewire-sys < 0.7.
Comment 3 Jan Beich freebsd_committer freebsd_triage 2023-10-08 17:18:35 UTC
(In reply to Jan Beich from comment #2)
If you or someone else have ideas for workarounds I've added x11/xdg-desktop-portal-luminous to facilitate testing.
Comment 4 commit-hook freebsd_committer freebsd_triage 2023-10-10 19:49:11 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ea9c61f86374e6138f5ec6948d2e57f0c7c39eaf

commit ea9c61f86374e6138f5ec6948d2e57f0c7c39eaf
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2023-10-08 16:32:38 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2023-10-10 19:48:07 +0000

    multimedia/pipewire: Update to 0.3.81

    PR:             273258

 multimedia/pipewire/Makefile                       |  10 +-
 multimedia/pipewire/distinfo                       |  10 +-
 ...tch-spa_plugins_vulkan_dmabuf__fallback.c (new) |  16 ++
 ...tch-src_modules_module-netjack2-manager.c (new) |  13 ++
 ...-pulse_modules_module-zeroconf-publish.c (gone) |  10 --
 ...tch-src_modules_module-protocol-simple.c (gone) |  11 --
 .../pipewire/files/patch-test_test-functional.c    |  13 +-
 multimedia/pipewire/pkg-plist                      | 164 +++++++++++----------
 8 files changed, 132 insertions(+), 115 deletions(-)
Comment 5 commit-hook freebsd_committer freebsd_triage 2023-10-11 14:35:16 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0815295e0b7988daf05dc1665b4ff523c7083763

commit 0815295e0b7988daf05dc1665b4ff523c7083763
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-10-11 11:40:13 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-10-11 14:18:49 +0000

    multimedia/pipewire: unbreak on FreeBSD < 13.2 after ea9c61f86374

    In file included from ../src/modules/module-netjack2-manager.c:38:
    ../src/modules/module-netjack2/peer.c:2:10: fatal error: 'byteswap.h' file not found
     #include <byteswap.h>
              ^~~~~~~~~~~~

    PR:             273258

 .../patch-src_modules_module-netjack2_peer.c (new) | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)
Comment 6 commit-hook freebsd_committer freebsd_triage 2023-10-11 17:06:43 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d26cd48207f1d50401c130539a650e91e6f150b2

commit d26cd48207f1d50401c130539a650e91e6f150b2
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-10-11 16:57:25 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-10-11 17:05:10 +0000

    multimedia/pipewire: unbreak MEDIASESSION after ea9c61f86374

    $ daemon -f pipewire
    $ /usr/local/libexec/xdg-desktop-portal-wlr
    [ERROR] - pipewire: couldn't connect to context
    [ERROR] - xdpw: failed to initialize screencast
    'impl->enter_count > 0' failed at ../spa/plugins/support/loop.c:362 loop_leave()

    PR:             273258
    Regressed by:   https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/01096bf6695a

 multimedia/pipewire/Makefile                       |  2 +
 .../files/patch-spa_plugins_meson.build (new)      |  8 +++
 multimedia/pipewire/pkg-plist                      | 77 ++++++++++++++++++++++
 3 files changed, 87 insertions(+)