Bug#1066112: weston: Enable support to libseat launcher in weston 10
Hi, sorry for taking so long.
On Wed, Mar 13, 2024 at 05:42:29PM +0100, Dylan Aïssi wrote:
> Hi,
>
> Le mer. 13 mars 2024 à 16:05, Carlos Henrique Lima Melara
> <charlesmelara@riseup.net> a écrit :
> >
> > > I can try this week to prepare an updated package in a dedicated branch
> > > in salsa, so you can test it. Then, if everything is okay, we could fill
> > > the request to the release team.
> >
> > Sure, just let me know if you need help with anything and/or when the
> > packaging is ready for testing.
>
> Ready for testing at:
> https://salsa.debian.org/xorg-team/wayland/weston/-/tree/debian-10.0
> I just realized the branch name is confusing...
So, I have good and bad news, but I guess they are mostly good.
THe bad news first, when I was checking the upstream commits, I saw some
changes in libweston.h which raised some flags about ABI incompatibilty
because they introduced some members in a publicly exposed struct. So I
set my feet on testing abi changes with abi-dumper +
abi-compliance-checker (it was my first time, that's why it took so
long).
The actually bad new is 08979a1 (from 10.0.4) [1] makes some problematic
changes in libweston.h:
--- a/include/libweston/libweston.h
+++ b/include/libweston/libweston.h
@@ -1289,6 +1289,7 @@ struct weston_view {
struct weston_surface *surface;
struct wl_list surface_link;
struct wl_signal destroy_signal;
+ struct wl_signal unmap_signal;
/* struct weston_paint_node::view_link */
struct wl_list paint_node_list;
@@ -1441,6 +1442,7 @@ struct weston_pointer_constraint {
bool hint_is_pending;
struct wl_listener pointer_destroy_listener;
+ struct wl_listener view_unmap_listener;
struct wl_listener surface_commit_listener;
struct wl_listener surface_activate_listener;
};
This introduces an ABI incompatibility in libweston as caught by
abi-compliance-checker (report attached):
Comparing ABIs ...¬
Comparing APIs ...¬
Creating compatibility report ...¬
Binary compatibility: 77.8%¬
Source compatibility: 100%¬
Total binary compatibility problems: 1, warnings: 1¬
Total source compatibility problems: 0, warnings: 1¬
Report: compat_reports/libweston-10.so.dump/0_to_1/compat_report.html¬
I think this would get a solid NO from the release team (although I'm
not sure). Since the whole 10.0.4 release (the 4 commits) are related to
each other, I think we won't be able to pick it.
That said, I started testing with the 10.0.3 release (because if we
can't get the latest, let's try to get something at least). And the
results are good, we have 100% abi and api compatibility for all DSOs,
even internal ones.
Also, building the 10.0.3 (always with libseat launcher support
enabled), the build time tests give the same results (with 10.0.5 I was
getting slightly different results).
I also tested the libseat launcher and normal launcher and they both
work.
Finally, since the 10.0.5 patch release is only 1 commit, we can grab it
as a patch in the packaging side, so we would just miss the 10.0.4 patch
release.
Well, it was a long email, but the main takeway is 10.0.4 introduces an
ABI incompatibility and would be unsuitable for a proposed-update to
bookworm. But we can use the 10.0.3 release plus the only commit in
10.0.5 with libseat launcher support with 100% abi and api
compatibility.
What do you think?
> Best,
> Dylan
Cheers,
Charles
Title: libweston-10.so.dump: 0 to 1 compatibility report
API compatibility report for the libweston-10.so object between 0 and 1 versions on x86_64
Test Info
Module Name | libweston-10.so.dump |
Version #1 | 0 |
Version #2 | 1 |
Arch | x86_64 |
GCC Version | 12.2.0 |
Subject | Binary Compatibility |
Test Results
Total Header Files | 26 |
Total Source Files | 27 |
Total Objects | 1 |
Total Symbols / Types | 352 / 259 |
Compatibility |
77.8% |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 0 |
Removed Symbols | High | 0 |
Problems with Data Types | High | 0 |
Medium | 1 |
Low | 1 |
Problems with Symbols | High | 0 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Problems with Data Types, Medium Severity 1
libweston.h
[+] struct weston_view 1
|
Change |
Effect |
1 |
Field unmap_signal has been added at the middle position of this structural type. |
1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications. |
[+] affected symbols: 156 (44.3%)
linux_dmabuf_buffer_get ( struct wl_resource* resource )
Field 'retval.compositor.touch_calibrator.view' in the return value (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_get_user_data ( struct linux_dmabuf_buffer* buffer )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_send_server_error ( struct linux_dmabuf_buffer* buffer, char const* msg )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_set_user_data ( struct linux_dmabuf_buffer* buffer, void* data, dmabuf_user_data_destroy_func func )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
linux_explicit_synchronization_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
noop_renderer_init ( struct weston_compositor* ec )
Field 'ec.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'ec' (pointer) has base type 'struct weston_view'.
notify_axis ( struct weston_seat* seat, struct timespec const* time, struct weston_pointer_axis_event* event )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_axis_source ( struct weston_seat* seat, uint32_t source )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_button ( struct weston_seat* seat, struct timespec const* time, int32_t button, enum wl_pointer_button_state state )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
...
to the top
Problems with Data Types, Low Severity 1
libweston.h
[+] struct weston_view 1
|
Change |
Effect |
1 |
Size of this type has been changed from 608 bytes to 624 bytes. |
The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols: 156 (44.3%)
linux_dmabuf_buffer_get ( struct wl_resource* resource )
Field 'retval.compositor.touch_calibrator.view' in the return value (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_get_user_data ( struct linux_dmabuf_buffer* buffer )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_send_server_error ( struct linux_dmabuf_buffer* buffer, char const* msg )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_set_user_data ( struct linux_dmabuf_buffer* buffer, void* data, dmabuf_user_data_destroy_func func )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
linux_explicit_synchronization_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
noop_renderer_init ( struct weston_compositor* ec )
Field 'ec.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'ec' (pointer) has base type 'struct weston_view'.
notify_axis ( struct weston_seat* seat, struct timespec const* time, struct weston_pointer_axis_event* event )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_axis_source ( struct weston_seat* seat, uint32_t source )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_button ( struct weston_seat* seat, struct timespec const* time, int32_t button, enum wl_pointer_button_state state )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
...
to the top
Header Files 26
backend.h
clockid_t.h
color.h
FILE.h
libweston-internal.h
libweston.h
linux-dmabuf.h
matrix.h
pixel-formats.h
pixman-renderer.h
pixman.h
stddef.h
stdint-intn.h
stdint-uintn.h
struct_FILE.h
struct_timespec.h
timeline.h
types.h
wayland-server-core.h
wayland-server-protocol.h
wayland-server.h
wayland-util.h
weston-log-internal.h
weston-log.h
xkbcommon.h
to the top
Source Files 27
animation.c
bindings.c
color.c
compositor.c
config-parser.c
content-protection.c
data-device.c
drm-formats.c
input.c
linux-dmabuf.c
linux-explicit-synchronization.c
linux-sync-file.c
log.c
matrix.c
noop-renderer.c
os-compatibility.c
pixel-formats.c
pixman-renderer.c
plugin-registry.c
screenshooter.c
timeline.c
touch-calibration.c
weston-direct-display.c
weston-log-file.c
weston-log-flight-rec.c
weston-log.c
zoom.c
to the top
Objects 1
libweston-10.so.0.0.1
to the top
Test Info
Module Name | libweston-10.so.dump |
Version #1 | 0 |
Version #2 | 1 |
Arch | x86_64 |
Subject | Source Compatibility |
Test Results
Total Header Files | 26 |
Total Source Files | 27 |
Total Objects | 1 |
Total Symbols / Types | 352 / 259 |
Compatibility |
100% |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 0 |
Removed Symbols | High | 0 |
Problems with Data Types | High | 0 |
Medium | 0 |
Low | 1 |
Problems with Symbols | High | 0 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Problems with Data Types, Low Severity 1
libweston.h
[+] struct weston_view 1
|
Change |
Effect |
1 |
Field unmap_signal has been added to this type. |
This field will not be initialized or used by old client applications. |
[+] affected symbols: 156 (44.3%)
linux_dmabuf_buffer_get ( struct wl_resource* resource )
Field 'retval.compositor.touch_calibrator.view' in the return value (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_get_user_data ( struct linux_dmabuf_buffer* buffer )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_send_server_error ( struct linux_dmabuf_buffer* buffer, char const* msg )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_buffer_set_user_data ( struct linux_dmabuf_buffer* buffer, void* data, dmabuf_user_data_destroy_func func )
Field 'buffer.compositor.touch_calibrator.view' in 1st parameter 'buffer' (pointer) has base type 'struct weston_view'.
linux_dmabuf_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
linux_explicit_synchronization_setup ( struct weston_compositor* compositor )
Field 'compositor.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'compositor' (pointer) has base type 'struct weston_view'.
noop_renderer_init ( struct weston_compositor* ec )
Field 'ec.default_pointer_grab.axis.p0.pointer.focus' in 1st parameter 'ec' (pointer) has base type 'struct weston_view'.
notify_axis ( struct weston_seat* seat, struct timespec const* time, struct weston_pointer_axis_event* event )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_axis_source ( struct weston_seat* seat, uint32_t source )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
notify_button ( struct weston_seat* seat, struct timespec const* time, int32_t button, enum wl_pointer_button_state state )
Field 'seat.touch_state.focus' in 1st parameter 'seat' (pointer) has base type 'struct weston_view'.
...
to the top
Header Files 26
backend.h
clockid_t.h
color.h
FILE.h
libweston-internal.h
libweston.h
linux-dmabuf.h
matrix.h
pixel-formats.h
pixman-renderer.h
pixman.h
stddef.h
stdint-intn.h
stdint-uintn.h
struct_FILE.h
struct_timespec.h
timeline.h
types.h
wayland-server-core.h
wayland-server-protocol.h
wayland-server.h
wayland-util.h
weston-log-internal.h
weston-log.h
xkbcommon.h
to the top
Source Files 27
animation.c
bindings.c
color.c
compositor.c
config-parser.c
content-protection.c
data-device.c
drm-formats.c
input.c
linux-dmabuf.c
linux-explicit-synchronization.c
linux-sync-file.c
log.c
matrix.c
noop-renderer.c
os-compatibility.c
pixel-formats.c
pixman-renderer.c
plugin-registry.c
screenshooter.c
timeline.c
touch-calibration.c
weston-direct-display.c
weston-log-file.c
weston-log-flight-rec.c
weston-log.c
zoom.c
to the top
Objects 1
libweston-10.so.0.0.1
to the top
Attachment:
signature.asc
Description: PGP signature
Reply to: