Parcourir la source

merge from trac223 for Trac #223:
lib/python: Add bind10_config.py module for paths and
possibly other configure-time variables. Allow some components
to find spec files in build tree when ran from source.


git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@2063 e5f2f494-b856-4b98-b285-d166d9295462

Jeremy C. Reed il y a 15 ans
Parent
commit
1de73788c7

+ 6 - 0
ChangeLog

@@ -1,5 +1,11 @@
 bind10-devel-20100602 released on June 2, 2010
 
+  51.   [build]         jelte
+	lib/python: Add bind10_config.py module for paths and
+	possibly other configure-time variables. Allow some components
+	to find spec files in build tree when ran from source.
+	(Trac #223)
+
   50.	[bug]		zhanglikun
 	bin/xfrin: a regression in xfrin: it can't communicate with 
 	a remote server. (Trac #218, svn r2038)

+ 1 - 1
configure.ac

@@ -448,7 +448,7 @@ AC_OUTPUT([src/bin/cfgmgr/b10-cfgmgr.py
            src/lib/python/isc/config/tests/config_test
            src/lib/python/isc/cc/tests/cc_test
            src/lib/dns/gen-rdatacode.py
-           src/lib/python/isc/cc/session.py
+           src/lib/python/bind10_config.py
            src/lib/dns/tests/testdata/gen-wiredata.py
            src/lib/cc/session_config.h.pre
           ], [

+ 2 - 2
src/bin/auth/main.cc

@@ -135,8 +135,8 @@ main(int argc, char* argv[]) {
     int ret = 0;
     try {
         string specfile;
-        if (getenv("B10_FROM_SOURCE")) {
-            specfile = string(getenv("B10_FROM_SOURCE")) +
+        if (getenv("B10_FROM_BUILD")) {
+            specfile = string(getenv("B10_FROM_BUILD")) +
                 "/src/bin/auth/auth.spec";
         } else {
             specfile = string(AUTH_SPECFILE_LOCATION);

+ 5 - 0
src/bin/bind10/run_bind10.sh.in

@@ -28,6 +28,11 @@ export PYTHONPATH
 
 B10_FROM_SOURCE=@abs_top_srcdir@
 export B10_FROM_SOURCE
+# TODO: We need to do this feature based (ie. no general from_source)
+# But right now we need a second one because some spec files are
+# generated and hence end up under builddir
+B10_FROM_BUILD=@abs_top_builddir@
+export B10_FROM_BUILD
 
 BIND10_MSGQ_SOCKET_FILE=@abs_top_builddir@/msgq_socket
 export BIND10_MSGQ_SOCKET_FILE

+ 1 - 1
src/bin/bind10/tests/Makefile.am

@@ -7,6 +7,6 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/bin/bind10 \
+	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_builddir)/src/bin/bind10 \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done

+ 1 - 1
src/bin/bindctl/tests/Makefile.am

@@ -7,6 +7,6 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_srcdir)/src/bin \
+	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_srcdir)/src/bin \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done

+ 1 - 1
src/bin/cmdctl/tests/Makefile.am

@@ -7,6 +7,6 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/bin/cmdctl \
+	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_builddir)/src/bin/cmdctl \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done

+ 0 - 2
src/bin/msgq/msgq.py.in

@@ -144,9 +144,7 @@ class MsgQ:
         if os.path.exists(self.socket_file):
             os.remove(self.socket_file)
         try:
-            print("[XX] SOCKET FILE: " + self.socket_file)
             self.listen_socket.bind(self.socket_file)
-            print("[XX] LISTENING ON SOCKET FILE: " + self.socket_file)
             self.listen_socket.listen(1024)
         except Exception as e:
             # remove the file again if something goes wrong

+ 1 - 1
src/bin/msgq/tests/Makefile.am

@@ -7,7 +7,7 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_builddir)/src/bin/msgq:$(abs_top_srcdir)/src/lib/python \
+	env PYTHONPATH=$(abs_top_builddir)/src/bin/msgq:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done
 

+ 1 - 1
src/bin/xfrin/tests/Makefile.am

@@ -9,7 +9,7 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_builddir)/src/lib/dns/.libs:$(abs_top_builddir)/src/bin/xfrin:$(abs_top_srcdir)/src/lib/python \
+	env PYTHONPATH=$(abs_top_builddir)/src/lib/dns/.libs:$(abs_top_builddir)/src/bin/xfrin:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done
 

+ 3 - 3
src/bin/xfrin/xfrin.py.in

@@ -35,11 +35,11 @@ except ImportError as e:
     # must keep running, so we warn about it and move forward.
     sys.stderr.write('[b10-xfrin] failed to import DNS module: %s\n' % str(e))
 
-# If B10_FROM_SOURCE is set in the environment, we use data files
+# If B10_FROM_BUILD is set in the environment, we use data files
 # from a directory relative to that, otherwise we use the ones
 # installed on the system
-if "B10_FROM_SOURCE" in os.environ:
-    SPECFILE_PATH = os.environ["B10_FROM_SOURCE"] + "/src/bin/xfrin"
+if "B10_FROM_BUILD" in os.environ:
+    SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/xfrin"
 else:
     PREFIX = "@prefix@"
     DATAROOTDIR = "@datarootdir@"

+ 1 - 1
src/bin/xfrout/tests/Makefile.am

@@ -9,7 +9,7 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_builddir)/src/bin/xfrout:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/dns/.libs:$(abs_top_builddir)/src/lib/xfr/.libs \
+	env PYTHONPATH=$(abs_top_builddir)/src/bin/xfrout:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python:$(abs_top_builddir)/src/lib/dns/.libs:$(abs_top_builddir)/src/lib/xfr/.libs \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done
 

+ 2 - 2
src/bin/xfrout/xfrout.py.in

@@ -37,8 +37,8 @@ except ImportError as e:
     # must keep running, so we warn about it and move forward.
     sys.stderr.write('[b10-xfrout] failed to import DNS or XFR module: %s\n' % str(e))
 
-if "B10_FROM_SOURCE" in os.environ:
-    SPECFILE_PATH = os.environ["B10_FROM_SOURCE"] + "/src/bin/xfrout"
+if "B10_FROM_BUILD" in os.environ:
+    SPECFILE_PATH = os.environ["B10_FROM_BUILD"] + "/src/bin/xfrout"
 else:
     PREFIX = "@prefix@"
     DATAROOTDIR = "@datarootdir@"

+ 11 - 0
src/lib/python/Makefile.am

@@ -1 +1,12 @@
 SUBDIRS = isc
+
+python_PYTHON =	bind10_config.py
+
+# Explicitly define DIST_COMMON so ${python_PYTHON} is not included
+# as we don't want the generated file included in distributed tarfile.
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in bind10_config.py.in
+
+# When setting DIST_COMMON, then need to add the .in file too.
+EXTRA_DIST =  bind10_config.py.in
+
+CLEANFILES = bind10_config.pyc

+ 23 - 0
src/lib/python/bind10_config.py.in

@@ -0,0 +1,23 @@
+# Copyright (C) 2010  Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# This is a base-level module intended to provide configure-time
+# variables to python scripts and libraries.
+import os
+
+BIND10_MSGQ_SOCKET_FILE = os.path.join("@localstatedir@",
+                                       "@PACKAGE_NAME@",
+                                       "msgq_socket").replace("${prefix}",
+                                                              "@prefix@")

+ 2 - 6
src/lib/python/isc/cc/session.py.in

@@ -18,6 +18,7 @@ import socket
 import struct
 import os
 import threading
+import bind10_config
 
 import isc.cc.message
 
@@ -26,11 +27,6 @@ class NetworkError(Exception): pass
 class SessionError(Exception): pass
 
 class Session:
-    SOCKET_FILE = os.path.join("@localstatedir@",
-                               "@PACKAGE_NAME@",
-                               "msgq_socket").replace("${prefix}",
-                                                      "@prefix@")
-
     def __init__(self, socket_file=None):
         self._socket = None
         self._lname = None
@@ -45,7 +41,7 @@ class Session:
             if "BIND10_MSGQ_SOCKET_FILE" in os.environ:
                 self.socket_file = os.environ["BIND10_MSGQ_SOCKET_FILE"]
             else:
-                self.socket_file = self.SOCKET_FILE
+                self.socket_file = bind10_config.BIND10_MSGQ_SOCKET_FILE
         else:
             self.socket_file = socket_file
         

+ 1 - 1
src/lib/python/isc/cc/tests/Makefile.am

@@ -10,6 +10,6 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_builddir)/src/lib/python:$(abs_top_srcdir)/src/lib/python \
+	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done

+ 1 - 1
src/lib/python/isc/config/tests/Makefile.am

@@ -9,7 +9,7 @@ PYCOVERAGE = $(PYTHON)
 check-local:
 	for pytest in $(PYTESTS) ; do \
 	echo Running test: $$pytest ; \
-	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python \
+	env PYTHONPATH=$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
 	CONFIG_TESTDATA_PATH=$(abs_top_srcdir)/src/lib/config/testdata \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest ; \
 	done