Fails to build on several Debian architectures (s390x, alpha, hppa, powerpc, ppc64, sparc64) due to failing tests.
Hi,
Wireplumber fails to build on several Debian architectures (s390x, alpha, hppa, powerpc, ppc64, sparc64) due to failing tests. Not sure, if it's expected to work. See logs at https://buildd.debian.org/status/package.php?p=wireplumber&suite=sid
It's mainly due to these tests:
5/22 test-object-manager FAIL 0.60s (killed by signal 6 SIGABRT)
7/22 test-proxy FAIL 2.13s (killed by signal 6 SIGABRT)
9/22 test-spa-pod FAIL 0.33s (killed by signal 6 SIGABRT)
14/22 test-lua-pod FAIL 2.94s (killed by signal 6 SIGABRT)
15/22 test-lua-monitor-rules FAIL 2.93s (killed by signal 6 SIGABRT)
19/22 test-si-node FAIL 2.96s (killed by signal 5 SIGTRAP)
20/22 test-si-audio-adapter FAIL 2.86s (killed by signal 5 SIGTRAP)
21/22 test-si-audio-endpoint FAIL 3.04s (killed by signal 6 SIGABRT)
22/22 test-si-standard-link FAIL 2.98s (killed by signal 5 SIGTRAP)
Best,
Dylan
Edit: Update with FTBFS from Debian/unstable instead Debian/experimental
Activity
-
Newest first Oldest first
-
Show all activity Show comments only Show history only
- Dylan Aïssi changed title from Fails to build on several Debian architectures ( s390x, hppa, powerpc, ppc64, riscv64, sparc64) due to failing tests. to Fails to build on several Debian architectures (s390x, alpha, hppa, powerpc, ppc64, sparc64) due to failing tests.
changed title from Fails to build on several Debian architectures ( s390x, hppa, powerpc, ppc64, riscv64, sparc64) due to failing tests. to Fails to build on several Debian architectures (s390x, alpha, hppa, powerpc, ppc64, sparc64) due to failing tests.
- Dylan Aïssi changed the description
changed the description
- Contributor
Gentoo has also hit this with PPC and PPC64 (other big endian arches not yet build tested).
- George Kiagiadakis mentioned in issue #81
mentioned in issue #81
- Niklāvs Koļesņikovs mentioned in issue pipewire#1747 (closed)
mentioned in issue pipewire#1747 (closed)
- George Kiagiadakis added area::tests type::bug labels
added area::tests type::bug labels
The issue is still there with the recent update, log from an Ubuntu builder
- Developer
@seb128 Could you test this branch and let me know if those issues are fixed? https://gitlab.freedesktop.org/julian/wireplumber/-/commits/debian-architecture-fixes
- Developer
At least for
test-spa-pod
, the issue is here:#define SPA_POD_PARSER_COLLECT(pod,_type,args) \ do { \ switch (_type) { \ case 'b': \ *va_arg(args, bool*) = SPA_POD_VALUE(struct spa_pod_bool, pod); \ break;
and
gboolean mute = TRUE; ... g_assert_true (wp_spa_pod_get_object (pod, &id_name, "mute", "b", &mute, ... NULL));
and
gboolean
is an alias forgint
, which in turn is an alias toint
.Edited by Barnabás Pőcze Collapse replies - Developer
Applying the following patch fixes
test-spa-pod
:diff --git a/tests/wp/spa-pod.c b/tests/wp/spa-pod.c index 3366385..b215d22 100644 --- a/tests/wp/spa-pod.c +++ b/tests/wp/spa-pod.c @@ -6,6 +6,8 @@ * SPDX-License-Identifier: MIT */ +#include <stdbool.h> + #include <wp/wp.h> static void @@ -428,12 +430,12 @@ test_spa_pod_object (void) wp_spa_type_name (wp_spa_pod_get_spa_type (pod))); const char *id_name; - gboolean mute = TRUE; + bool mute = true; float vol = 0.0; gint32 frequency; const char *device; gint64 device_fd; - gboolean custom = FALSE; + bool custom = false; g_assert_true (wp_spa_pod_get_object (pod, &id_name, "mute", "b", &mute, @@ -475,12 +477,12 @@ test_spa_pod_object (void) wp_spa_type_name (wp_spa_pod_get_spa_type (pod))); const char *id_name; - gboolean mute = TRUE; + bool mute = true; float vol = 0.0; gint32 frequency; const char *device; gint64 device_fd; - gboolean custom = FALSE; + bool custom = false; g_autoptr (WpSpaPodParser) p = wp_spa_pod_parser_new_object (pod, &id_name); g_assert_nonnull (pod); g_assert_true (wp_spa_pod_parser_get (p, "mute", "b", &mute, NULL)); @@ -603,7 +605,7 @@ test_spa_pod_struct (void) g_assert_true (wp_spa_pod_parser_get (p, "P", &value_object, NULL)); g_assert_nonnull (value_object); const char *id_name; - gboolean mute = TRUE; + bool mute = true; g_assert_true (wp_spa_pod_get_object (value_object, &id_name,
- Developer
The same issue is present in
test-endpoint
.diff --git a/tests/wp/endpoint.c b/tests/wp/endpoint.c index c08f2d2..02f86d2 100644 --- a/tests/wp/endpoint.c +++ b/tests/wp/endpoint.c @@ -499,7 +499,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->proxy_endpoint), "Props", NULL); @@ -513,7 +513,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 1.0f, 0.001); - g_assert_cmpint (boolean_value, ==, FALSE); + g_assert_cmpint (boolean_value, ==, false); } /* setup change signals */ @@ -541,7 +541,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->proxy_endpoint), "Props", NULL); @@ -556,14 +556,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, FALSE); + g_assert_cmpint (boolean_value, ==, false); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->impl_endpoint), "Props", NULL); @@ -577,14 +577,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, FALSE); + g_assert_cmpint (boolean_value, ==, false); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (endpoint->node), "Props", NULL); @@ -598,7 +598,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, FALSE); + g_assert_cmpint (boolean_value, ==, false); } /* change control on the impl */ @@ -618,7 +618,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->proxy_endpoint), "Props", NULL); @@ -633,14 +633,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->impl_endpoint), "Props", NULL); @@ -654,14 +654,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (endpoint->node), "Props", NULL); @@ -675,7 +675,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.7f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } /* change control on the node */ @@ -695,7 +695,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->proxy_endpoint), "Props", NULL); @@ -709,14 +709,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.2f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (fixture->impl_endpoint), "Props", NULL); @@ -730,14 +730,14 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.2f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } { g_autoptr (WpIterator) iterator = NULL; g_auto (GValue) item = G_VALUE_INIT; g_autoptr (WpSpaPod) pod = NULL; gfloat float_value = 0.0f; - gboolean boolean_value = TRUE; + bool boolean_value = true; iterator = wp_pipewire_object_enum_params_sync ( WP_PIPEWIRE_OBJECT (endpoint->node), "Props", NULL); @@ -751,7 +751,7 @@ test_endpoint_with_props (TestEndpointFixture *fixture, gconstpointer data) "mute", "b", &boolean_value, NULL)); g_assert_cmpfloat_with_epsilon (float_value, 0.2f, 0.001); - g_assert_cmpint (boolean_value, ==, TRUE); + g_assert_cmpint (boolean_value, ==, true); } /* destroy impl endpoint */
Edited by Barnabás Pőcze - Developer
The
test-proxy
andtest-object-manager
errors can be fixed with these changes respectively, I think: - Developer
I found another problem.
See
wp_pw_object_mixin_handle_event_info()
:guint32 change_mask = G_STRUCT_MEMBER (guint32, update, iface->change_mask_offset);
However,
-
pw_client_info
, -
pw_core_info
, -
pw_device_info
, -
pw_factory_info
, -
pw_link_info
, pw_module_info
-
pw_node_info
, pw_port_info
all have a 64-bit
change_mask
. This problem has also been masked by endianness.It slightly complicates the problem that
-
pw_session_info
, -
pw_endpoint_info
, -
pw_endpoint_stream_info
, -
pw_endpoint_link_info
,
all have a 32-bit
change_mask
.Applying the following patch to wireplumber:
diff --git a/lib/wp/private/pipewire-object-mixin.c b/lib/wp/private/pipewire-object-mixin.c index 25dbc95..16f7309 100644 --- a/lib/wp/private/pipewire-object-mixin.c +++ b/lib/wp/private/pipewire-object-mixin.c @@ -722,13 +722,13 @@ wp_pw_object_mixin_handle_event_info (gpointer instance, gconstpointer update) WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (instance); WpPwObjectMixinPrivInterface *iface = WP_PW_OBJECT_MIXIN_PRIV_GET_IFACE (instance); - guint32 change_mask = - G_STRUCT_MEMBER (guint32, update, iface->change_mask_offset); - guint32 process_info_change_mask = + guint64 change_mask = + G_STRUCT_MEMBER (guint64, update, iface->change_mask_offset); + guint64 process_info_change_mask = change_mask & ~(iface->CHANGE_MASK_PROPS | iface->CHANGE_MASK_PARAMS); gpointer old_info = NULL; - wp_debug_object (instance, "info, change_mask:0x%x [%s%s]", change_mask, + wp_debug_object (instance, "info, change_mask:0x%lx [%s%s]", change_mask, (change_mask & iface->CHANGE_MASK_PROPS) ? "props," : "", (change_mask & iface->CHANGE_MASK_PARAMS) ? "params," : ""); @@ -736,7 +736,7 @@ wp_pw_object_mixin_handle_event_info (gpointer instance, gconstpointer update) if (iface->process_info && d->info && process_info_change_mask) { /* copy everything that changed except props and params, for efficiency; process_info() is only interested in variables that are not PROPS & PARAMS */ - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = process_info_change_mask; old_info = iface->update_info (NULL, d->info); } @@ -844,9 +844,9 @@ wp_pw_object_mixin_impl_add_listener (gpointer instance, spa_hook_list_isolate (&d->hooks, &save, listener, events, data); - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = iface->CHANGE_MASK_ALL; + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = iface->CHANGE_MASK_ALL; iface->emit_info (&d->hooks, d->info); - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = 0; + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = 0; spa_hook_list_join (&d->hooks, &save); return 0; @@ -947,10 +947,10 @@ wp_pw_object_mixin_notify_info (gpointer instance, guint32 change_mask) (change_mask & iface->CHANGE_MASK_PROPS) ? "props," : "", (change_mask & iface->CHANGE_MASK_PARAMS) ? "params," : ""); - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = (change_mask & iface->CHANGE_MASK_ALL); iface->emit_info (&d->hooks, d->info); - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = 0; + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = 0; if (change_mask & iface->CHANGE_MASK_PROPS) g_object_notify (G_OBJECT (instance), "properties"); @@ -988,10 +988,10 @@ wp_pw_object_mixin_notify_params_changed (gpointer instance, guint32 id) /* toggle the serial flag; this notifies that there is a data change */ info->flags ^= SPA_PARAM_INFO_SERIAL; - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = iface->CHANGE_MASK_PARAMS; iface->emit_info (&d->hooks, d->info); - G_STRUCT_MEMBER (guint32, d->info, iface->change_mask_offset) = 0; + G_STRUCT_MEMBER (guint64, d->info, iface->change_mask_offset) = 0; if (subscribed) wp_pw_object_mixin_impl_enum_params (instance, 1, id, 0, -1, NULL); diff --git a/lib/wp/private/pipewire-object-mixin.h b/lib/wp/private/pipewire-object-mixin.h index 202a5b2..c176124 100644 --- a/lib/wp/private/pipewire-object-mixin.h +++ b/lib/wp/private/pipewire-object-mixin.h @@ -54,9 +54,9 @@ struct _WpPwObjectMixinPrivInterface gsize param_info_offset; gsize n_params_offset; - guint32 CHANGE_MASK_ALL; - guint32 CHANGE_MASK_PROPS; - guint32 CHANGE_MASK_PARAMS; + guint64 CHANGE_MASK_ALL; + guint64 CHANGE_MASK_PROPS; + guint64 CHANGE_MASK_PARAMS; gpointer (*update_info) (gpointer info, gconstpointer update); void (*free_info) (gpointer info);
and applying the following patch to pipewire:
diff --git a/src/modules/module-session-manager/protocol-native.c b/src/modules/module-session-manager/protocol-native.c index 971d01779..9ad65215b 100644 --- a/src/modules/module-session-manager/protocol-native.c +++ b/src/modules/module-session-manager/protocol-native.c @@ -126,7 +126,7 @@ marshal_pw_session_info(struct spa_pod_builder *b, spa_pod_builder_add(b, SPA_POD_Int(info->version), SPA_POD_Int(info->id), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), NULL); push_dict(b, info->props); push_param_infos(b, info->n_params, info->params); @@ -143,7 +143,7 @@ do { \ spa_pod_parser_get(p, \ SPA_POD_Int(&version), \ SPA_POD_Int(&(info)->id), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ NULL) < 0) \ return -EINVAL; \ \ @@ -169,7 +169,7 @@ marshal_pw_endpoint_info(struct spa_pod_builder *b, SPA_POD_String(info->media_class), SPA_POD_Int(info->direction), SPA_POD_Int(info->flags), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Int(info->n_streams), SPA_POD_Int(info->session_id), NULL); @@ -192,7 +192,7 @@ do { \ SPA_POD_String(&(info)->media_class), \ SPA_POD_Int(&(info)->direction), \ SPA_POD_Int(&(info)->flags), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Int(&(info)->n_streams), \ SPA_POD_Int(&(info)->session_id), \ NULL) < 0) \ @@ -218,7 +218,7 @@ marshal_pw_endpoint_stream_info(struct spa_pod_builder *b, SPA_POD_Int(info->id), SPA_POD_Int(info->endpoint_id), SPA_POD_String(info->name), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Pod(info->link_params), NULL); push_dict(b, info->props); @@ -238,7 +238,7 @@ do { \ SPA_POD_Int(&(info)->id), \ SPA_POD_Int(&(info)->endpoint_id), \ SPA_POD_String(&(info)->name), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Pod(&(info)->link_params), \ NULL) < 0) \ return -EINVAL; \ @@ -266,7 +266,7 @@ marshal_pw_endpoint_link_info(struct spa_pod_builder *b, SPA_POD_Int(info->output_stream_id), SPA_POD_Int(info->input_endpoint_id), SPA_POD_Int(info->input_stream_id), - SPA_POD_Int(info->change_mask), + SPA_POD_Long(info->change_mask), SPA_POD_Int(info->state), SPA_POD_String(info->error), NULL); @@ -290,7 +290,7 @@ do { \ SPA_POD_Int(&(info)->output_stream_id), \ SPA_POD_Int(&(info)->input_endpoint_id), \ SPA_POD_Int(&(info)->input_stream_id), \ - SPA_POD_Int(&(info)->change_mask), \ + SPA_POD_Long(&(info)->change_mask), \ SPA_POD_Int(&(info)->state), \ SPA_POD_String(&(info)->error), \ NULL) < 0) \ diff --git a/src/pipewire/extensions/session-manager/introspect.h b/src/pipewire/extensions/session-manager/introspect.h index 2d50ba058..a35a70b56 100644 --- a/src/pipewire/extensions/session-manager/introspect.h +++ b/src/pipewire/extensions/session-manager/introspect.h @@ -53,7 +53,7 @@ struct pw_session_info { #define PW_SESSION_CHANGE_MASK_PROPS (1 << 0) #define PW_SESSION_CHANGE_MASK_PARAMS (1 << 1) #define PW_SESSION_CHANGE_MASK_ALL ((1 << 2)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ struct spa_dict *props; /**< extra properties */ struct spa_param_info *params; /**< parameters */ uint32_t n_params; /**< number of items in \a params */ @@ -73,7 +73,7 @@ struct pw_endpoint_info { #define PW_ENDPOINT_CHANGE_MASK_PROPS (1 << 2) #define PW_ENDPOINT_CHANGE_MASK_PARAMS (1 << 3) #define PW_ENDPOINT_CHANGE_MASK_ALL ((1 << 4)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ uint32_t n_streams; /**< number of streams available */ uint32_t session_id; /**< the id of the controlling session */ struct spa_dict *props; /**< extra properties */ @@ -91,7 +91,7 @@ struct pw_endpoint_stream_info { #define PW_ENDPOINT_STREAM_CHANGE_MASK_PROPS (1 << 1) #define PW_ENDPOINT_STREAM_CHANGE_MASK_PARAMS (1 << 2) #define PW_ENDPOINT_STREAM_CHANGE_MASK_ALL ((1 << 3)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ struct spa_pod *link_params; /**< information for linking this stream */ struct spa_dict *props; /**< extra properties */ struct spa_param_info *params; /**< parameters */ @@ -111,7 +111,7 @@ struct pw_endpoint_link_info { #define PW_ENDPOINT_LINK_CHANGE_MASK_PROPS (1 << 1) #define PW_ENDPOINT_LINK_CHANGE_MASK_PARAMS (1 << 2) #define PW_ENDPOINT_LINK_CHANGE_MASK_ALL ((1 << 3)-1) - uint32_t change_mask; /**< bitfield of changed fields since last call */ + uint64_t change_mask; /**< bitfield of changed fields since last call */ enum pw_endpoint_link_state state; /**< the state of the link */ char *error; /**< error string if state == ERROR */ struct spa_dict *props; /**< extra properties */
seems to solve all failing tests (after applying my previous patches, too).
-
- Developer
@pobrn I think all boolean issues can be solved with just this change (which allows both
bool
andgboolean
types to work with WpSpaPod): julian/wireplumber@5afd1766Regarding your
change_mask
issues, I think they are correct and you should create a MR in both PipeWire and WirePlumber projects. - Developer
Regarding your
change_mask
issues, I think they are correct and you should create a MR in both PipeWire and WirePlumber projects.Unfortunately that is an API and ABI break. I would like to hear what @wtaymans and @gkiagia have to say. I think it should be relatively safe due to to the - I believe - limited number of users of these session manager extensions.
- Owner
I think we should indeed quickly fix this before there are more active users.
- Owner
I believe this is safe. Nobody uses module-session-manager for anything useful right now, so it's unlikely that anyone will notice.
- Barnabás Pőcze mentioned in merge request pipewire!1084 (merged)
mentioned in merge request pipewire!1084 (merged)
- Barnabás Pőcze mentioned in merge request !277 (merged)
mentioned in merge request !277 (merged)
- Barnabás Pőcze mentioned in commit pipewire@03f0a7c9
mentioned in commit pipewire@03f0a7c9
- Contributor
Confirmed that:
- the patches mentioned in this bug and
- the already-committed fix for WP and
- combined with PW 0.3.42 fixes the issue on big-endian PPC64 for Gentoo. Thanks to gyakovlev for extensive testing and all for their work here.
This unblocks a lot of PW for us.
Edited by Sam James - Developer
the patches mentioned in this bug and
@thesamesam which patches exactly? there are several patches that solve the boolean issue. Could you create a MR with the missing patches that are not merged on master yet? That way we can finally close this issue.
- Niklāvs Koļesņikovs mentioned in merge request !287 (merged)
mentioned in merge request !287 (merged)
- George Kiagiadakis closed with merge request !287 (merged)
closed with merge request !287 (merged)