[PATCH] python: replace hardcoding of SONAME version

Tomi Ollila tomi.ollila at iki.fi
Sat Mar 7 02:42:23 PST 2015


On Sat, Mar 07 2015, David Bremner <david at tethera.net> wrote:

> Failing to update this string in globals.py causes failures when the
> SONAME changes.  In order to hopefully reduce the number of such
> errors, automate the process of setting the SONAME in the python
> bindings.

Looks sensible me -- anyone knowing more how 'pythonic' the variable
convention used is (i.e. is plain SOVERSION -- or any other issues) good?

Tomi


> ---
>  Makefile.local                     | 4 +++-
>  bindings/python/notmuch/globals.py | 5 +++--
>  bindings/python/notmuch/version.py | 1 +
>  3 files changed, 7 insertions(+), 3 deletions(-)
>
> After hitting the mismatch again while working on the count API, I
> decided to try to fix it.
>
> diff --git a/Makefile.local b/Makefile.local
> index 81ee347..6d54742 100644
> --- a/Makefile.local
> +++ b/Makefile.local
> @@ -107,7 +107,9 @@ dist: $(TAR_FILE)
>  .PHONY: update-versions
>  
>  update-versions:
> -	sed -i "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" $(PV_FILE)
> +	sed -i -e "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" \
> +	    -e "s/^SOVERSION[[:blank:]]*=.*$$/SOVERSION = \'${LIBNOTMUCH_VERSION_MAJOR}\'/" \
> +	    ${PV_FILE}
>  
>  # We invoke make recursively only to force ordering of our phony
>  # targets in the case of parallel invocation of make (-j).
> diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py
> index 24b25d3..4c49d51 100644
> --- a/bindings/python/notmuch/globals.py
> +++ b/bindings/python/notmuch/globals.py
> @@ -18,15 +18,16 @@ Copyright 2010 Sebastian Spaeth <Sebastian at SSpaeth.de>
>  """
>  
>  from ctypes import CDLL, Structure, POINTER
> +from version import SOVERSION
>  
>  #-----------------------------------------------------------------------------
>  #package-global instance of the notmuch library
>  try:
>      from os import uname
>      if uname()[0] == 'Darwin':
> -        nmlib = CDLL("libnotmuch.4.dylib")
> +        nmlib = CDLL("libnotmuch.{0:s}.dylib".format(SOVERSION))
>      else:
> -        nmlib = CDLL("libnotmuch.so.4")
> +        nmlib = CDLL("libnotmuch.so.{0:s}".format(SOVERSION))
>  except:
>      raise ImportError("Could not find shared 'notmuch' library.")
>  
> diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py
> index f719fdf..35744d3 100644
> --- a/bindings/python/notmuch/version.py
> +++ b/bindings/python/notmuch/version.py
> @@ -1,2 +1,3 @@
>  # this file should be kept in sync with ../../../version
>  __VERSION__ = '0.19'
> +SOVERSION = '4'
> -- 
> 2.1.4
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list