From: Michal 'vorner' Vaner Date: Tue, 12 Feb 2013 11:58:46 +0000 (+0100) Subject: [1924] Hack to allow finding generated python module X-Git-Tag: bind10-1.1.0beta1-release~104^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=22eaf88024420eb44ccfca5659ab1136871ce252;p=thirdparty%2Fkea.git [1924] Hack to allow finding generated python module Do a hack to make the tests run with separate build and source directories. The generated file ended up in a different directory than the rest of the modules and the __init__.py. It therefore didn't work. We use the same trick as log_messages, a forwarder module and addition to PYTHON_PATH to find it. Only the real file is installed. --- diff --git a/configure.ac b/configure.ac index 6d1a388f1a..8f7bd1c6dd 100644 --- a/configure.ac +++ b/configure.ac @@ -285,7 +285,7 @@ AC_SUBST(PYTHON_LOGMSGPKG_DIR) # lib/dns/python/.libs is necessary because __init__.py of isc package # automatically imports isc.datasrc, which then requires the DNS loadable # module. #2145 should eliminate the need for it. -COMMON_PYTHON_PATH="\$(abs_top_builddir)/src/lib/python/isc/log_messages:\$(abs_top_srcdir)/src/lib/python:\$(abs_top_builddir)/src/lib/python:\$(abs_top_builddir)/src/lib/dns/python/.libs" +COMMON_PYTHON_PATH="\$(abs_top_builddir)/src/lib/python/isc/log_messages:\$(abs_top_builddir)/src/lib/python/isc/cc:\$(abs_top_srcdir)/src/lib/python:\$(abs_top_builddir)/src/lib/python:\$(abs_top_builddir)/src/lib/dns/python/.libs" AC_SUBST(COMMON_PYTHON_PATH) # Check for python development environments @@ -1195,6 +1195,7 @@ AC_CONFIG_FILES([Makefile src/lib/python/isc/datasrc/tests/Makefile src/lib/python/isc/dns/Makefile src/lib/python/isc/cc/Makefile + src/lib/python/isc/cc/cc_generated/Makefile src/lib/python/isc/cc/tests/Makefile src/lib/python/isc/config/Makefile src/lib/python/isc/config/tests/Makefile diff --git a/src/bin/bind10/run_bind10.sh.in b/src/bin/bind10/run_bind10.sh.in index 17d2c53c86..463dafd127 100755 --- a/src/bin/bind10/run_bind10.sh.in +++ b/src/bin/bind10/run_bind10.sh.in @@ -23,7 +23,7 @@ BIND10_PATH=@abs_top_builddir@/src/bin/bind10 PATH=@abs_top_builddir@/src/bin/msgq:@abs_top_builddir@/src/bin/auth:@abs_top_builddir@/src/bin/resolver:@abs_top_builddir@/src/bin/cfgmgr:@abs_top_builddir@/src/bin/cmdctl:@abs_top_builddir@/src/bin/stats:@abs_top_builddir@/src/bin/xfrin:@abs_top_builddir@/src/bin/xfrout:@abs_top_builddir@/src/bin/zonemgr:@abs_top_builddir@/src/bin/ddns:@abs_top_builddir@/src/bin/dhcp6:@abs_top_builddir@/src/bin/sockcreator:$PATH export PATH -PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs +PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/bindctl/run_bindctl.sh.in b/src/bin/bindctl/run_bindctl.sh.in index 999d7eef5e..1d48e5a8c4 100755 --- a/src/bin/bindctl/run_bindctl.sh.in +++ b/src/bin/bindctl/run_bindctl.sh.in @@ -23,7 +23,7 @@ BINDCTL_PATH=@abs_top_builddir@/src/bin/bindctl # Note: lib/dns/python/.libs is necessary because __init__.py of isc package # automatically imports isc.datasrc, which then requires the DNS loadable # module. #2145 should eliminate the need for it. -PYTHONPATH=@abs_top_srcdir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/bin:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs +PYTHONPATH=@abs_top_srcdir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/bin:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/cmdctl/run_b10-cmdctl.sh.in b/src/bin/cmdctl/run_b10-cmdctl.sh.in index 7e632499db..7dcf1d5c74 100644 --- a/src/bin/cmdctl/run_b10-cmdctl.sh.in +++ b/src/bin/cmdctl/run_b10-cmdctl.sh.in @@ -19,7 +19,7 @@ PYTHON_EXEC=${PYTHON_EXEC:-@PYTHON@} export PYTHON_EXEC CMD_CTRLD_PATH=@abs_top_builddir@/src/bin/cmdctl -PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs +PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/dbutil/run_dbutil.sh.in b/src/bin/dbutil/run_dbutil.sh.in index f0c6dbd040..8ec5668aa8 100755 --- a/src/bin/dbutil/run_dbutil.sh.in +++ b/src/bin/dbutil/run_dbutil.sh.in @@ -23,7 +23,7 @@ DBUTIL_PATH=@abs_top_builddir@/src/bin/dbutil # Note: lib/dns/python/.libs is necessary because __init__.py of isc package # automatically imports isc.datasrc, which then requires the DNS loadable # module. #2145 should eliminate the need for it. -PYTHONPATH=@abs_top_srcdir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/bin:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs +PYTHONPATH=@abs_top_srcdir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/bin:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/loadzone/run_loadzone.sh.in b/src/bin/loadzone/run_loadzone.sh.in index b3d61d353f..178cf11297 100755 --- a/src/bin/loadzone/run_loadzone.sh.in +++ b/src/bin/loadzone/run_loadzone.sh.in @@ -18,7 +18,7 @@ PYTHON_EXEC=${PYTHON_EXEC:-@PYTHON@} export PYTHON_EXEC -PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs +PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/msgq/msgq.py.in b/src/bin/msgq/msgq.py.in index d5631f89f1..87e17092cf 100755 --- a/src/bin/msgq/msgq.py.in +++ b/src/bin/msgq/msgq.py.in @@ -33,7 +33,7 @@ import threading import isc.config.ccsession from optparse import OptionParser, OptionValueError import isc.util.process -from isc.util.common_defs import * +from isc.cc.proto_defs import * import isc.log from isc.log_messages.msgq_messages import * diff --git a/src/bin/msgq/run_msgq.sh.in b/src/bin/msgq/run_msgq.sh.in index 3ab4024718..c9fef643dc 100644 --- a/src/bin/msgq/run_msgq.sh.in +++ b/src/bin/msgq/run_msgq.sh.in @@ -20,7 +20,7 @@ export PYTHON_EXEC MYPATH_PATH=@abs_top_builddir@/src/bin/msgq -PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/log/.libs +PYTHONPATH=@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/log/.libs export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries diff --git a/src/bin/sysinfo/run_sysinfo.sh.in b/src/bin/sysinfo/run_sysinfo.sh.in index 6459c2d66b..869b11a870 100755 --- a/src/bin/sysinfo/run_sysinfo.sh.in +++ b/src/bin/sysinfo/run_sysinfo.sh.in @@ -24,7 +24,7 @@ SYSINFO_PATH=@abs_top_builddir@/src/bin/sysinfo # necessary dependency due to the automatic import in the isc package (its # __init__.py imports some other modules) # #2145 should eliminate the need for them. -PYTHONPATH=@abs_top_builddir@/src/lib/python:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/dns/python/.libs +PYTHONPATH=@abs_top_builddir@/src/lib/python:@abs_top_srcdir@/src/lib/python:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/dns/python/.libs export PYTHONPATH # Likewise, we need only because isc.log requires some loadable modules. diff --git a/src/lib/python/isc/cc/Makefile.am b/src/lib/python/isc/cc/Makefile.am index aa3d5652a7..56b58b3cfc 100644 --- a/src/lib/python/isc/cc/Makefile.am +++ b/src/lib/python/isc/cc/Makefile.am @@ -1,16 +1,7 @@ -SUBDIRS = . tests +SUBDIRS = . cc_generated tests python_PYTHON = __init__.py data.py session.py message.py -nodist_python_PYTHON = proto_defs.py -BUILT_SOURCES = proto_defs.py - -proto_defs.py: $(top_srcdir)/src/lib/cc/proto_defs.cc \ - $(top_srcdir)/src/lib/util/python/pythonize_constants.py - $(PYTHON) $(top_srcdir)/src/lib/util/python/pythonize_constants.py \ - $(top_srcdir)/src/lib/cc/proto_defs.cc $@ - - -pythondir = $(pyexecdir)/isc/cc +EXTRA_DIST = proto_defs.py CLEANDIRS = __pycache__ diff --git a/src/lib/python/isc/cc/cc_generated/Makefile.am b/src/lib/python/isc/cc/cc_generated/Makefile.am new file mode 100644 index 0000000000..0ec17efb2d --- /dev/null +++ b/src/lib/python/isc/cc/cc_generated/Makefile.am @@ -0,0 +1,30 @@ +# This makefile is a hack to enable tests to run with one module generated +# while the rest is just used. The generated file is created under build dir, +# not the src dir, which means it is not found when these are different. +# +# We have a forwarder module in the src dir and build the real one in different +# location. This is similar to whan happens in log_messages/work. We can't reuse +# the name `work`, since it would collide, so we use less generic name. + +nodist_python_PYTHON = proto_defs.py +BUILT_SOURCES = proto_defs.py __init__.py +noinst_SCRIPTS = __init__.py + +proto_defs.py: $(top_srcdir)/src/lib/cc/proto_defs.cc \ + $(top_srcdir)/src/lib/util/python/pythonize_constants.py + $(PYTHON) $(top_srcdir)/src/lib/util/python/pythonize_constants.py \ + $(top_srcdir)/src/lib/cc/proto_defs.cc $@ + +# We need to create an __init__.py, so it is recognized as module. +# But it may be empty. +__init__.py: + touch $@ + +pythondir = $(pyexecdir)/isc/cc + +CLEANDIRS = __pycache__ + +CLEANFILES = proto_defs.py __init__.py + +clean-local: + rm -rf $(CLEANDIRS) diff --git a/src/lib/python/isc/cc/proto_defs.py b/src/lib/python/isc/cc/proto_defs.py new file mode 100644 index 0000000000..6044a36457 --- /dev/null +++ b/src/lib/python/isc/cc/proto_defs.py @@ -0,0 +1,2 @@ +# Forwarder module. Look into cc_generated/Makefile.am for details. +from cc_generated.proto_defs import * diff --git a/tests/lettuce/setup_intree_bind10.sh.in b/tests/lettuce/setup_intree_bind10.sh.in index 4ccf6cadaa..63b90ffd1a 100644 --- a/tests/lettuce/setup_intree_bind10.sh.in +++ b/tests/lettuce/setup_intree_bind10.sh.in @@ -23,7 +23,7 @@ BIND10_PATH=@abs_top_builddir@/src/bin/bind10 PATH=@abs_top_builddir@/src/bin/bind10:@abs_top_builddir@/src/bin/bindctl:@abs_top_builddir@/src/bin/msgq:@abs_top_builddir@/src/bin/auth:@abs_top_builddir@/src/bin/resolver:@abs_top_builddir@/src/bin/cfgmgr:@abs_top_builddir@/src/bin/cmdctl:@abs_top_builddir@/src/bin/stats:@abs_top_builddir@/src/bin/xfrin:@abs_top_builddir@/src/bin/xfrout:@abs_top_builddir@/src/bin/zonemgr:@abs_top_builddir@/src/bin/ddns:@abs_top_builddir@/src/bin/dhcp6:@abs_top_builddir@/src/bin/sockcreator:$PATH export PATH -PYTHONPATH=@abs_top_builddir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs:$PYTHONPATH +PYTHONPATH=@abs_top_builddir@/src/bin:@abs_top_builddir@/src/lib/python/isc/log_messages:@abs_top_builddir@/src/lib/python/isc/cc:@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs:@abs_top_builddir@/src/lib/util/io/.libs:@abs_top_builddir@/src/lib/python/isc/config:@abs_top_builddir@/src/lib/python/isc/acl/.libs:@abs_top_builddir@/src/lib/python/isc/datasrc/.libs:$PYTHONPATH export PYTHONPATH # If necessary (rare cases), explicitly specify paths to dynamic libraries