On 04/07/2016 16:23, Emil Velikov wrote:
Use the documented libweston-$major.so.0.$minor.$patch scheme.

An (almost) identical one is used by GLIB, GTK{2,3}, QT5, json-glib and
others.

v2:
 - Use shorter variable names LIBWESTON_{MAJOR,MINOR...}
 - Correctly use -version-info.
 - Drop unneeded @LIBWESTON_VERSION_MAJOR@ additions.

Signed-off-by: Emil Velikov <emil.l.veli...@collabora.com>
---

XXX:
 - Should we rename libweston{,-0}.pc.in ?
 - Drop the s/LIBWESTON_ABI_VERSION/LIBWESTON_MAJOR/ hunk ?
 - Keep the configure libweston_*_version variables shorter ?
 - Yes, the LT_VERSION_INFO hunk looks a bit nasty, yet this is what GTK
is doing, once you unraver the 2-3 layers of variables. It works as
expected though, and I'd imagine others are doing a similar trick.

fixup! libweston: use new versioning scheme

Looks good. A bit hard to read but I thing you at least build-tested it. :-)

I think you can drop the "v2" part in the commit message, btw.

One last comment inline to make it perfect.


---
 Makefile.am             | 24 ++++++++++++------------
 compositor/weston.pc.in |  2 +-
 configure.ac            | 12 +++++++++---
 3 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index b050c60..1c3d553 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@ noinst_PROGRAMS =
 libexec_PROGRAMS =
 moduledir = $(libdir)/weston
 module_LTLIBRARIES =
-libweston_moduledir = $(libdir)/libweston-${LIBWESTON_ABI_VERSION}
+libweston_moduledir = $(libdir)/libweston-$(LIBWESTON_MAJOR)
 libweston_module_LTLIBRARIES =
 noinst_LTLIBRARIES =
 BUILT_SOURCES =
@@ -61,15 +61,15 @@ CLEANFILES = weston.ini                             \
        internal-screenshot-00.png              \
        $(BUILT_SOURCES)

-lib_LTLIBRARIES = libweston.la
-libweston_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
-libweston_la_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
-libweston_la_LIBADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
+lib_LTLIBRARIES = libweston-@LIBWESTON_MAJOR@.la
+libweston_@LIBWESTON_MAJOR@_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
+libweston_@LIBWESTON_MAJOR@_la_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) 
$(LIBUNWIND_CFLAGS)
+libweston_@LIBWESTON_MAJOR@_la_LIBADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
        $(DLOPEN_LIBS) -lm $(CLOCK_GETTIME_LIBS) \
        $(LIBINPUT_BACKEND_LIBS) libshared.la
-libweston_la_LDFLAGS = -release ${LIBWESTON_ABI_VERSION}
+libweston_@LIBWESTON_MAJOR@_la_LDFLAGS = -version-info $(LT_VERSION_INFO)

-libweston_la_SOURCES =                                 \
+libweston_@LIBWESTON_MAJOR@la_SOURCES =                        \
        libweston/git-version.h                         \
        libweston/log.c                                 \
        libweston/compositor.c                          \
@@ -121,7 +121,7 @@ systemd_notify_la_SOURCES =                 \
        libweston/compositor.h
 endif

-nodist_libweston_la_SOURCES =                                  \
+nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES =                                
\
        protocol/weston-screenshooter-protocol.c                        \
        protocol/weston-screenshooter-server-protocol.h                 \
        protocol/text-cursor-position-protocol.c        \
@@ -137,7 +137,7 @@ nodist_libweston_la_SOURCES =                               
        \
        protocol/linux-dmabuf-unstable-v1-protocol.c    \
        protocol/linux-dmabuf-unstable-v1-server-protocol.h

-BUILT_SOURCES += $(nodist_libweston_la_SOURCES)
+BUILT_SOURCES += $(nodist_libweston_@LIBWESTON_MAJOR@_la_SOURCES)

 bin_PROGRAMS += weston

@@ -148,7 +148,7 @@ weston_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON                
\
 weston_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
 weston_LDADD = $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \
        $(DLOPEN_LIBS) $(LIBINPUT_BACKEND_LIBS) \
-       -lm libshared.la libweston.la
+       -lm libshared.la libweston-@LIBWESTON_MAJOR@.la

 weston_SOURCES =                                       \
        compositor/main.c                               \
@@ -225,12 +225,12 @@ endif
 endif # BUILD_WESTON_LAUNCH

 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = compositor/weston.pc 
libweston/libweston-${LIBWESTON_ABI_VERSION}.pc
+pkgconfig_DATA = compositor/weston.pc libweston/libweston-${LIBWESTON_MAJOR}.pc

 wayland_sessiondir = $(datadir)/wayland-sessions
 dist_wayland_session_DATA = compositor/weston.desktop

-libwestonincludedir = $(includedir)/libweston-${LIBWESTON_ABI_VERSION}
+libwestonincludedir = $(includedir)/libweston-${LIBWESTON_MAJOR}
 libwestoninclude_HEADERS =                     \
        libweston/version.h                     \
        libweston/compositor.h                  \
diff --git a/compositor/weston.pc.in b/compositor/weston.pc.in
index 09e8580..6890a77 100644
--- a/compositor/weston.pc.in
+++ b/compositor/weston.pc.in
@@ -8,5 +8,5 @@ pkglibexecdir=${libexecdir}/@PACKAGE@
 Name: Weston Plugin API
 Description: Header files for Weston plugin development
 Version: @WESTON_VERSION@
-Requires.private: libweston-@LIBWESTON_ABI_VERSION@
+Requires.private: libweston-@LIBWESTON_MAJOR@
 Cflags: -I${includedir}/weston
diff --git a/configure.ac b/configure.ac
index 85a475a..be40f10 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,9 @@ m4_define([weston_minor_version], [11])
 m4_define([weston_micro_version], [90])
 m4_define([weston_version],
           [weston_major_version.weston_minor_version.weston_micro_version])
-m4_define([libweston_abi_version], [0])
+m4_define([libweston_major_version], [0])
+m4_define([libweston_minor_version], [0])
+m4_define([libweston_patch_version], [0])

 AC_PREREQ([2.64])
 AC_INIT([weston],
@@ -18,7 +20,11 @@ AC_SUBST([WESTON_VERSION_MAJOR], [weston_major_version])
 AC_SUBST([WESTON_VERSION_MINOR], [weston_minor_version])
 AC_SUBST([WESTON_VERSION_MICRO], [weston_micro_version])
 AC_SUBST([WESTON_VERSION], [weston_version])
-AC_SUBST([LIBWESTON_ABI_VERSION], [libweston_abi_version])
+AC_SUBST([LIBWESTON_MAJOR], [libweston_major_version])
+m4_define([lt_current], [libweston_minor_version])
+m4_define([lt_revision], [libweston_patch_version])
+m4_define([lt_age], [libweston_minor_version])
+AC_SUBST([LT_VERSION_INFO], [lt_current:lt_revision:lt_age])

I had to do the whole version updating script twice to fully understand that.
Please add a comment saying:
“We use minor as current and age since on ABI/API break/removal we bump major, so minor will be reset to 0.”
or anything clear.
The confusing thing here is that current and age are not supposed to be in sync, and current is supposed to be incremented forever. Except that here, we have a “new lib” on major bump, so current is fine to be 0 again.


Cheers,


 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([config.h])
@@ -637,7 +643,7 @@ AC_CONFIG_FILES([Makefile libweston/version.h 
compositor/weston.pc])

 # AC_CONFIG_FILES needs the full name when running autoconf, so we need to use
 # libweston_abi_version here, and outside [] because of m4 quoting rules
-AC_CONFIG_FILES([libweston/libweston-]libweston_abi_version[.pc:libweston/libweston.pc.in])
+AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[.pc:libweston/libweston.pc.in])

 AM_CONDITIONAL([HAVE_GIT_REPO], [test -f $srcdir/.git/logs/HEAD])




--

Quentin “Sardem FF7” Glidic
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to