From 1f722f5c800b1e422ffa480710d7af7c1e7dc0c4 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 22 Jan 2020 21:03:30 +0100 Subject: [PATCH] build: replace version with soversion This allows us to have a single number to update when doing a release. This drops WLR_VERSION_API_* definitions. --- contrib/_incr_version | 29 ++++++++++++----------------- include/wlr/meson.build | 11 ++++------- meson.build | 11 ++++++----- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/contrib/_incr_version b/contrib/_incr_version index 376be44c..949c845b 100755 --- a/contrib/_incr_version +++ b/contrib/_incr_version @@ -3,31 +3,26 @@ old_version="$1" new_version="$2" sed -i meson.build -e "s/version: '$old_version'/version: '$new_version'/g" -printf "Backwards-incompatible ABI changes? (y/n) " -read inc_age -if [ "$inc_age" = 'n' ] +bugfix='n' +printf "Breaking API changes? (y/n) " +read breaking +if [ "$breaking" = 'n' ] then - printf "Interface(s) added, removed, or changed? (y/n) " - read inc_current + printf "Bugfix release (no backwards-incompatible ABI changes)? (y/n) " + read bugfix fi -so_version=$(egrep '^so_version =' meson.build | cut -d'[' -f2- | cut -d']' -f1) -current=$(echo "$so_version" | cut -d',' -f1 | sed -e "s/'//g" -e "s/ //g") -revision=$(echo "$so_version" | cut -d',' -f2 | sed -e "s/'//g" -e "s/ //g") -age=$(echo "$so_version" | cut -d',' -f3 | sed -e "s/'//g" -e "s/ //g") +soversion=$(egrep '^soversion =' meson.build | cut -d'=' -f2-) +soversion=$((soversion)) -if [ "$inc_age" = 'y' ] +if [ "$bugfix" != 'y' ] then - age=$((age+1)) - current=$((current+1)) -elif [ "$inc_current" = 'y' ] -then - current=$((current+1)) + soversion=$((soversion+1)) fi -revision=$((revision+1)) sed -i meson.build \ - -e "s/so_version = .*/so_version = ['$current', '$revision', '$age']/g" + -e "s/soversion = .*/soversion = $soversion/g" +exit 1 git add meson.build git commit -m "Update version to $new_version" diff --git a/include/wlr/meson.build b/include/wlr/meson.build index 032c08d2..4e79d068 100644 --- a/include/wlr/meson.build +++ b/include/wlr/meson.build @@ -1,12 +1,9 @@ version_array = meson.project_version().split('.') version_data = configuration_data() -version_data.set_quoted('WLR_VERSION_STR', meson.project_version()) -version_data.set('WLR_VERSION_MAJOR', version_array[0]) -version_data.set('WLR_VERSION_MINOR', version_array[1]) -version_data.set('WLR_VERSION_MICRO', version_array[2]) -version_data.set('WLR_VERSION_API_CURRENT', so_version[0]) -version_data.set('WLR_VERSION_API_REVISION', so_version[1]) -version_data.set('WLR_VERSION_API_AGE', so_version[2]) +version_data.set_quoted('WLR_VERSION_STR', meson.project_version()) +version_data.set('WLR_VERSION_MAJOR', version_array[0]) +version_data.set('WLR_VERSION_MINOR', version_array[1]) +version_data.set('WLR_VERSION_MICRO', version_array[2]) conf_h = configure_file( input: 'config.h.in', diff --git a/meson.build b/meson.build index 9096d43f..dd4f1e4d 100644 --- a/meson.build +++ b/meson.build @@ -11,10 +11,11 @@ project( ], ) -# Format of so_version is CURRENT, REVISION, AGE. -# See: https://autotools.io/libtool/version.html -# for a reference about clean library versioning. -so_version = ['5', '9', '1'] +# When doing a major or minor release, *always* increase soversion. This isn't +# necessary for bugfix releases. Increasing soversion is required because +# wlroots never guarantees ABI stability -- only API stability is guaranteed +# between minor releases. +soversion = 5 add_project_arguments([ '-DWLR_USE_UNSTABLE', @@ -152,7 +153,7 @@ symbols_file = 'wlroots.syms' symbols_flag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbols_file) lib_wlr = library( meson.project_name(), wlr_files, - version: '.'.join(so_version), + soversion: soversion, dependencies: wlr_deps, include_directories: [wlr_inc, proto_inc], install: true,