diff --git a/autogen-all.sh b/autogen-all.sh index 88fb15f7..83af1f0b 100755 --- a/autogen-all.sh +++ b/autogen-all.sh @@ -15,7 +15,7 @@ prog=$(basename "$0") -packages=". lang/cpp lang/qt" +packages=". lang/cpp lang/qt lang/python" fatal () { echo "${prog}:" "$*" >&2 diff --git a/configure.ac b/configure.ac index 7ec79226..03324be3 100644 --- a/configure.ac +++ b/configure.ac @@ -238,7 +238,7 @@ have_macos_system=no build_w32_glib=no available_languages="cl" default_languages="cl" -for lang in cpp qt; do +for lang in cpp qt python; do if test -d $srcdir/lang/$lang; then available_languages="$available_languages $lang" fi @@ -364,6 +364,10 @@ LIST_MEMBER("qt", $enabled_languages) if test "$found" = "1"; then nested_languages="$nested_languages qt" fi +LIST_MEMBER("python", $enabled_languages) +if test "$found" = "1"; then + nested_languages="$nested_languages python" +fi AC_SUBST(NESTED_LANGUAGES, $nested_languages) @@ -851,6 +855,10 @@ LIST_MEMBER("qt", $enabled_languages) if test "$found" = "1"; then AC_CONFIG_SUBDIRS([lang/qt]) fi +LIST_MEMBER("python", $enabled_languages) +if test "$found" = "1"; then + AC_CONFIG_SUBDIRS([lang/python]) +fi AC_OUTPUT diff --git a/lang/python/configure.ac b/lang/python/configure.ac index 34033ed3..116d7d0b 100644 --- a/lang/python/configure.ac +++ b/lang/python/configure.ac @@ -409,8 +409,26 @@ AM_CONDITIONAL(USE_GPGRT_CONFIG, [test -n "$GPGRT_CONFIG" \ # And for gpgme. have_gpgme=no -AM_PATH_GPGME("$NEED_GPGME_VERSION", - have_gpgme=yes, have_gpgme=no) +builddir=`pwd` +# Check if Python bindings are built as nested package of gpgme +if test "${srcdir%/lang/python}/lang/python" == "$srcdir" -a \ + "${builddir%/lang/python}/lang/python" == "$builddir"; then + AC_MSG_CHECKING(for GpgME - assuming nested build) + gpgme_build_dir=${builddir%/lang/python} + if test -f "$gpgme_build_dir/src/gpgme.h"; then + GPGME_CFLAGS="-I$gpgme_build_dir/src" + GPGME_LIBS="-L$gpgme_build_dir/src/.libs -lgpgme" + have_gpgme=yes + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi +fi + +if test "$have_gpgme" = "no"; then + AM_PATH_GPGME("$NEED_GPGME_VERSION", + have_gpgme=yes, have_gpgme=no) +fi # diff --git a/lang/python/setup.py.in b/lang/python/setup.py.in index fe20b0ef..3d44341d 100755 --- a/lang/python/setup.py.in +++ b/lang/python/setup.py.in @@ -33,10 +33,6 @@ import shutil import subprocess import sys -# Out-of-tree build of the gpg bindings. -gpgme_h = '' -include_dirs = [os.getcwd()] -library_dirs = [] if hasattr(subprocess, 'DEVNULL'): devnull = subprocess.DEVNULL @@ -52,12 +48,17 @@ major, minor, patch = map(int, version.split('.')) if not (major > 1 or (major == 1 and minor >= 7)): sys.exit('Need at least GPGME version 1.7, found {}.'.format(version_raw)) -define_macros = [] +library_dirs = [] +libs = [] if '@GPGME_LIBS@': - libs = '@GPGME_LIBS@'.split(' ') -else: - libs = [] + for item in '@GPGME_LIBS@'.split(' '): + if item.startswith('-L'): + library_dirs.append(item[2:]) + else: + libs.append(item) +include_dirs = [os.getcwd()] +define_macros = [] if '@GPGME_CFLAGS@': for item in '@GPGME_CFLAGS@'.split(' '): if item.startswith('-I'): @@ -87,23 +88,23 @@ if uname_s.startswith('MINGW32'): extra_dirs.append(os.path.join(tgt, item)) break include_dirs += extra_dirs - for item in [x[2:] for x in libs if x.startswith('-L')]: + extra_dirs = [] + for item in library_dirs: for ln, mnt, tgt in tmplist: if item.startswith(mnt): item = os.path.normpath(item[ln:]) while item[0] == os.path.sep: item = item[1:] - library_dirs.append(os.path.join(tgt, item)) + extra_dirs.append(os.path.join(tgt, item)) break + library_dirs += extra_dirs -if not gpgme_h: - if os.path.exists(os.path.join('@prefix@', 'include', 'gpgme.h')): - gpgme_h = os.path.join('@prefix@', 'include', 'gpgme.h') - else: - for include_dir in (include_dirs or ['/usr/include']): - if os.path.exists(os.path.join(include_dir, 'gpgme.h')): - gpgme_h = os.path.join(include_dir, 'gpgme.h') - break +gpgme_h = None +for include_dir in (include_dirs + + [os.path.join('@prefix@', 'include'), '/usr/include']): + if os.path.exists(os.path.join(include_dir, 'gpgme.h')): + gpgme_h = os.path.join(include_dir, 'gpgme.h') + break if not gpgme_h: sys.exit('gpgme.h not found.')