Re: [RFC weston 4/4] WIP: libweston: rework versioning scheme

2016-06-06 Thread Pekka Paalanen
On Fri,  3 Jun 2016 14:27:39 +0100
Emil Velikov  wrote:

> From: Emil Velikov 
> 
> Use libweston-$major.so.0.$minor.$patch over the current scheme.

Hi,

is that really a commonly used versioning pattern?
Could you add a reference to the project you used as an example?
Is that project actually happy with it, or are they just stuck with it
because of compatiblity reasons?

> It allows for separation (distinction) of the backwards incompatible
> changes from forward compatible feature/bugfix ones.
> 
> TODO:
>  - Check if we need the -@LIBWESTON_VERSION_MAJOR@ headers changes.
>  - Check where do we want to use @foo@, ${foo} and $(foo).
> 
> Signed-off-by: Emil Velikov 
> ---
>  Makefile.am  | 27 ++-
>  configure.ac |  8 ++--
>  2 files changed, 20 insertions(+), 15 deletions(-)
> 
> diff --git a/Makefile.am b/Makefile.am
> index d1d2178..99c5bfe 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_VERSION_MAJOR)
>  libweston_module_LTLIBRARIES =
>  noinst_LTLIBRARIES =
>  BUILT_SOURCES =
> @@ -61,15 +61,16 @@ 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_VERSION_MAJOR@.la
> +libweston_@LIBWESTON_VERSION_MAJOR@_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
> +libweston_@LIBWESTON_VERSION_MAJOR@_la_CFLAGS = $(AM_CFLAGS) 
> $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
> +libweston_@LIBWESTON_VERSION_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_VERSION_MAJOR@_la_LDFLAGS = -version-info 
> 0:$(LIBWESTON_VERSION_MICRO):$(LIBWESTON_VERSION_PATCH)
>  

This looks suspiciously simple use of -version-info. Is it really correct?
Why not -avoid-version?

> -libweston_la_SOURCES =   \
> +
> +libweston_@LIBWESTON_VERSION_MAJOR@_la_SOURCES = 
> \
>   src/git-version.h   \
>   src/log.c   \
>   src/compositor.c\
> @@ -119,7 +120,7 @@ systemd_notify_la_SOURCES =   \
>   src/compositor.h
>  endif
>  
> -nodist_libweston_la_SOURCES =\
> +nodist_libweston_@LIBWESTON_VERSION_MAJOR@_la_SOURCES =  
> \
>   protocol/weston-screenshooter-protocol.c\
>   protocol/weston-screenshooter-server-protocol.h \
>   protocol/text-cursor-position-protocol.c\
> @@ -135,7 +136,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_VERSION_MAJOR@_la_SOURCES)
>  
>  bin_PROGRAMS += weston
>  
> @@ -145,7 +146,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_VERSION_MAJOR@.la
>  
>  weston_SOURCES = \
>   src/main.c  \
> @@ -220,13 +221,13 @@ endif
>  endif # BUILD_WESTON_LAUNCH
>  
>  pkgconfigdir = $(libdir)/pkgconfig
> -pkgconfig_DATA = src/weston.pc src/libweston-${LIBWESTON_ABI_VERSION}.pc
> +pkgconfig_DATA = src/weston.pc src/libweston-@LIBWESTON_VERSION_MAJOR@.pc
>  
>  wayland_sessiondir = $(datadir)/wayland-sessions
>  dist_wayland_session_DATA = src/weston.desktop
>  
> -libwestonincludedir = $(includedir)/libweston-${LIBWESTON_ABI_VERSION}
> -libwestoninclude_HEADERS =   \
> +libweston_@LIBWESTON_VERSION_MAJOR@includedir = 
> $(includedir)/libweston-$(LIBWESTON_VERSION_MAJOR)
> +libweston_@LIBWESTON_VERSION_MAJOR@include_HEADERS = 
> \

These two renames probably aren't necessary?
We have libweston_moduledir also.

>   src/version.h   \
>   src/compositor.h\
>   src/compositor-drm.h\
> diff -

[RFC weston 4/4] WIP: libweston: rework versioning scheme

2016-06-03 Thread Emil Velikov
From: Emil Velikov 

Use libweston-$major.so.0.$minor.$patch over the current scheme.

It allows for separation (distinction) of the backwards incompatible
changes from forward compatible feature/bugfix ones.

TODO:
 - Check if we need the -@LIBWESTON_VERSION_MAJOR@ headers changes.
 - Check where do we want to use @foo@, ${foo} and $(foo).

Signed-off-by: Emil Velikov 
---
 Makefile.am  | 27 ++-
 configure.ac |  8 ++--
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index d1d2178..99c5bfe 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_VERSION_MAJOR)
 libweston_module_LTLIBRARIES =
 noinst_LTLIBRARIES =
 BUILT_SOURCES =
@@ -61,15 +61,16 @@ 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_VERSION_MAJOR@.la
+libweston_@LIBWESTON_VERSION_MAJOR@_la_CPPFLAGS = $(AM_CPPFLAGS) -DIN_WESTON
+libweston_@LIBWESTON_VERSION_MAJOR@_la_CFLAGS = $(AM_CFLAGS) 
$(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS)
+libweston_@LIBWESTON_VERSION_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_VERSION_MAJOR@_la_LDFLAGS = -version-info 
0:$(LIBWESTON_VERSION_MICRO):$(LIBWESTON_VERSION_PATCH)
 
-libweston_la_SOURCES = \
+
+libweston_@LIBWESTON_VERSION_MAJOR@_la_SOURCES =   
\
src/git-version.h   \
src/log.c   \
src/compositor.c\
@@ -119,7 +120,7 @@ systemd_notify_la_SOURCES = \
src/compositor.h
 endif
 
-nodist_libweston_la_SOURCES =  \
+nodist_libweston_@LIBWESTON_VERSION_MAJOR@_la_SOURCES =
\
protocol/weston-screenshooter-protocol.c\
protocol/weston-screenshooter-server-protocol.h \
protocol/text-cursor-position-protocol.c\
@@ -135,7 +136,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_VERSION_MAJOR@_la_SOURCES)
 
 bin_PROGRAMS += weston
 
@@ -145,7 +146,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_VERSION_MAJOR@.la
 
 weston_SOURCES =   \
src/main.c  \
@@ -220,13 +221,13 @@ endif
 endif # BUILD_WESTON_LAUNCH
 
 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = src/weston.pc src/libweston-${LIBWESTON_ABI_VERSION}.pc
+pkgconfig_DATA = src/weston.pc src/libweston-@LIBWESTON_VERSION_MAJOR@.pc
 
 wayland_sessiondir = $(datadir)/wayland-sessions
 dist_wayland_session_DATA = src/weston.desktop
 
-libwestonincludedir = $(includedir)/libweston-${LIBWESTON_ABI_VERSION}
-libwestoninclude_HEADERS = \
+libweston_@LIBWESTON_VERSION_MAJOR@includedir = 
$(includedir)/libweston-$(LIBWESTON_VERSION_MAJOR)
+libweston_@LIBWESTON_VERSION_MAJOR@include_HEADERS =   
\
src/version.h   \
src/compositor.h\
src/compositor-drm.h\
diff --git a/configure.ac b/configure.ac
index 2be2277..78457be 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_micro_version], [0])
 
 AC_PREREQ([2.64])
 AC_INIT([weston],
@@ -18,7 +20,9 @@ AC_SUBST([WESTON_VERSION_MAJOR], [weston_major_version])
 AC_SUBST([WESTON_VERSION_MINOR], [weston_minor_