Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ABI break with 1.1.0 #72

Open
werdahias opened this issue Jan 31, 2025 · 2 comments
Open

ABI break with 1.1.0 #72

werdahias opened this issue Jan 31, 2025 · 2 comments

Comments

@werdahias
Copy link

When preparing the 1.1.0 for upload to Debian I noticed that the ABI has been broken:

--- debian/libgtk4-layer-shell0.symbols (libgtk4-layer-shell0_1.1.0-1_amd64)
+++ dpkg-gensymbolseBv9dT	2025-01-31 14:48:17.296594675 +0000
@@ -1,13 +1,19 @@
 libgtk4-layer-shell.so.0 libgtk4-layer-shell0 #MINVER#
 * Build-Depends-Package: libgtk4-layer-shell-dev
- all_layer_surfaces@Base 1.0.2
- args_contains_client_facing_proxy@Base 1.0.4
+#MISSING: 1.1.0-1# all_layer_surfaces@Base 1.0.2
+#MISSING: 1.1.0-1# args_contains_client_facing_proxy@Base 1.0.4
+ cached_display@Base 1.1.0-1
  client_facing_proxy_id@Base 1.0.2
- find_layer_surface_with_wl_surface@Base 1.0.2
- gdk_anchor_hints_get_xdg_positioner_constraint_adjustment@Base 1.0.2
- gdk_gravity_get_xdg_positioner_anchor@Base 1.0.2
- gdk_gravity_get_xdg_positioner_gravity@Base 1.0.2
- get_interface_of_object_created_by_request@Base 1.0.4
+ current_display@Base 1.1.0-1
+ current_lock@Base 1.1.0-1
+#MISSING: 1.1.0-1# find_layer_surface_with_wl_surface@Base 1.0.2
+#MISSING: 1.1.0-1# gdk_anchor_hints_get_xdg_positioner_constraint_adjustment@Base 1.0.2
+#MISSING: 1.1.0-1# gdk_gravity_get_xdg_positioner_anchor@Base 1.0.2
+#MISSING: 1.1.0-1# gdk_gravity_get_xdg_positioner_gravity@Base 1.0.2
+#MISSING: 1.1.0-1# get_interface_of_object_created_by_request@Base 1.0.4
+ get_layer_shell_global_from_display@Base 1.1.0-1
+ get_session_lock_global_from_display@Base 1.1.0-1
+ get_xdg_surface_server_from_xdg_surface@Base 1.1.0-1
  gtk_layer_auto_exclusive_zone_enable@Base 1.0.2
  gtk_layer_auto_exclusive_zone_is_enabled@Base 1.0.2
  gtk_layer_get_anchor@Base 1.0.2
@@ -32,30 +38,63 @@
  gtk_layer_set_margin@Base 1.0.2
  gtk_layer_set_monitor@Base 1.0.2
  gtk_layer_set_namespace@Base 1.0.2
- gtk_layer_shell_edge_array_get_zwlr_layer_shell_v1_anchor@Base 1.0.2
- gtk_layer_shell_layer_get_zwlr_layer_shell_v1_layer@Base 1.0.2
- gtk_wayland_get_layer_shell_global@Base 1.0.2
- gtk_wayland_init_if_needed@Base 1.0.2
- gtk_window_get_layer_surface@Base 1.0.2
+#MISSING: 1.1.0-1# gtk_layer_shell_edge_array_get_zwlr_layer_shell_v1_anchor@Base 1.0.2
+#MISSING: 1.1.0-1# gtk_layer_shell_layer_get_zwlr_layer_shell_v1_layer@Base 1.0.2
+ gtk_session_lock_instance_assign_window_to_monitor@Base 1.1.0-1
+ gtk_session_lock_instance_get_type@Base 1.1.0-1
+ gtk_session_lock_instance_is_locked@Base 1.1.0-1
+ gtk_session_lock_instance_lock@Base 1.1.0-1
+ gtk_session_lock_instance_new@Base 1.1.0-1
+ gtk_session_lock_instance_unlock@Base 1.1.0-1
+ gtk_session_lock_is_supported@Base 1.1.0-1
+#MISSING: 1.1.0-1# gtk_wayland_get_layer_shell_global@Base 1.0.2
+#MISSING: 1.1.0-1# gtk_wayland_init_if_needed@Base 1.0.2
+#MISSING: 1.1.0-1# gtk_window_get_layer_surface@Base 1.0.2
+ layer_shell_global@Base 1.1.0-1
+ layer_shell_requested@Base 1.1.0-1
  layer_surface_auto_exclusive_zone_enable@Base 1.0.2
+ layer_surface_configure_acked@Base 1.1.0-1
  layer_surface_get_namespace@Base 1.0.2
- layer_surface_handle_request@Base 1.0.2
- layer_surface_new@Base 1.0.2
+#MISSING: 1.1.0-1# layer_surface_handle_request@Base 1.0.2
+ layer_surface_install_hook@Base 1.1.0-1
+ layer_surface_invalidate_preferred_size@Base 1.1.0-1
+ layer_surface_make@Base 1.1.0-1
+#MISSING: 1.1.0-1# layer_surface_new@Base 1.0.2
  layer_surface_set_anchor@Base 1.0.2
  layer_surface_set_exclusive_zone@Base 1.0.2
  layer_surface_set_keyboard_mode@Base 1.0.2
  layer_surface_set_layer@Base 1.0.2
  layer_surface_set_margin@Base 1.0.2
- layer_surface_set_monitor@Base 1.0.2
+#MISSING: 1.1.0-1# layer_surface_set_monitor@Base 1.0.2
  layer_surface_set_name_space@Base 1.0.2
+ layer_surface_set_output@Base 1.1.0-1
+ layer_surface_uninit@Base 1.1.0-1
  libwayland_shim_clear_client_proxy_data@Base 1.0.2
  libwayland_shim_create_client_proxy@Base 1.0.2
  libwayland_shim_get_client_proxy_data@Base 1.0.2
  libwayland_shim_has_initialized@Base 1.0.2
- libwayland_shim_real_wl_proxy_add_dispatcher@Base 1.0.2
- libwayland_shim_real_wl_proxy_destroy@Base 1.0.2
- libwayland_shim_real_wl_proxy_marshal_array_flags@Base 1.0.2
- wl_proxy_add_dispatcher@Base 1.0.2
+ libwayland_shim_install_request_hook@Base 1.1.0-1
+ libwayland_shim_proxy_get_dispatcher@Base 1.1.0-1
+ libwayland_shim_proxy_get_display@Base 1.1.0-1
+ libwayland_shim_proxy_get_implementation@Base 1.1.0-1
+ libwayland_shim_proxy_get_queue@Base 1.1.0-1
+ libwayland_shim_proxy_get_user_data@Base 1.1.0-1
+ libwayland_shim_proxy_invoke_dispatcher@Base 1.1.0-1
+#MISSING: 1.1.0-1# libwayland_shim_real_wl_proxy_add_dispatcher@Base 1.0.2
+#MISSING: 1.1.0-1# libwayland_shim_real_wl_proxy_destroy@Base 1.0.2
+#MISSING: 1.1.0-1# libwayland_shim_real_wl_proxy_marshal_array_flags@Base 1.0.2
+ lock_surface_install_hook@Base 1.1.0-1
+ lock_surface_make@Base 1.1.0-1
+ lock_surface_map@Base 1.1.0-1
+ lock_surface_uninit@Base 1.1.0-1
+ session_lock_get_active_lock@Base 1.1.0-1
+ session_lock_global@Base 1.1.0-1
+ session_lock_lock@Base 1.1.0-1
+ session_lock_requested@Base 1.1.0-1
+ session_lock_unlock@Base 1.1.0-1
+ stubbed_surface_destroyed@Base 1.1.0-1
+ stubbed_surface_init@Base 1.1.0-1
+#MISSING: 1.1.0-1# wl_proxy_add_dispatcher@Base 1.0.2
  wl_proxy_destroy@Base 1.0.2
  wl_proxy_marshal@Base 1.0.2
  wl_proxy_marshal_array@Base 1.0.2
@@ -65,3 +104,64 @@
  wl_proxy_marshal_constructor@Base 1.0.2
  wl_proxy_marshal_constructor_versioned@Base 1.0.2
  wl_proxy_marshal_flags@Base 1.0.2
+ xdg_surface_server_get_xdg_surface@Base 1.1.0-1
+ xdg_surface_server_send_configure@Base 1.1.0-1
+ xdg_surface_server_uninit@Base 1.1.0-1
+liblayer-shell-preload.so libgtk4-layer-shell0 #MINVER#
+ cached_display@Base 1.1.0-1
+ client_facing_proxy_id@Base 1.1.0-1
+ current_display@Base 1.1.0-1
+ current_lock@Base 1.1.0-1
+ get_layer_shell_global_from_display@Base 1.1.0-1
+ get_session_lock_global_from_display@Base 1.1.0-1
+ get_xdg_surface_server_from_xdg_surface@Base 1.1.0-1
+ layer_shell_global@Base 1.1.0-1
+ layer_shell_requested@Base 1.1.0-1
+ layer_surface_auto_exclusive_zone_enable@Base 1.1.0-1
+ layer_surface_configure_acked@Base 1.1.0-1
+ layer_surface_get_namespace@Base 1.1.0-1
+ layer_surface_install_hook@Base 1.1.0-1
+ layer_surface_invalidate_preferred_size@Base 1.1.0-1
+ layer_surface_make@Base 1.1.0-1
+ layer_surface_set_anchor@Base 1.1.0-1
+ layer_surface_set_exclusive_zone@Base 1.1.0-1
+ layer_surface_set_keyboard_mode@Base 1.1.0-1
+ layer_surface_set_layer@Base 1.1.0-1
+ layer_surface_set_margin@Base 1.1.0-1
+ layer_surface_set_name_space@Base 1.1.0-1
+ layer_surface_set_output@Base 1.1.0-1
+ layer_surface_uninit@Base 1.1.0-1
+ libwayland_shim_clear_client_proxy_data@Base 1.1.0-1
+ libwayland_shim_create_client_proxy@Base 1.1.0-1
+ libwayland_shim_get_client_proxy_data@Base 1.1.0-1
+ libwayland_shim_has_initialized@Base 1.1.0-1
+ libwayland_shim_install_request_hook@Base 1.1.0-1
+ libwayland_shim_proxy_get_dispatcher@Base 1.1.0-1
+ libwayland_shim_proxy_get_display@Base 1.1.0-1
+ libwayland_shim_proxy_get_implementation@Base 1.1.0-1
+ libwayland_shim_proxy_get_queue@Base 1.1.0-1
+ libwayland_shim_proxy_get_user_data@Base 1.1.0-1
+ libwayland_shim_proxy_invoke_dispatcher@Base 1.1.0-1
+ lock_surface_install_hook@Base 1.1.0-1
+ lock_surface_make@Base 1.1.0-1
+ lock_surface_map@Base 1.1.0-1
+ lock_surface_uninit@Base 1.1.0-1
+ session_lock_get_active_lock@Base 1.1.0-1
+ session_lock_global@Base 1.1.0-1
+ session_lock_lock@Base 1.1.0-1
+ session_lock_requested@Base 1.1.0-1
+ session_lock_unlock@Base 1.1.0-1
+ stubbed_surface_destroyed@Base 1.1.0-1
+ stubbed_surface_init@Base 1.1.0-1
+ wl_proxy_destroy@Base 1.1.0-1
+ wl_proxy_marshal@Base 1.1.0-1
+ wl_proxy_marshal_array@Base 1.1.0-1
+ wl_proxy_marshal_array_constructor@Base 1.1.0-1
+ wl_proxy_marshal_array_constructor_versioned@Base 1.1.0-1
+ wl_proxy_marshal_array_flags@Base 1.1.0-1
+ wl_proxy_marshal_constructor@Base 1.1.0-1
+ wl_proxy_marshal_constructor_versioned@Base 1.1.0-1
+ wl_proxy_marshal_flags@Base 1.1.0-1
+ xdg_surface_server_get_xdg_surface@Base 1.1.0-1
+ xdg_surface_server_send_configure@Base 1.1.0-1
+ xdg_surface_server_uninit@Base 1.1.0-1

Note this MISSING symbols that just disappeared. Fortunately nothing in Debian uses those symbols (as far as I can tell). Please refrain from breaking ABI like this, this causes just headaches for maintainers

@wmww
Copy link
Owner

wmww commented Feb 2, 2025

Sorry about that, I didn't realize I needed to be controlling symbol visibility. These were never exposed by public headers, and not supposed to be used externally. I will look into how to make only symbols that are part of the public API visible. Next release all the private symbols will go away, but after that it shouldn't be an issue.

@wmww
Copy link
Owner

wmww commented Feb 5, 2025

Does #73 look like it will solve the problem in the future?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants