diff --git a/bin/python/Makefile.in b/bin/python/Makefile.in index 534fd72b96..3920a8072a 100644 --- a/bin/python/Makefile.in +++ b/bin/python/Makefile.in @@ -59,9 +59,11 @@ install:: ${TARGETS} installdirs ${INSTALL_DATA} ${srcdir}/dnssec-checkds.8 ${DESTDIR}${mandir}/man8 ${INSTALL_DATA} ${srcdir}/dnssec-coverage.8 ${DESTDIR}${mandir}/man8 ${INSTALL_DATA} ${srcdir}/dnssec-keymgr.8 ${DESTDIR}${mandir}/man8 + test -z "${PYTHON}" || ${PYTHON} setup.py install --prefix=${DESTDIR}${prefix} clean distclean:: rm -f ${TARGETS} + rm -rf build distclean:: rm -f dnssec-checkds.py dnssec-coverage.py dnssec-keymgr.py diff --git a/bin/python/isc/Makefile.in b/bin/python/isc/Makefile.in index 322c802f26..0bc39e42cf 100644 --- a/bin/python/isc/Makefile.in +++ b/bin/python/isc/Makefile.in @@ -24,9 +24,7 @@ PYTHON = @PYTHON@ PYSRCS = __init__.py dnskey.py eventlist.py keydict.py \ keyevent.py keyzone.py policy.py -TARGETS = parsetab.py parsetab.pyc \ - __init__.pyc dnskey.pyc eventlist.py keydict.py \ - keyevent.pyc keyzone.pyc policy.pyc +TARGETS = parsetab.py @BIND9_MAKE_RULES@ @@ -34,35 +32,15 @@ TARGETS = parsetab.py parsetab.pyc \ .py.pyc: $(PYTHON) -m compileall . -parsetab.py parsetab.pyc: policy.py +parsetab.py: policy.py $(PYTHON) policy.py parse /dev/null > /dev/null $(PYTHON) -m parsetab -installdirs: - $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}/isc - -install:: ${PYSRCS} installdirs - ${INSTALL_SCRIPT} __init__.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} __init__.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} dnskey.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} dnskey.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} eventlist.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} eventlist.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keydict.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keydict.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keyevent.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keyevent.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keyzone.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} keyzone.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} policy.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} policy.pyc ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} parsetab.py ${DESTDIR}${libdir} - ${INSTALL_SCRIPT} parsetab.pyc ${DESTDIR}${libdir} - check test: subdirs clean distclean:: rm -f *.pyc parser.out parsetab.py + rm -rf __pycache__ build distclean:: rm -Rf utils.py diff --git a/bin/python/isc/__init__.py b/bin/python/isc/__init__.py index f0770859ec..f408af24fb 100644 --- a/bin/python/isc/__init__.py +++ b/bin/python/isc/__init__.py @@ -14,8 +14,10 @@ # PERFORMANCE OF THIS SOFTWARE. ############################################################################ -__all__ = ['dnskey', 'eventlist', 'keydict', 'keyevent', 'keyseries', - 'keyzone', 'policy', 'parsetab', 'utils'] +__all__ = ['checkds', 'coverage', 'keymgr', 'dnskey', 'eventlist', + 'keydict', 'keyevent', 'keyseries', 'keyzone', 'policy', + 'parsetab', 'utils'] + from isc.dnskey import * from isc.eventlist import * from isc.keydict import * diff --git a/bin/python/isc/checkds.py b/bin/python/isc/checkds.py index 6be5e444b8..57e027a977 100644 --- a/bin/python/isc/checkds.py +++ b/bin/python/isc/checkds.py @@ -42,7 +42,7 @@ class SECRR: if not rrtext: raise Exception - fields = rrtext.split() + fields = rrtext.decode('ascii').split() if len(fields) < 7: raise Exception @@ -75,7 +75,8 @@ class SECRR: fields = fields[2:] if fields[0].upper() != self.rrtype: - raise Exception + raise Exception('%s does not match %s' % + (fields[0].upper(), self.rrtype)) self.keyid, self.keyalg, self.hashalg = map(int, fields[1:4]) self.digest = ''.join(fields[4:]).upper() diff --git a/bin/python/isc/coverage.py b/bin/python/isc/coverage.py index 01ceef2730..fe566275bc 100644 --- a/bin/python/isc/coverage.py +++ b/bin/python/isc/coverage.py @@ -27,9 +27,7 @@ from collections import defaultdict prog = 'dnssec-coverage' -from isc import * -from isc.utils import prefix - +from isc import dnskey, eventlist, keydict, keyevent, keyzone, utils ############################################################################ # print a fatal error and exit @@ -139,7 +137,8 @@ def set_path(command, default=None): def parse_args(): """Read command line arguments, set global 'args' structure""" compilezone = set_path('named-compilezone', - os.path.join(prefix('sbin'), 'named-compilezone')) + os.path.join(utils.prefix('sbin'), + 'named-compilezone')) parser = argparse.ArgumentParser(description=prog + ': checks future ' + 'DNSKEY coverage for a zone') diff --git a/bin/python/isc/dnskey.py b/bin/python/isc/dnskey.py index fa7e9c4a3d..744e239c1f 100644 --- a/bin/python/isc/dnskey.py +++ b/bin/python/isc/dnskey.py @@ -48,7 +48,7 @@ class dnskey: self.fromtuple(name, alg, keyid, keyttl) self._dir = directory or os.path.dirname(key) or '.' - key = os.path.basename(key).decode('ascii') + key = os.path.basename(key) (name, alg, keyid) = key.split('+') name = name[1:-1] alg = int(alg) @@ -204,11 +204,11 @@ class dnskey: raise Exception('unable to generate key: ' + str(stderr)) try: - keystr = stdout.splitlines()[0] + keystr = stdout.splitlines()[0].decode('ascii') newkey = dnskey(keystr, keys_dir, ttl) return newkey except Exception as e: - raise Exception('unable to generate key: %s' % str(e)) + raise Exception('unable to parse generated key: %s' % str(e)) def generate_successor(self, keygen_bin, **kwargs): quiet = kwargs.get('quiet', False) diff --git a/bin/python/isc/keymgr.py b/bin/python/isc/keymgr.py index 8aa6cceff8..154f388b12 100644 --- a/bin/python/isc/keymgr.py +++ b/bin/python/isc/keymgr.py @@ -20,8 +20,7 @@ from collections import defaultdict prog='dnssec-keymgr' -from isc import * -from isc.utils import prefix +from isc import dnskey, keydict, keyseries, policy, parsetab, utils ############################################################################ # print a fatal error and exit @@ -63,9 +62,9 @@ def parse_args(): """ keygen = set_path('dnssec-keygen', - os.path.join(prefix('sbin'), 'dnssec-keygen')) + os.path.join(utils.prefix('sbin'), 'dnssec-keygen')) settime = set_path('dnssec-settime', - os.path.join(prefix('sbin'), 'dnssec-settime')) + os.path.join(utils.prefix('sbin'), 'dnssec-settime')) parser = argparse.ArgumentParser(description=prog + ': schedule ' 'DNSSEC key rollovers according to a ' diff --git a/bin/python/isc/policy.py b/bin/python/isc/policy.py index 14fd8535da..2f90383890 100644 --- a/bin/python/isc/policy.py +++ b/bin/python/isc/policy.py @@ -101,8 +101,12 @@ class PolicyLex: t.lexer.skip(1) def __init__(self, **kwargs): + if 'maketrans' in dir(str): + trans = str.maketrans('_', '-') + else: + trans = maketrans('_', '-') for r in self.reserved: - self.reserved_map[r.lower().translate(str.maketrans('_', '-'))] = r + self.reserved_map[r.lower().translate(trans)] = r self.lexer = lex.lex(object=self, **kwargs) def test(self, text): diff --git a/bin/python/setup.py b/bin/python/setup.py new file mode 100644 index 0000000000..d7ea4a4d41 --- /dev/null +++ b/bin/python/setup.py @@ -0,0 +1,8 @@ +from distutils.core import setup +setup(name='isc', + version='2.0', + description='Python functions to support BIND utilities', + url='https://www.isc.org/bind', + author='Internet Systems Consortium, Inc', + license='ISC', + packages=['isc']) diff --git a/configure b/configure index 36097c774e..0f05532263 100755 --- a/configure +++ b/configure @@ -11893,11 +11893,12 @@ $as_echo_n "checking python module 'ply'... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } break - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } - unset ac_cv_path_PYTHON - unset PYTHON + unset ac_cv_path_PYTHON + unset PYTHON + fi done if test "X$PYTHON" = "X" then diff --git a/configure.in b/configure.in index 413fd26d17..394bc17448 100644 --- a/configure.in +++ b/configure.in @@ -258,10 +258,11 @@ case "$use_python" in if ${PYTHON:-false} -c "$testply"; then AC_MSG_RESULT([found]) break + else + AC_MSG_RESULT([not found]) + unset ac_cv_path_PYTHON + unset PYTHON fi - AC_MSG_RESULT([not found]) - unset ac_cv_path_PYTHON - unset PYTHON done if test "X$PYTHON" = "X" then