Browse Source

more sync with trunk

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/trac397focused@3889 e5f2f494-b856-4b98-b285-d166d9295462
JINMEI Tatuya 14 years ago
parent
commit
2122248a51

+ 26 - 4
configure.ac

@@ -195,14 +195,15 @@ fi
 # specify the default warning flags in CXXFLAGS and let specific modules
 # "override" the default.
 
-# This may be used to try compiler flags.
+# This may be used to try linker flags.
 AC_DEFUN([BIND10_CXX_TRY_FLAG], [
   AC_MSG_CHECKING([whether $CXX supports $1])
 
   bind10_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS $1"
 
-  AC_COMPILE_IFELSE([ ], [bind10_cxx_flag=yes], [bind10_cxx_flag=no])
+  AC_LINK_IFELSE([int main(void){ return 0;} ],
+                 [bind10_cxx_flag=yes], [bind10_cxx_flag=no])
   CXXFLAGS="$bind10_save_CXXFLAGS"
 
   if test "x$bind10_cxx_flag" = "xyes"; then
@@ -367,13 +368,31 @@ CPPFLAGS_SAVES="$CPPFLAGS"
 LIBS_SAVES="$LIBS"
 CPPFLAGS="$BOOST_INCLUDES $CPPFLAGS $MULTITHREADING_FLAG"
 need_libboost_thread=0
+need_sunpro_workaround=0
 AC_TRY_LINK([
 #include <boost/thread.hpp>
 ],[
 boost::mutex m;
 ],
 	[ AC_MSG_RESULT(yes (without libboost_thread)) ],
-	[ LIBS=" $LIBS -lboost_thread"
+
+    # there is one specific problem with SunStudio 5.10
+    # where including boost/thread causes a compilation failure
+    # There is a workaround in boost but it checks the version not being 5.10
+    # This will probably be fixed in the future, in which case this
+    # is only a temporary workaround
+    [ AC_TRY_LINK([
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#include <boost/thread.hpp>
+],[
+boost::mutex m;
+],
+    [ AC_MSG_RESULT(yes (with SUNOS workaround))
+      need_sunpro_workaround=1 ],
+    	[ LIBS=" $LIBS -lboost_thread"
 	  AC_TRY_LINK([
 #include <boost/thread.hpp>
 ],[
@@ -385,10 +404,13 @@ boost::mutex m;
 		    AC_MSG_ERROR([boost::mutex cannot be linked in this build environment.
 Perhaps you are using an older version of Boost that requires libboost_thread for the mutex support, which does not appear to be available.
 You may want to check the availability of the library or to upgrade Boost.])
-   		  ])])
+   		  ])])])
 CPPFLAGS="$CPPFLAGS_SAVES"
 LIBS="$LIBS_SAVES"
 AM_CONDITIONAL(NEED_LIBBOOST_THREAD, test $need_libboost_thread = 1)
+if test $need_sunpro_workaround = 1; then
+    AC_DEFINE([NEED_SUNPRO_WORKAROUND], [], [Need boost sunstudio workaround])
+fi
 
 #
 # Check availability of gtest, which will be used for unit tests.

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

@@ -8,6 +8,7 @@ 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:$(abs_top_builddir)/src/lib/python \
+	BIND10_TEST_SOCKET_FILE=$(builddir)/test_msgq_socket.sock \
 	$(PYCOVERAGE) $(abs_srcdir)/$$pytest || exit ; \
 	done
 

+ 7 - 0
src/bin/msgq/tests/msgq_test.py

@@ -79,9 +79,14 @@ class TestSubscriptionManager(unittest.TestCase):
 
     def test_open_socket_default(self):
         env_var = None
+        orig_socket_file = None
         if "BIND10_MSGQ_SOCKET_FILE" in os.environ:
             env_var = os.environ["BIND10_MSGQ_SOCKET_FILE"]
             del os.environ["BIND10_MSGQ_SOCKET_FILE"]
+        # temporarily replace the class "default" not to be disrupted by
+        # any running BIND 10 instance.
+        if "BIND10_TEST_SOCKET_FILE" in os.environ:
+            MsgQ.SOCKET_FILE = os.environ["BIND10_TEST_SOCKET_FILE"]
         socket_file = MsgQ.SOCKET_FILE
         self.assertFalse(os.path.exists(socket_file))
         msgq = MsgQ();
@@ -96,6 +101,8 @@ class TestSubscriptionManager(unittest.TestCase):
             pass
         if env_var is not None:
             os.environ["BIND10_MSGQ_SOCKET_FILE"] = env_var
+        if orig_socket_file is not None:
+            MsgQ.SOCKET_FILE = orig_socket_file
 
     def test_open_socket_bad(self):
         msgq = MsgQ("/does/not/exist")

+ 2 - 0
src/lib/nsas/address_entry.cc

@@ -35,6 +35,8 @@
 #define __STDC_LIMIT_MACROS
 #include <stdint.h>
 
+#include <config.h>
+
 #include "address_entry.h"
 
 namespace isc {

+ 0 - 1
src/lib/nsas/hash_key.h

@@ -21,7 +21,6 @@
 
 #include <stdint.h>
 #include <string>
-#include <config.h>
 
 namespace isc {
 namespace nsas {

+ 12 - 2
src/lib/nsas/hash_table.h

@@ -17,6 +17,18 @@
 #ifndef __HASH_TABLE_H
 #define __HASH_TABLE_H
 
+// Workaround for a problem with boost and sunstudio 5.10
+// There is a version check in there that appears wrong,
+// which makes including boost/thread.hpp fail
+// This will probably be fixed in a future version of boost,
+// in which case this part can be removed then
+#ifdef NEED_SUNPRO_WORKAROUND
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#endif // NEED_SUNPRO_WORKAROUND
+
 #include <boost/shared_ptr.hpp>
 #include <boost/thread.hpp>
 #include <boost/interprocess/sync/sharable_lock.hpp>
@@ -24,8 +36,6 @@
 #include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
 #include <list>
 
-#include <config.h>
-
 #include "hash.h"
 #include "hash_key.h"
 

+ 12 - 2
src/lib/nsas/lru_list.h

@@ -20,13 +20,23 @@
 #include <list>
 #include <string>
 
+// Workaround for a problem with boost and sunstudio 5.10
+// There is a version check in there that appears wrong,
+// which makes including boost/thread.hpp fail
+// This will probably be fixed in a future version of boost,
+// in which case this part can be removed then
+#ifdef NEED_SUNPRO_WORKAROUND
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#endif // NEED_SUNPRO_WORKAROUND
+
 #include <boost/noncopyable.hpp>
 #include <boost/shared_ptr.hpp>
 #include <boost/thread.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
 
-#include <config.h>
-
 namespace isc {
 namespace nsas {
 

+ 2 - 0
src/lib/nsas/nameserver_address.cc

@@ -14,6 +14,8 @@
 
 // $id$
 
+#include <config.h>
+
 #include "nameserver_address.h"
 #include "nameserver_entry.h"
 

+ 15 - 0
src/lib/nsas/nameserver_address_store.cc

@@ -14,6 +14,21 @@
 
 // $Id$
 
+#include <config.h>
+
+// Workaround for a problem with boost and sunstudio 5.10
+// There is a version check in there that appears wrong,
+// which makes including boost/thread.hpp fail
+// This will probably be fixed in a future version of boost,
+// in which case this part can be removed then
+#ifdef NEED_SUNPRO_WORKAROUND
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#endif // NEED_SUNPRO_WORKAROUND
+
+
 #include <boost/thread.hpp>
 #include <boost/shared_ptr.hpp>
 #include <boost/foreach.hpp>

+ 2 - 0
src/lib/nsas/nameserver_entry.cc

@@ -14,6 +14,8 @@
 
 // $Id$
 
+#include <config.h>
+
 #include <algorithm>
 #include <functional>
 #include <cassert>

+ 12 - 0
src/lib/nsas/nameserver_entry.h

@@ -17,6 +17,18 @@
 #ifndef __NAMESERVER_ENTRY_H
 #define __NAMESERVER_ENTRY_H
 
+// Workaround for a problem with boost and sunstudio 5.10
+// There is a version check in there that appears wrong,
+// which makes including boost/thread.hpp fail
+// This will probably be fixed in a future version of boost,
+// in which case this part can be removed then
+#ifdef NEED_SUNPRO_WORKAROUND
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#endif // NEED_SUNPRO_WORKAROUND
+
 #include <string>
 #include <vector>
 #include <boost/thread.hpp>

+ 1 - 0
src/lib/nsas/tests/address_entry_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <limits.h>
 #include <gtest/gtest.h>

+ 1 - 0
src/lib/nsas/tests/fetchable_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $id$
+#include <config.h>
 
 #include "../fetchable.h"
 

+ 1 - 0
src/lib/nsas/tests/hash_deleter_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <algorithm>
 #include <string>

+ 1 - 0
src/lib/nsas/tests/hash_key_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <algorithm>
 #include <string>

+ 1 - 0
src/lib/nsas/tests/hash_table_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <gtest/gtest.h>
 #include <boost/shared_ptr.hpp>

+ 1 - 0
src/lib/nsas/tests/hash_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <algorithm>
 #include <string>

+ 1 - 0
src/lib/nsas/tests/lru_list_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <iostream>
 #include <algorithm>

+ 1 - 0
src/lib/nsas/tests/nameserver_address_store_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 /// \brief Test Deleter Objects
 ///

+ 1 - 0
src/lib/nsas/tests/nameserver_address_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <gtest/gtest.h>
 

+ 1 - 0
src/lib/nsas/tests/nameserver_entry_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <iostream>
 #include <algorithm>

+ 9 - 6
src/lib/nsas/tests/nsas_entry_compare_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <algorithm>
 #include <string>
@@ -37,16 +38,18 @@ class NsasEntryCompareTest : public ::testing::Test {
 
 // Test of the comparison
 TEST_F(NsasEntryCompareTest, Compare) {
+    std::string name1("test1");
+    std::string name2("test2");
 
     // Construct a couple of different objects
-    TestEntry entry1("test1", RRClass(42));
-    TestEntry entry2("test1", RRClass(24));
-    TestEntry entry3("test2", RRClass(42));
+    TestEntry entry1(name1, RRClass(42));
+    TestEntry entry2(name1, RRClass(24));
+    TestEntry entry3(name2, RRClass(42));
 
     // Create corresponding hash key objects
-    HashKey key1(entry1.getName(), entry1.getClass());
-    HashKey key2(entry2.getName(), entry2.getClass());
-    HashKey key3(entry3.getName(), entry3.getClass());
+    HashKey key1(name1, entry1.getClass());
+    HashKey key2(name1, entry2.getClass());
+    HashKey key3(name2, entry3.getClass());
     
     // Perform the comparison
     NsasEntryCompare<TestEntry> compare;

+ 1 - 0
src/lib/nsas/tests/random_number_generator_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <gtest/gtest.h>
 #include <boost/shared_ptr.hpp>

+ 1 - 0
src/lib/nsas/tests/run_unittests.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id: run_unittests.cc 3020 2010-09-26 03:47:26Z jinmei $
+#include <config.h>
 
 #include <gtest/gtest.h>
 

+ 2 - 1
src/lib/nsas/tests/zone_entry_unittest.cc

@@ -13,6 +13,7 @@
 // PERFORMANCE OF THIS SOFTWARE.
 
 // $Id$
+#include <config.h>
 
 #include <gtest/gtest.h>
 #include <boost/shared_ptr.hpp>
@@ -711,7 +712,7 @@ TEST_F(ZoneEntryTest, AddressSelection) {
     for (size_t i(0); i < 3; ++ i) {
         double mu = repeats * ps[i];
         double sigma = sqrt(repeats * ps[i] * (1 - ps[i]));
-        ASSERT_TRUE(fabs(counts[i] - mu < 4 * sigma));
+        ASSERT_TRUE(fabs(counts[i] - mu) < 4 * sigma);
     }
 
     // reset the environment

+ 2 - 0
src/lib/nsas/zone_entry.cc

@@ -14,6 +14,8 @@
 
 // $id$
 
+#include <config.h>
+
 #include "zone_entry.h"
 #include "address_request_callback.h"
 #include "nameserver_entry.h"

+ 12 - 0
src/lib/nsas/zone_entry.h

@@ -17,6 +17,18 @@
 #ifndef __ZONE_ENTRY_H
 #define __ZONE_ENTRY_H
 
+// Workaround for a problem with boost and sunstudio 5.10
+// There is a version check in there that appears wrong,
+// which makes including boost/thread.hpp fail
+// This will probably be fixed in a future version of boost,
+// in which case this part can be removed then
+#ifdef NEED_SUNPRO_WORKAROUND
+#if defined(__SUNPRO_CC) && __SUNPRO_CC == 0x5100
+#undef __SUNPRO_CC
+#define __SUNPRO_CC 0x5090
+#endif
+#endif // NEED_SUNPRO_WORKAROUND
+
 #include <string>
 #include <vector>
 #include <set>