From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id A73186DE099D for ; Sun, 9 Aug 2015 11:57:39 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: 0.138 X-Spam-Level: X-Spam-Status: No, score=0.138 tagged_above=-999 required=5 tests=[AWL=0.128, T_HEADER_FROM_DIFFERENT_DOMAINS=0.01] 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 Zu9M-3yOfXOd for ; Sun, 9 Aug 2015 11:57:37 -0700 (PDT) Received: from gitolite.debian.net (gitolite.debian.net [87.98.215.224]) by arlo.cworth.org (Postfix) with ESMTPS id ADC826DE0244 for ; Sun, 9 Aug 2015 11:57:36 -0700 (PDT) Received: from remotemail by gitolite.debian.net with local (Exim 4.80) (envelope-from ) id 1ZOVmA-0007eJ-1C; Sun, 09 Aug 2015 18:56:54 +0000 Received: (nullmailer pid 16891 invoked by uid 1000); Sun, 09 Aug 2015 18:56:42 -0000 From: David Bremner To: notmuch@notmuchmail.org Subject: [PATCH] build: extract library versions from notmuch.h Date: Sun, 9 Aug 2015 20:56:17 +0200 Message-Id: <1439146577-16676-1-git-send-email-david@tethera.net> X-Mailer: git-send-email 2.1.4 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 18:57:39 -0000 - 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. 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..." +cat > _libversion.c < +#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 < /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