diff --git a/CHANGES b/CHANGES index fe3c9c2970..de6ff35539 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +4698. [port] Add --with-python-install-dir configure option to allow + specifying a nonstandard installation directory for + Python modules. [RT #45407] + 4697. [bug] Restore workaround for Microsoft Windows TSIG hash computation bug. [RT #45854] diff --git a/bin/python/Makefile.in b/bin/python/Makefile.in index 18d2135b4c..cfc7c7fe65 100644 --- a/bin/python/Makefile.in +++ b/bin/python/Makefile.in @@ -53,9 +53,9 @@ install:: ${TARGETS} installdirs ${INSTALL_DATA} ${srcdir}/dnssec-keymgr.8 ${DESTDIR}${mandir}/man8 if test -n "${PYTHON}" ; then \ if test -n "${DESTDIR}" ; then \ - ${PYTHON} ${srcdir}/setup.py install --root=${DESTDIR} --prefix=${prefix} ; \ + ${PYTHON} ${srcdir}/setup.py install --root=${DESTDIR} --prefix=${prefix} @PYTHON_INSTALL_LIB@ ; \ else \ - ${PYTHON} ${srcdir}/setup.py install --prefix=${prefix} ; \ + ${PYTHON} ${srcdir}/setup.py install --prefix=${prefix} @PYTHON_INSTALL_LIB@ ; \ fi ; \ rm -rf build ; \ fi diff --git a/bin/python/dnssec-checkds.py.in b/bin/python/dnssec-checkds.py.in index 32e20026f6..420e862c43 100644 --- a/bin/python/dnssec-checkds.py.in +++ b/bin/python/dnssec-checkds.py.in @@ -12,8 +12,11 @@ import sys sys.path.insert(0, os.path.dirname(sys.argv[0])) if os.name != 'nt': - sys.path.insert(1, os.path.join('@prefix@', 'lib', - 'python' + sys.version[:3], 'site-packages')) + if '@PYTHON_INSTALL_DIR@': # value of --with-python-install-dir + sys.path.insert(1, '@PYTHON_INSTALL_DIR@') + else: + sys.path.insert(1, os.path.join('@prefix@', 'lib', + 'python' + sys.version[:3], 'site-packages')) import isc.checkds diff --git a/bin/python/dnssec-coverage.py.in b/bin/python/dnssec-coverage.py.in index 6b7dfa422d..ef546b1141 100644 --- a/bin/python/dnssec-coverage.py.in +++ b/bin/python/dnssec-coverage.py.in @@ -12,8 +12,11 @@ import sys sys.path.insert(0, os.path.dirname(sys.argv[0])) if os.name != 'nt': - sys.path.insert(1, os.path.join('@prefix@', 'lib', - 'python' + sys.version[:3], 'site-packages')) + if '@PYTHON_INSTALL_DIR@': # value of --with-python-install-dir + sys.path.insert(1, '@PYTHON_INSTALL_DIR@') + else: + sys.path.insert(1, os.path.join('@prefix@', 'lib', + 'python' + sys.version[:3], 'site-packages')) import isc.coverage diff --git a/bin/python/dnssec-keymgr.py.in b/bin/python/dnssec-keymgr.py.in index 1caa6922b4..82d1c8a18a 100644 --- a/bin/python/dnssec-keymgr.py.in +++ b/bin/python/dnssec-keymgr.py.in @@ -12,8 +12,11 @@ import sys sys.path.insert(0, os.path.dirname(sys.argv[0])) if os.name != 'nt': - sys.path.insert(1, os.path.join('@prefix@', 'lib', - 'python' + sys.version[:3], 'site-packages')) + if '@PYTHON_INSTALL_DIR@': # value of --with-python-install-dir + sys.path.insert(1, '@PYTHON_INSTALL_DIR@') + else: + sys.path.insert(1, os.path.join('@prefix@', 'lib', + 'python' + sys.version[:3], 'site-packages')) import isc.keymgr diff --git a/configure.in b/configure.in index f2fcf7ea7c..4d422998cf 100644 --- a/configure.in +++ b/configure.in @@ -212,6 +212,10 @@ AC_SUBST(PERL) AC_ARG_WITH(python, [ --with-python=PATH specify path to python interpreter], use_python="$withval", use_python="unspec") +AC_ARG_WITH(python-install-dir, + AC_HELP_STRING([--with-python-install-dir=PATH], + [installation directory for Python modules]), + use_python_install_dir="$withval", use_python_install_dir="unspec") python="python python3 python3.5 python3.4 python3.3 python3.2 python2 python2.7" @@ -268,8 +272,19 @@ case "$use_python" in unset PYTHON fi done - if test "X$PYTHON" = "X" + if test "X$PYTHON" != "X" then + case "$use_python_install_dir" in + unspec) + PYTHON_INSTALL_DIR="" + PYTHON_INSTALL_LIB="" + ;; + *) + PYTHON_INSTALL_DIR="$use_python_install_dir" + PYTHON_INSTALL_LIB="--install-lib=$use_python_install_dir" + ;; + esac + else AC_MSG_CHECKING([for python support]) case "$use_python" in unspec) @@ -327,6 +342,8 @@ AC_SUBST(CHECKDS) AC_SUBST(COVERAGE) AC_SUBST(KEYMGR) AC_SUBST(PYTHON_TOOLS) +AC_SUBST(PYTHON_INSTALL_DIR) +AC_SUBST(PYTHON_INSTALL_LIB) # # Special processing of paths depending on whether --prefix,