[PATCH 2/2] build: use symbol versioning

Peter Hutterer peter.hutterer at who-t.net
Thu Sep 11 14:28:07 PDT 2014


On Thu, Sep 11, 2014 at 10:55:43PM +0200, Jonas Ådahl wrote:
> On Wed, Sep 10, 2014 at 01:32:25AM +0200, Jan Engelhardt wrote:
> > Symbol versions provide a means by which ELF utilities can determine
> > whether a program is incompatible with a too-old library version so
> > that package management tools can autodetect version-based
> > dependencies and suggest upgrade paths.
> 
> This sounds like a good idea. I have not pushed it yet though because
> I'd want to avoid adding the symbols that will be deprecated in the
> coming release (libinput_device_get_keys and libinput_device_calibrate).

can we run the symbols through sort please? Makes it a lot easier to find
them when they're sorted alphabetically.

> > Signed-off-by: Jan Engelhardt <jengelh at inai.de>
> > ---
> >  src/Makefile.am  |  3 +-
> >  src/libinput.map | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 89 insertions(+), 1 deletion(-)
> >  create mode 100644 src/libinput.map
> > 
> > diff --git a/src/Makefile.am b/src/Makefile.am
> > index 44e73d3..629ce49 100644
> > --- a/src/Makefile.am
> > +++ b/src/Makefile.am
> > @@ -34,7 +34,8 @@ libinput_la_CFLAGS = -I$(top_srcdir)/include \
> >  		     $(LIBEVDEV_CFLAGS)	\
> >  		     $(GCC_CFLAGS)
> >  
> > -libinput_la_LDFLAGS = -version-info $(LIBINPUT_LT_VERSION) -shared
> > +libinput_la_LDFLAGS = -version-info $(LIBINPUT_LT_VERSION) -shared \
> > +                      -Wl,--version-script=$(srcdir)/libinput.map
> >  
> >  pkgconfigdir = $(libdir)/pkgconfig
> >  pkgconfig_DATA = libinput.pc
> > diff --git a/src/libinput.map b/src/libinput.map
> > new file mode 100644
> > index 0000000..414dbd2
> > --- /dev/null
> > +++ b/src/libinput.map
> > @@ -0,0 +1,87 @@
> > +V_0.5.0 {

I'm not sure what the best approach is tbh, but maybe we should use the
libtool version here instead of the libinput version for easier and more
obvious numbering? the libtool version at least maps to the soname which is
also what causes everything to break if we change it the wrong way.

Cheers,
   Peter


> > +global:
> > +	libinput_event_destroy;
> > +	libinput_event_get_type;
> > +	libinput_event_get_context;
> > +	libinput_event_get_device;
> > +	libinput_event_get_pointer_event;
> > +	libinput_event_get_keyboard_event;
> > +	libinput_event_get_touch_event;
> > +	libinput_event_get_device_notify_event;
> > +	libinput_event_device_notify_get_base_event;
> > +	libinput_event_keyboard_get_time;
> > +	libinput_event_keyboard_get_key;
> > +	libinput_event_keyboard_get_key_state;
> > +	libinput_event_keyboard_get_base_event;
> > +	libinput_event_keyboard_get_seat_key_count;
> > +	libinput_event_pointer_get_time;
> > +	libinput_event_pointer_get_dx;
> > +	libinput_event_pointer_get_dy;
> > +	libinput_event_pointer_get_absolute_x;
> > +	libinput_event_pointer_get_absolute_y;
> > +	libinput_event_pointer_get_absolute_x_transformed;
> > +	libinput_event_pointer_get_absolute_y_transformed;
> > +	libinput_event_pointer_get_button;
> > +	libinput_event_pointer_get_button_state;
> > +	libinput_event_pointer_get_seat_button_count;
> > +	libinput_event_pointer_get_axis;
> > +	libinput_event_pointer_get_axis_value;
> > +	libinput_event_pointer_get_base_event;
> > +	libinput_event_touch_get_time;
> > +	libinput_event_touch_get_slot;
> > +	libinput_event_touch_get_seat_slot;
> > +	libinput_event_touch_get_x;
> > +	libinput_event_touch_get_y;
> > +	libinput_event_touch_get_x_transformed;
> > +	libinput_event_touch_get_y_transformed;
> > +	libinput_event_touch_get_base_event;
> > +	libinput_udev_create_context;
> > +	libinput_udev_assign_seat;
> > +	libinput_path_create_context;
> > +	libinput_path_add_device;
> > +	libinput_path_remove_device;
> > +	libinput_get_fd;
> > +	libinput_dispatch;
> > +	libinput_get_event;
> > +	libinput_next_event_type;
> > +	libinput_get_user_data;
> > +	libinput_resume;
> > +	libinput_suspend;
> > +	libinput_ref;
> > +	libinput_unref;
> > +	libinput_log_set_priority;
> > +	libinput_log_get_priority;
> > +	libinput_log_set_handler;
> > +	libinput_seat_ref;
> > +	libinput_seat_unref;
> > +	libinput_seat_set_user_data;
> > +	libinput_seat_get_user_data;
> > +	libinput_seat_get_physical_name;
> > +	libinput_seat_get_logical_name;
> > +	libinput_device_ref;
> > +	libinput_device_unref;
> > +	libinput_device_set_user_data;
> > +	libinput_device_get_user_data;
> > +	libinput_device_get_sysname;
> > +	libinput_device_get_name;
> > +	libinput_device_get_id_product;
> > +	libinput_device_get_id_vendor;
> > +	libinput_device_get_output_name;
> > +	libinput_device_get_seat;
> > +	libinput_device_led_update;
> > +	libinput_device_get_keys;
> > +	libinput_device_calibrate;
> > +	libinput_device_has_capability;
> > +	libinput_device_get_size;
> > +	libinput_config_status_to_str;
> > +	libinput_device_config_tap_get_finger_count;
> > +	libinput_device_config_tap_set_enabled;
> > +	libinput_device_config_tap_get_enabled;
> > +	libinput_device_config_tap_get_default_enabled;
> > +	libinput_device_config_calibration_has_matrix;
> > +	libinput_device_config_calibration_set_matrix;
> > +	libinput_device_config_calibration_get_matrix;
> > +	libinput_device_config_calibration_get_default_matrix;
> > +local:
> > +	*;
> > +};
> > -- 
> > 2.0.0
> > 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 


More information about the wayland-devel mailing list