From b33e368445128a4a93e94f5becbaa8705e72b780 Mon Sep 17 00:00:00 2001 From: Tomi Ollila Date: Mon, 10 Aug 2015 01:11:19 +0300 Subject: [PATCH] Re: [PATCH] build: extract library versions from notmuch.h --- 4b/e1663dd8fae3d8f34e44361570dd817c3f56bd | 248 ++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 4b/e1663dd8fae3d8f34e44361570dd817c3f56bd diff --git a/4b/e1663dd8fae3d8f34e44361570dd817c3f56bd b/4b/e1663dd8fae3d8f34e44361570dd817c3f56bd new file mode 100644 index 000000000..c9ca5d3dd --- /dev/null +++ b/4b/e1663dd8fae3d8f34e44361570dd817c3f56bd @@ -0,0 +1,248 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by arlo.cworth.org (Postfix) with ESMTP id 921926DE099D + for ; Sun, 9 Aug 2015 15:11:37 -0700 (PDT) +X-Virus-Scanned: Debian amavisd-new at cworth.org +X-Spam-Flag: NO +X-Spam-Score: 1.248 +X-Spam-Level: * +X-Spam-Status: No, score=1.248 tagged_above=-999 required=5 tests=[AWL=-0.148, + SPF_NEUTRAL=0.652, URIBL_SBL=0.644, URIBL_SBL_A=0.1] autolearn=disabled +Received: from arlo.cworth.org ([127.0.0.1]) + by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id TSvOoL32x9Re for ; + Sun, 9 Aug 2015 15:11:34 -0700 (PDT) +Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) + by arlo.cworth.org (Postfix) with ESMTP id 869456DE0244 + for ; Sun, 9 Aug 2015 15:11:33 -0700 (PDT) +Received: from guru.guru-group.fi (localhost [IPv6:::1]) + by guru.guru-group.fi (Postfix) with ESMTP id 1AFDB1000CE; + Mon, 10 Aug 2015 01:11:20 +0300 (EEST) +From: Tomi Ollila +To: David Bremner , notmuch@notmuchmail.org +Subject: Re: [PATCH] build: extract library versions from notmuch.h +In-Reply-To: <1439146577-16676-1-git-send-email-david@tethera.net> +References: <1439146577-16676-1-git-send-email-david@tethera.net> +User-Agent: Notmuch/0.20.2+58~ge9cd033 (http://notmuchmail.org) Emacs/24.3.1 + (x86_64-unknown-linux-gnu) +X-Face: HhBM'cA~ +MIME-Version: 1.0 +Content-Type: text/plain +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.18 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sun, 09 Aug 2015 22:11:37 -0000 + +On Sun, Aug 09 2015, David Bremner wrote: + +> - Make lib/notmuch.h the canonical location for the library versioning +> information. +> +> - Since the release-check should never fail now, remove it to reduce +> complexity. +> +> - Make the version numbers in notmuch.h consistent with the (now +> deleted) ones in lib/Makefile.local +> --- +> +> Not counting turning 20 lines of lib/Makefile.local into a template in +> configure, the main change here is replacing a test in +> release-checks.sh with another piece of code in configure. This isn't +> obviously a good idea, since everyone has to run configure and few run +> release-checks. Personally, I think the test in config is a bit +> cleaner, but the main point is that it is much nicer to have the +> version information only in one place. + +Good idea. see below for 2 things. + +> +> configure | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ +> devel/release-checks.sh | 32 ------------------------------- +> lib/Makefile.local | 21 -------------------- +> lib/notmuch.h | 2 +- +> 4 files changed, 52 insertions(+), 54 deletions(-) +> +> diff --git a/configure b/configure +> index 20fbed6..17eb243 100755 +> --- a/configure +> +++ b/configure +> @@ -324,6 +324,35 @@ EOF +> exit 1 +> fi +> +> +printf "Reading libnotmuch version from source..." + +Just one ^ space + +> +cat > _libversion.c < +#include +> +#include "lib/notmuch.h" +> +int main(void) { +> + printf("libnotmuch_version_major=%d\n", +> + LIBNOTMUCH_MAJOR_VERSION); +> + printf("libnotmuch_version_minor=%d\n", +> + LIBNOTMUCH_MINOR_VERSION); +> + printf("libnotmuch_version_release=%d\n", +> + LIBNOTMUCH_MICRO_VERSION); +> + return 0; +> +} +> +EOF +> +if ${CC} ${CFLAGS} _libversion.c -o _libversion > /dev/null 2>&1 && \ +> + ./_libversion > libversion.sh && . ./libversion.sh +> +then +> + printf "OK" +> +else +> + cat < + +> +*** Error: Reading lib/notmuch.h failed. +> +Please try running configure again in a clean environment, and if the +> +problem persists, report a bug. +> +EOF +> + rm -f _libversion _libversion.c_libversion.sh + +Above should be _libversion.c libversion.sh + +> + exit 1 +> +fi +> + +> if pkg-config --version > /dev/null 2>&1; then +> have_pkg_config=1 +> else +> @@ -847,6 +876,28 @@ vpath Makefile.% \$(srcdir) +> vpath %.py \$(srcdir) +> vpath %.rst \$(srcdir) +> +> +# Library versions (used to make SONAME) +> +# The major version of the library interface. This will control the soname. +> +# As such, this number must be incremented for any incompatible change to +> +# the library interface, (such as the deletion of an API or a major +> +# semantic change that breaks formerly functioning code). +> +# +> +LIBNOTMUCH_VERSION_MAJOR = ${libnotmuch_version_major} +> + +> +# The minor version of the library interface. This should be incremented at +> +# the time of release for any additions to the library interface, +> +# (and when it is incremented, the release version of the library should +> +# be reset to 0). +> +LIBNOTMUCH_VERSION_MINOR = ${libnotmuch_version_minor} +> + +> +# The release version the library interface. This should be incremented at +> +# the time of release if there have been no changes to the interface, (but +> +# simply compatible changes to the implementation). +> +LIBNOTMUCH_VERSION_RELEASE = ${libnotmuch_version_release} +> + +> +# These are derived from the VERSION macros in lib/notmuch.h so +> +# if you have to change them, something is wrong. +> + +> # The C compiler to use +> CC = ${CC} +> +> diff --git a/devel/release-checks.sh b/devel/release-checks.sh +> index bf0d68a..8604a9f 100755 +> --- a/devel/release-checks.sh +> +++ b/devel/release-checks.sh +> @@ -88,38 +88,6 @@ case $VERSION in +> *) verfail "'$VERSION' is a single number" ;; +> esac +> +> -echo -n "Checking that LIBNOTMUCH version macros & variables match ... " +> -# lib/notmuch.h +> -LIBNOTMUCH_MAJOR_VERSION=broken +> -LIBNOTMUCH_MINOR_VERSION=broken +> -LIBNOTMUCH_MICRO_VERSION=broken +> -# lib/Makefile.local +> -LIBNOTMUCH_VERSION_MAJOR=borken +> -LIBNOTMUCH_VERSION_MINOR=borken +> -LIBNOTMUCH_VERSION_RELEASE=borken +> - +> -eval `awk 'NF == 3 && $1 == "#define" && $2 ~ /^LIBNOTMUCH_[A-Z]+_VERSION$/ \ +> - && $3 ~ /^[0-9]+$/ { print $2 "=" $3 }' lib/notmuch.h` +> - +> -eval `awk 'NF == 3 && $1 ~ /^LIBNOTMUCH_VERSION_[A-Z]+$/ && $2 == "=" \ +> - && $3 ~ /^[0-9]+$/ { print $1 "=" $3 }' lib/Makefile.local` +> - +> - +> -check_version_component () +> -{ +> - eval local v1=\$LIBNOTMUCH_$1_VERSION +> - eval local v2=\$LIBNOTMUCH_VERSION_$2 +> - if [ $v1 != $v2 ] +> - then append_emsg "LIBNOTMUCH_$1_VERSION ($v1) does not equal LIBNOTMUCH_VERSION_$2 ($v2)" +> - fi +> -} +> - +> -old_emsg_count=$emsg_count +> -check_version_component MAJOR MAJOR +> -check_version_component MINOR MINOR +> -check_version_component MICRO RELEASE +> -[ $old_emsg_count = $emsg_count ] && echo Yes. || echo No. +> - +> echo -n "Checking that this is Debian package for notmuch... " +> read deb_notmuch deb_version rest < debian/changelog +> if [ "$deb_notmuch" = 'notmuch' ] +> diff --git a/lib/Makefile.local b/lib/Makefile.local +> index 412d865..3a07090 100644 +> --- a/lib/Makefile.local +> +++ b/lib/Makefile.local +> @@ -1,26 +1,5 @@ +> # -*- makefile -*- +> +> -# The major version of the library interface. This will control the soname. +> -# As such, this number must be incremented for any incompatible change to +> -# the library interface, (such as the deletion of an API or a major +> -# semantic change that breaks formerly functioning code). +> -# +> -LIBNOTMUCH_VERSION_MAJOR = 4 +> - +> -# The minor version of the library interface. This should be incremented at +> -# the time of release for any additions to the library interface, +> -# (and when it is incremented, the release version of the library should +> -# be reset to 0). +> -LIBNOTMUCH_VERSION_MINOR = 3 +> - +> -# The release version the library interface. This should be incremented at +> -# the time of release if there have been no changes to the interface, (but +> -# simply compatible changes to the implementation). +> -LIBNOTMUCH_VERSION_RELEASE = 0 +> - +> -# Note: Don't forget to change the VERSION macros in notmuch.h when +> -# any of the above change. +> - +> ifeq ($(PLATFORM),MACOSX) +> LIBRARY_SUFFIX = dylib +> # On OS X, library version numbers go before suffix. +> diff --git a/lib/notmuch.h b/lib/notmuch.h +> index 421c19d..b1f5bfa 100644 +> --- a/lib/notmuch.h +> +++ b/lib/notmuch.h +> @@ -56,7 +56,7 @@ NOTMUCH_BEGIN_DECLS +> * version in Makefile.local. +> */ +> #define LIBNOTMUCH_MAJOR_VERSION 4 +> -#define LIBNOTMUCH_MINOR_VERSION 2 +> +#define LIBNOTMUCH_MINOR_VERSION 3 +> #define LIBNOTMUCH_MICRO_VERSION 0 +> +> #define NOTMUCH_DEPRECATED(major,minor) \ +> -- +> 2.1.4 +> +> _______________________________________________ +> notmuch mailing list +> notmuch@notmuchmail.org +> http://notmuchmail.org/mailman/listinfo/notmuch -- 2.26.2