Просмотр исходного кода

Merge from trunk.

[SVN r42243]
Daniel James 18 лет назад
Родитель
Сommit
9c2c991024

+ 1 - 1
libs/asio

@@ -1 +1 @@
-Subproject commit 8cf596dd58af7b784eec4e919e8c1fe56b8ffee2
+Subproject commit cf9e0d5d293956700b0dd0520eaa6bf401b2033e

+ 1 - 1
libs/bimap

@@ -1 +1 @@
-Subproject commit d7c04131391d103c03ea405025a2a1920f8efc08
+Subproject commit 9c79b4af17860bfe550ee641af9f0b1acd9fb49a

+ 1 - 1
libs/circular_buffer

@@ -1 +1 @@
-Subproject commit 110096854703e78f7e49352b43be36ba7252a833
+Subproject commit a74f2d445b7fe53fedd8d76ceabd6840cc7d440d

+ 1 - 1
libs/concept_check

@@ -1 +1 @@
-Subproject commit 8c7cca55bb453745d006ffe7cc5d9d68e5f57c4a
+Subproject commit 56fbc6a844e135c201e5fb17b6b1e2247c884d49

+ 1 - 1
libs/config

@@ -1 +1 @@
-Subproject commit f35c3d6d4178de0724f5e917abeb25b036f6297a
+Subproject commit 67139210bdacaad7070f5586da0833a34159ac1f

+ 1 - 1
libs/conversion

@@ -1 +1 @@
-Subproject commit 07a4656255d64e6212ca8d54d09cbe90aa8ba90d
+Subproject commit 7b9faca0b476526d64b8f724056d8b65c079203e

+ 1 - 1
libs/format

@@ -1 +1 @@
-Subproject commit 32c8d99076cb7cb4dac3e2cd6f326a6f5aaa3b30
+Subproject commit 9c7494b879474155a5bbe76b8d4141e1ee0d57c3

+ 1 - 1
libs/functional

@@ -1 +1 @@
-Subproject commit 27122781412508717106e6e7a6a5910384ae4df8
+Subproject commit c33483eeba560cea051bddaff2dc116e93ad8f2b

+ 1 - 1
libs/fusion

@@ -1 +1 @@
-Subproject commit 47a48f42942f85ab861cd94f82ea5e7e516218fb
+Subproject commit 87586de9815e09e9b2dec9d7bccd22ed40f965e5

+ 1 - 1
libs/gil

@@ -1 +1 @@
-Subproject commit 8f54e7b05a85bb8c095c39e1ab7cdba30944bc69
+Subproject commit 5460f9643df3867554f6fefff154764cbf1de9db

+ 1 - 1
libs/intrusive

@@ -1 +1 @@
-Subproject commit aea7064e021ed5f06cbd2cbdf60d3997056955e8
+Subproject commit 6973b139374bf0ccdb4fdc1a11e794d4a948527d

+ 1 - 1
libs/io

@@ -1 +1 @@
-Subproject commit f4c0cb9cb15d1037f0846687208a4bb2fee4e00e
+Subproject commit 8e7118b87ac6bd4d15b8b03693a8fa462d1fdf85

+ 1 - 1
libs/iostreams

@@ -1 +1 @@
-Subproject commit 16d64d481368fa91c7dfac93a21ef0226ec9c615
+Subproject commit 0ffb5133898b5a43085197215b4332c18938205d

+ 1 - 1
libs/iterator

@@ -1 +1 @@
-Subproject commit b4ee8ac96dfbc6a081d9963452bbace356db96b9
+Subproject commit c73e4d23a7bdcc02ec60815012c80fbdde6bb83d

+ 13 - 7
libs/maintainers.txt

@@ -1,3 +1,13 @@
+# Copyright (C) 2005, 2007  Douglas Gregor <doug.gregor -at- gmail.com>
+# Distributed under the Boost Software License, Version 1.0. 
+# See www.boost.org/LICENSE_1_0.txt
+#
+# This file lists the names and e-mail addresses of the maintainers
+# of each Boost library, and is used by the regression-reporting 
+# scripts to direct e-mail related to those libraries to the 
+# maintainers. When making changes to this file, please be careful
+# to closely follow the format of the library.
+
 algorithm/minmax      Herve Bronnimann <hbr -at- poly.edu>
 algorithm/string      Pavol Droba <droba -at- topmail.sk>
 any                   Alexander Nasonov <alexander.nasonov -at- gmail.com>
@@ -20,8 +30,8 @@ format                Samuel Krempp <krempp -at- crans.ens-cachan.fr>
 function              Douglas Gregor <dgregor -at- cs.indiana.edu>
 functional
 functional/hash       Daniel James <daniel_james -at- fmail.co.uk>
-fusion                Joel de Guzman <joel -at- boost-consulting.com>, Dan Marsden <danmarsden -at- yahoo.co.uk>
-function_types        Tobias Schwinger tschwinger -at- isonews2.com
+fusion                Joel de Guzman <joel -at- boost-consulting.com>, Dan Marsden <danmarsden -at- yahoo.co.uk>, Tobias Schwinger <tschwinger -at- isonews2.com>
+function_types        Tobias Schwinger <tschwinger -at- isonews2.com>
 gil                   Lubomir Bourdev <lbourdev -at- adobe.com>, Hailin Jin <hljin -at- adobe.com>
 graph                 Douglas Gregor <dgregor -at- cs.indiana.edu>
 integer               Daryle Walker <darylew -at- hotmail.com>
@@ -54,7 +64,7 @@ regex                 John Maddock <john -at- johnmaddock.co.uk>
 serialization         Robert Ramey <ramey -at- rrsd.com>
 signals               Douglas Gregor <dgregor -at- cs.indiana.edu>
 smart_ptr             Beman Dawes <bdawes -at- acm.org>, Peter Dimov <pdimov -at- mmltd.net>
-spirit                Spirit Development <spirit-devel -at- lists.sourceforge.net>
+spirit                Joel de Guzman <joel -at- boost-consulting.com>, Hartmut Kaiser <hartmut.kaiser -at- gmail.com>
 statechart            Andreas Huber <ahd6974-boostorg -at- yahoo.com>
 static_assert         John Maddock <john -at- johnmaddock.co.uk>
 test                  Gennadiy Rozental <gennadiy.rozental -at- thomson.com>
@@ -71,7 +81,3 @@ variant               Eric Friedman <ericbrandon -at- gmail.com>
 wave                  Hartmut Kaiser <hartmut.kaiser -at- gmail.com>
 xpressive             Eric Niebler <eric -at- boost-consulting.com>
 
-© Copyright Douglas Gregor 2005
-Distributed under the Boost Software License, Version 1.0. See www.boost.org/LICENSE_1_0.txt
-
-

+ 1 - 1
libs/math

@@ -1 +1 @@
-Subproject commit e301c168d3f1a1c1d2731dd4636052ad6b519aca
+Subproject commit 588678cf49368e08a01dcc33898884d2c885996a

+ 1 - 1
libs/numeric/interval

@@ -1 +1 @@
-Subproject commit f7091080f20472cdadb55d460c6f451db59e86f3
+Subproject commit 6d52ad91234c2b3f005ef65a5aa9e05475157bef

+ 37 - 5
libs/platform_maintainers.txt

@@ -1,6 +1,38 @@
-gcc-3_3-darwin	Noel Belcourt <kbelco -at- sandia.gov>
-cw-9_5-darwin	Noel Belcourt <kbelco -at- sandia.gov>
-hp_cxx-*_tru64  Markus Schöpflin <markus.schoepflin -at- comsoft.de>
+# Copyright (C) 2005, 2007  Douglas Gregor <doug.gregor -at- gmail.com>
+# Distributed under the Boost Software License, Version 1.0. 
+# See www.boost.org/LICENSE_1_0.txt
+#
+# This file lists the names and e-mail addresses of the maintainers
+# of each Boost testing platform , and is used by the regression-
+# reporting scripts to direct e-mail related to those platforms to the 
+# maintainers. When making changes to this file, please be careful
+# to closely follow the format of the library.
+#
+# The format of each line is:
+#
+# Runner      Platform      Email addresses
 
-© Copyright Douglas Gregor 2005
-Distributed under the Boost Software License, Version 1.0. See www.boost.org/LICENSE_1_0.txt
+Sandia-darwin-intel    darwin-4.0.1	       Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-darwin-ppc      darwin-4.0.1	       Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-intel           intel-linux-8.1         Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-intel           intel-linux-9.0         Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-intel           intel-linux-9.1         Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-gcc             gcc-4.2.1               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-gcc             gcc-3.4.3               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-gcc             gcc-4.0.1               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-gcc-64          gcc-4.2.1               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-gcc-64          gcc-4.1.1               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-sun             gcc-3.4.6               Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-sun             sun-5.7                 Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-sun             sun-5.8                 Noel Belcourt <kbelco -at- sandia.gov>
+Sandia-sun             sun-5.9                 Noel Belcourt <kbelco -at- sandia.gov>
+"Martin Wille x86_64"  gcc-4.2.1_linux_x86_64  Martin Wille <mw8329 -at- yahoo.com.au>
+"Martin Wille x86_64"  gcc-3.4.6_linux_x86_64  Martin Wille <mw8329 -at- yahoo.com.au>
+Huang-WinXP-x86_32     intel-vc8-win-10.0      Sean Huang <huangsean -at- hotmail.com>
+Huang-WinXP-x86_32     msvc-8.0                Sean Huang <huangsean -at- hotmail.com>
+Huang-Vista-x64        msvc-8.0_64             Sean Huang <huangsean -at- hotmail.com>
+Huang-Vista-x64        intel-vc8-win-10.0_x86_64  Sean Huang <huangsean -at- hotmail.com>
+Huang-Vista-x64        msvc-8.0_x86_64         Sean Huang <huangsean -at- hotmail.com>
+IBM_Canada_Ltd         vacpp                   Chris Cambly <ccambly -at- ca.ibm.com>
+RW_WinXP_VC            msvc-7.1                Richard Webb <richard.webb -at- boldonjames.com>
+RW_WinXP_VC            msvc-9.0                Richard Webb <richard.webb -at- boldonjames.com>

+ 1 - 1
libs/ptr_container

@@ -1 +1 @@
-Subproject commit 7abbe5b0679783196ba384ceb33c31595b18300e
+Subproject commit fd147019d0e77631287ce3f80ec3d9505909cb81

+ 1 - 1
libs/python

@@ -1 +1 @@
-Subproject commit cb1b967c3958a8d33ae48d12ab3354c1163344bd
+Subproject commit 2b1967c72d4ecca0014cd5ff43d9fd5e43473a20

+ 1 - 1
libs/random

@@ -1 +1 @@
-Subproject commit 0bf8a490b9c19f0b571061cb232e96a5c2a48bfa
+Subproject commit 5fe2eee51b3831de81ea8dc9e8ca72c53471d205

+ 1 - 1
libs/regex

@@ -1 +1 @@
-Subproject commit 3eda3d3108aefeccb2923a4c335e4d354286517e
+Subproject commit e0cf2f4358bbfc7a3f18faf5e6cb3e58b7739661

+ 1 - 1
libs/test

@@ -1 +1 @@
-Subproject commit 352d02cc9ec398942f03728373345e1c9f9bc457
+Subproject commit b42028d82e79c8986d317444e0e18860373b51d8

+ 1 - 1
libs/thread

@@ -1 +1 @@
-Subproject commit 1b56fe63d1873fc477fde19f5831d06075cdf183
+Subproject commit 5af025cdceb803990432f37b44b811c7056f215c

+ 1 - 1
libs/tr1

@@ -1 +1 @@
-Subproject commit dbbf7db700c10ff25d8659130893ded7903ab745
+Subproject commit f7ca2ff6e85fc38db2c94178f6ced016b80bcc87

+ 1 - 1
libs/type_traits

@@ -1 +1 @@
-Subproject commit d50176adc63b491a3654c4ed6e43b1c2e8ccd6e3
+Subproject commit d328f6f0c04a72eeaa3064cf1eca603ea081c300

+ 1 - 1
libs/utility

@@ -1 +1 @@
-Subproject commit 1a4aa43cad551ad3dd36da6014ba5210e0bcae77
+Subproject commit e76c779b8c5032503e7d8e12167018491d99bb10

+ 66 - 63
status/explicit-failures-markup.xml

@@ -15,11 +15,10 @@
         - http://syseng.nist.gov/b2bTestbed/projects/xmlvalidation/instance_validation.html
         - http://xmlvalidation.com/
 
-     With both tools you need to provide both the explicit-failures-markup.xml
-     file as the XML document and the explicit-failures.xsd as the schema
-     document. Use the browse buttons to select them from your local hard
-     drive.
-
+    With both tools you need to provide both the explicit-failures-markup.xml
+    file as the XML document and the explicit-failures.xsd as the schema
+    document. Use the browse buttons to select them from your local hard
+    drive.
     -->
 
     <!-- /////////////// Toolsets /////////////// -->
@@ -31,6 +30,7 @@
     <mark-toolset name="gcc-4.2.1_linux_x86_64" status="required"/>
     <mark-toolset name="intel-linux-9.0" status="required"/>
     <mark-toolset name="intel-vc8-win-10.0" status="required"/>
+    <mark-toolset name="intel-win-10.0" status="required"/>
     <mark-toolset name="msvc-7.1" status="required"/>
     <mark-toolset name="msvc-8.0" status="required"/>
     <mark-toolset name="msvc-8.0_64" status="required"/>
@@ -336,9 +336,14 @@
             <note refid="39" author="Boris Gubenko"/>
         </mark-expected-failures>
         <mark-expected-failures>
-                <test name="test_bimap_serialization"/>
-                <toolset name="gcc-mingw-3.4.5"/>
-                <note author="Matias Capeletto">Compiler bug.</note>
+            <test name="test_bimap_serialization"/>
+            <toolset name="gcc-mingw-3.4.5"/>
+            <note author="Matias Capeletto">Compiler bug.</note>
+        </mark-expected-failures>
+        <mark-expected-failures>
+            <test name="test_bimap_property_map"/>
+            <toolset name="gcc-3.4.6_linux_x86_64"/>
+            <note author="Matias Capeletto">Time out.</note>
         </mark-expected-failures>
     </library>
 
@@ -443,6 +448,16 @@
                 <note author="Jeremy Siek" refid="1"/>
             </mark-failure>
         </test>
+        <test name="stl_concept_check">
+          <mark-failure>
+            <toolset name="hp_cxx*"/>
+            <note author="Markus Schoepflin" date="09 Dec 2007">
+              This version of the Rogue Wave library fails to provide all
+              needed addition operators for the iterator type and the
+              difference type of std::deque.
+            </note>
+          </mark-failure>
+        </test>
     </library>
 
     <!-- config -->
@@ -1520,8 +1535,8 @@
             </note>
         </mark-expected-failures>
         <mark-expected-failures>
-            <test name="interfaces_example"/>
-            <toolset name="msvc-7.1"/>
+            <test name="interface_example"/>
+            <toolset name="msvc-7.1*"/>
             <note author="Tobias Schwinger">
               Overload selection does not work in some assignment contexts with this compiler.
             </note>
@@ -1778,6 +1793,8 @@
             <toolset name="vacpp*"/>
             <toolset name="pathscale*"/>
             <toolset name="intel-linux-8.*"/>
+            <toolset name="gcc-3.4.2_hpux_pa_risc"/>
+            <toolset name="gcc-3.4.6_linux_ia64"/>
             <note author="Ion Gazta&#241;aga">
                 The compiler does not support features that are essential for the library.
             </note>
@@ -1807,6 +1824,8 @@
         <mark-expected-failures>
             <test name="doc_offset_ptr" />
             <toolset name="acc"/>
+            <toolset name="gcc-3.4.2_hpux_pa_risc"/>
+            <toolset name="gcc-3.4.6_linux_ia64"/>
             <note author="Ion Gazta&#241;aga">
                 The compiler is not supported by Interprocess.
             </note>
@@ -2320,6 +2339,8 @@ for more information.
             <test name="optional_test_ref"/>
             <toolset name="darwin-4.0.1"/>
             <toolset name="gcc-mingw-3.4.5"/>
+            <toolset name="gcc-3.4.2_hpux_pa_risc"/>
+            <toolset name="gcc-3.4.6_linux_ia64"/>
             <toolset name="gcc-4.2.1*"/>
             <toolset name="gcc-4.1.2_sunos_i86pc"/>
         		<note author="Fernando Cacciola" refid="2"/>
@@ -4397,26 +4418,26 @@ for more information.
         </mark-expected-failures>
         <mark-expected-failures reason="?">
             <test name="TransitionTest*"/>
-            <toolset name="intel-linux*"/>
-            <toolset name="pathscale*"/>
+            <toolset name="intel-linux-9.1"/>
             <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures reason="?">
-          <test name="TransitionTest*"/>
-          <test name="InvalidTransitionTest1Relaxed"/>
-          <test name="StopWatchExample"/>
-          <toolset name="vacpp-8.0"/>
-          <note author="Andreas Huber" refid="29"/>
+            <test name="TransitionTestBoth"/>
+            <test name="TransitionTestNative"/>
+            <toolset name="pathscale-3.1"/>
+            <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures reason="?">
-            <test name="CustomReactionTest*"/>
-            <toolset name="acc*"/>
+            <test name="TransitionTest*"/>
+            <test name="InvalidTransitionTest1Relaxed"/>
+            <test name="StopWatchExample"/>
+            <toolset name="vacpp-8.0"/>
             <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures reason="?">
-          <test name="HistoryTestRelaxed"/>
-          <toolset name="intel-linux-9.1"/>
-          <note author="Andreas Huber" refid="29"/>
+            <test name="CustomReactionTest*"/>
+            <toolset name="acc*"/>
+            <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="StopWatch*"/>
@@ -4541,11 +4562,13 @@ for more information.
         <mark-expected-failures>
             <test name="prg_exec_fail2"/>
             <toolset name="darwin-4.0.1"/>
+            <toolset name="gcc-3.4.2_hpux_pa_risc"/>
+            <toolset name="gcc-3.4.6_linux_ia64"/>
             <note author="Vladimir Prus">
               The test verifies that Boost.Test detects division by
-              zero. Division by zero has an undefined result
-              on PowerPC processors. The compiler has to emit extra
-              code to assert that the divisor isn't zero.
+              zero. It fails on PowerPC, PA-RISC and Linux ia64. On PowerPC
+              processors, division has an undefined result. The compiler
+              has to emit extra code to assert that the divisor isn't zero.
 
               Compiler options -fno-trapping-math and -fnon-call-exceptions
               might affect this. However, in default configuration
@@ -4556,6 +4579,7 @@ for more information.
         <mark-expected-failures>
             <test name="prg_exec_fail3"/>
             <toolset name="cw-9.4"/>
+            <toolset name="gcc-3.4.6_linux_ia64"/>
             <note author="Vladimir Prus">
               The test appears to test that failed assertion result
               in non-zero exit status.  That seems to be not the
@@ -4616,7 +4640,6 @@ for more information.
             <test name="test_tss_lib"/>
             <toolset name="borland-*"/>
             <toolset name="cw-9.4"/>
-            <toolset name="gcc-mingw*"/>
             <note author="Roland Schwarz" date="2006-12-14">
                 When a thread ends, tss data needs to be cleaned up. This process
                 is mostly automatic. When threads are launched by the Boost.Thread API
@@ -4631,6 +4654,23 @@ for more information.
                 finalization.
             </note>
         </mark-expected-failures>
+        <mark-expected-failures>
+            <test name="test_thread_move"/>
+            <test name="test_thread_move_lib"/>
+            <toolset name="borland-*"/>
+            <note author="Anthony Williams" date="2007-12-14">
+The Borland compiler fails to bind rvalues to the thread move constructor,
+choosing instead to bind them to the private (and unimplemented) copy constructor.
+            </note>
+        </mark-expected-failures>
+        <mark-expected-failures>
+            <test name="test_hardware_concurrency"/>
+            <test name="test_hardware_concurrency_lib"/>
+            <toolset name="*tru64"/>
+            <note author="Anthony Williams" date="2007-12-21">
+boost::thread::hardware_concurrency is not implemented and always returns 0 on this platform.
+            </note>
+        </mark-expected-failures>
     </library>
 
     <!-- tuple -->
@@ -5457,43 +5497,6 @@ for more information.
                 versions of the compiler (VC 7.1 and greater).
             </note>
         </mark-expected-failures>
-        <mark-expected-failures>
-            <test name="value_init_test"/>
-            <toolset name="borland-5.6*"/>
-            <toolset name="borland-5.8*"/>
-            <toolset name="borland-5.9*"/>
-            <note author="Niels Dekker">
-                This test typically fails on Borland C++, because of an issue described by
-                <a href="http://svn.boost.org/trac/boost/ticket/1459">
-                ticket #1459, "value_initialized leaves data uninitialized,
-                when using Borland"</a>. The issue is caused by a 
-                compiler bug, reported at the website of Codegear/Borland:
-                <a href="http://qc.codegear.com/wc/qcmain.aspx?d=51854">
-                Report #51854, "Value-initialization: POD struct
-                should be zero-initialized"</a>.
-            </note>
-        </mark-expected-failures>
-        <mark-expected-failures>
-            <test name="value_init_test"/>
-            <toolset name="gcc-3.3*"/>
-            <toolset name="gcc-3.4*"/>
-            <toolset name="gcc-4.0*"/>
-            <toolset name="gcc-4.1*"/>
-            <toolset name="gcc-4.2*"/>
-            <toolset name="gcc-mingw-3.4*"/>
-            <note author="Niels Dekker">
-                This test typically fails on GCC, because of an issue described by
-                <a href="http://svn.boost.org/trac/boost/ticket/1491">
-                ticket #1491, "value_initialized leaves data uninitialized,
-                when using GCC"</a>. The issue is caused by some GCC compiler bugs:  
-                <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111">
-                Value-initialization of POD base class doesn't initialize members</a>,
-                reported by Jonathan Wakely, and
-                <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916">
-                Default constructor fails to initialize array members</a>,
-                reported by Michael Elizabeth Chastain. 
-            </note>
-        </mark-expected-failures>
         <mark-expected-failures>
             <test name="operators_test"/>
             <toolset name="gcc-3.4.5_linux_x86_64"/>

+ 1 - 1
tools/boostbook

@@ -1 +1 @@
-Subproject commit 35f265d826b630bbba08b8955cd52c512ed028ba
+Subproject commit 077a5af15f047efe144b18605fc996aa70aa5a8a

+ 1 - 1
tools/build

@@ -1 +1 @@
-Subproject commit c5ca6c051fc5768731d9bf48738c040a2f778aa6
+Subproject commit ce154631960b3e8852fb22173e8b47c324cd728c

+ 240 - 31
tools/regression/xsl_reports/email_maintainers.py

@@ -16,6 +16,7 @@ import sys
 
 report_author = "Douglas Gregor <dgregor@osl.iu.edu>"
 boost_dev_list = "Boost Developer List <boost@lists.boost.org>"
+boost_testing_list = "Boost Testing List <boost-testing@lists.boost.org>"
 
 def sorted_keys( dict ):
     result = dict.keys()
@@ -30,6 +31,7 @@ class Platform:
     def __init__(self, name):
         self.name = name
         self.failures = list()
+        self.maintainers = list()
         return
 
     def addFailure(self, failure):
@@ -39,6 +41,13 @@ class Platform:
     def isBroken(self):
         return len(self.failures) > 300
 
+    def addMaintainer(self, maintainer):
+        """
+        Add a new maintainer for this platform.
+        """
+        self.maintainers.append(maintainer)
+        return
+
 class Failure:
     """
     A single test case failure in the report.
@@ -200,6 +209,67 @@ There are failures in these libraries you maintain:
 
         return message
 
+class PlatformMaintainer:
+    """
+    Information about the platform maintainer of a library
+    """
+    def __init__(self, name, email):
+        self.name = name
+        self.email = email
+        self.platforms = list()
+        return
+
+    def addPlatform(self, runner, platform):
+        self.platforms.append(platform)
+        return
+
+    def composeEmail(self, report):
+        """
+        Composes an e-mail to this platform maintainer if one or more of
+        the platforms s/he maintains has a large number of failures.
+        Returns the e-mail text if a message needs to be sent, or None
+        otherwise.
+        """
+
+        # Determine if we need to send a message to this developer.
+        requires_message = False
+        for platform in self.platforms:
+            if platform.isBroken():
+                requires_message = True
+                break
+
+        if not requires_message:
+            return None
+
+        # Build the message header
+        message = """From: Douglas Gregor <dgregor@osl.iu.edu>
+To: """
+        message += self.name + ' <' + self.email + '>'
+        message += """
+Reply-To: boost@lists.boost.org
+Subject: Large number of Boost failures on a platform you maintain as of """
+        message += str(datetime.date.today()) + " [" + report.branch + "]"
+        message += """
+
+You are receiving this report because one or more of the testing
+platforms that you maintain has a large number of Boost failures that
+are not accounted for. A full version of the report is sent to the
+Boost developer's mailing list.
+
+Detailed report:
+"""
+        message += '  ' + report.url + """
+
+The following platforms have a large number of failures:
+"""
+
+        for platform in self.platforms:
+            if platform.isBroken():
+                message += ('  ' + platform.name + ' ('
+                            + str(len(platform.failures))  + ' failures)\n')
+
+        return message
+    
 class Report:
     """
     The complete report of all failing test cases.
@@ -211,6 +281,7 @@ class Report:
         self.libraries = dict()
         self.platforms = dict()
         self.maintainers = dict()
+        self.platform_maintainers = dict()
         return
 
     def getPlatform(self, name):
@@ -233,6 +304,17 @@ class Report:
             self.maintainers[name] = Maintainer(name, email)
             return self.maintainers[name]
 
+    def getPlatformMaintainer(self, name, email):
+        """
+        Retrieve the platform maintainer with the given name and
+        e-mail address.
+        """
+        if self.platform_maintainers.has_key(name):
+            return self.platform_maintainers[name]
+        else:
+            self.platform_maintainers[name] = PlatformMaintainer(name, email)
+            return self.platform_maintainers[name]
+
     def parseIssuesEmail(self):
         """
         Try to parse the issues e-mail file. Returns True if everything was
@@ -317,7 +399,7 @@ class Report:
             time.sleep (30)
 
         return False
-        
+
     # Parses the file $BOOST_ROOT/libs/maintainers.txt to create a hash
     # mapping from the library name to the list of maintainers.
     def parseLibraryMaintainersFile(self):
@@ -329,6 +411,8 @@ class Report:
         name_email_regex = re.compile('\s*(\w*(\s*\w+)+)\s*<\s*(\S*(\s*\S+)+)\S*>')
         at_regex = re.compile('\s*-\s*at\s*-\s*')
         for line in file('../../../libs/maintainers.txt', 'r'):
+            if line.startswith('#'):
+                continue
             m = lib_maintainer_regex.match (line)
             if m:
                 libname = m.group(1)
@@ -350,6 +434,41 @@ class Report:
             pass
         pass
 
+    # Parses the file $BOOST_ROOT/libs/platform_maintainers.txt to
+    # create a hash mapping from the platform name to the list of
+    # maintainers.
+    def parsePlatformMaintainersFile(self):
+        """
+        Parse the platform maintainers file in
+        ../../../libs/platform_maintainers.txt to collect information
+        about the maintainers of the various platforms.
+        """
+        platform_maintainer_regex = re.compile('([A-Za-z0-9_.-]*|"[^"]*")\s+(\S+)\s+(.*)')
+        name_email_regex = re.compile('\s*(\w*(\s*\w+)+)\s*<\s*(\S*(\s*\S+)+)\S*>')
+        at_regex = re.compile('\s*-\s*at\s*-\s*')
+        for line in file('../../../libs/platform_maintainers.txt', 'r'):
+            if line.startswith('#'):
+                continue
+            m = platform_maintainer_regex.match (line)
+            if m:
+                platformname = m.group(2)
+                if self.platforms.has_key(platformname):
+                    platform = self.platforms[platformname]
+                    for person in re.split('\s*,\s*', m.group(3)):
+                        nmm = name_email_regex.match(person)
+                        if nmm:
+                            name = nmm.group(1)
+                            email = nmm.group(3)
+                            email = at_regex.sub('@', email)
+                            maintainer = self.getPlatformMaintainer(name, email)
+                            maintainer.addPlatform(m.group(1), platform)
+                            platform.addMaintainer(maintainer)
+                            pass
+                        pass
+                    pass
+                pass
+        pass
+
     def numFailures(self):
         count = 0
         for library in self.libraries:
@@ -374,6 +493,8 @@ To: boost@lists.boost.org
 Reply-To: boost@lists.boost.org
 Subject: [Report] """
         message += str(self.numFailures()) + " failures on " + branch
+        if branch != 'trunk':
+            message += ' branch'
         message += " (" + str(datetime.date.today()) + ")"
         message += """
 
@@ -381,7 +502,7 @@ Boost regression test failures
 """
         message += "Report time: " + self.date + """
 
-This report lists all regression test failures on release platforms.
+This report lists all regression test failures on high-priority platforms.
 
 Detailed report:
 """
@@ -399,54 +520,107 @@ Detailed report:
 """
             for platform in sorted_keys( self.platforms ):
                 if self.platforms[platform].isBroken():
-                    message += '  ' + platform + '\n'
+                    message += ('  ' + platform + ' ('
+                                + str(len(self.platforms[platform].failures))
+                                + ' failures)\n')
 
-            message += '\n'
+            message += """
+Failures on these "broken" platforms will be omitted from the results below.
+Please see the full report for information about these failures.
+
+"""
    
         # Display the number of failures
-        message += (str(self.numFailures()) + ' failures in ' + 
+        message += (str(self.numReportableFailures()) + ' failures in ' + 
                     str(len(self.libraries)) + ' libraries')
         if any_broken_platforms:
-            message += ' (' + str(self.numReportableFailures()) + ' are from non-broken platforms)'
+            message += (' (plus ' + str(self.numFailures() - self.numReportableFailures())
+                        + ' from broken platforms)')
+                        
         message += '\n'
 
         # Display the number of failures per library
         for k in sorted_keys( self.libraries ):
             library = self.libraries[k]
             num_failures = library.numFailures()
-            message += ('  ' + library.name + ' (' 
-                        + str(library.numReportableFailures()))
+            message += '  ' + library.name + ' ('
+                
+            if library.numReportableFailures() > 0:
+                message += (str(library.numReportableFailures())
+                            + " failures")
+                
             if library.numReportableFailures() < num_failures:
-                message += (' of ' + str(num_failures) 
-                            + ' failures are from non-broken platforms')
+                if library.numReportableFailures() > 0:
+                    message += ', plus '
+                                
+                message += (str(num_failures-library.numReportableFailures()) 
+                            + ' failures on broken platforms')
             message += ')\n'
             pass
 
-        # If we have any broken platforms, tell the user how we're
-        # displaying them.
-        if any_broken_platforms:
-            message += """
-Test failures marked with a (*) represent tests that failed on
-platforms that are considered broken. They are likely caused by
-misconfiguration by the regression tester or a failure in a core
-library such as Test or Config."""
         message += '\n'
 
         # Provide the details for the failures in each library.
         for k in sorted_keys( self.libraries ):
             library = self.libraries[k]
-            message += '\n|' + library.name + '|\n'
-            for test in library.tests:
-                message += '  ' + test.name + ':'
-                for failure in test.failures:
-                    platform = failure.platform
-                    message += '  ' + platform.name
-                    if platform.isBroken():
-                        message += '*'
-                    pass
-                message += '\n'
-                pass
-            pass
+            if library.numReportableFailures() > 0:
+                message += '\n|' + library.name + '|\n'
+                for test in library.tests:
+                    if test.numReportableFailures() > 0:
+                        message += '  ' + test.name + ':'
+                        for failure in test.failures:
+                            platform = failure.platform
+                            if not platform.isBroken():
+                                message += '  ' + platform.name
+                        message += '\n'
+
+        return message
+
+    def composeTestingSummaryEmail(self):
+        """
+        Compose a message to send to the Boost Testing list. Returns
+        the message text if a message is needed, returns None
+        otherwise.
+        """
+        brokenPlatforms = 0
+        for platform in sorted_keys( self.platforms ):
+            if self.platforms[platform].isBroken():
+                brokenPlatforms = brokenPlatforms + 1
+
+        if brokenPlatforms == 0:
+            return None;
+        
+        message = """From: Douglas Gregor <dgregor@osl.iu.edu>
+To: boost-testing@lists.boost.org
+Reply-To: boost-testing@lists.boost.org
+Subject: [Report] """
+        message += str(brokenPlatforms) + " potentially broken platforms on " + branch
+        if branch != 'trunk':
+            message += ' branch'
+        message += " (" + str(datetime.date.today()) + ")"
+        message += """
+
+Potentially broken platforms for Boost regression testing
+"""
+        message += "Report time: " + self.date + """
+
+This report lists the high-priority platforms that are exhibiting a
+large number of regresson test failures, which might indicate a problem
+with the test machines or testing harness.
+
+Detailed report:
+"""
+
+        message += '  ' + self.url + '\n'
+
+        message += """
+Platforms with a large number of failures:
+"""
+        for platform in sorted_keys( self.platforms ):
+            if self.platforms[platform].isBroken():
+                message += ('  ' + platform + ' ('
+                            + str(len(self.platforms[platform].failures))
+                            + ' failures)\n')
 
         return message
 
@@ -594,7 +768,9 @@ if not okay:
 
 # Try to parse maintainers information
 report.parseLibraryMaintainersFile()
+report.parsePlatformMaintainersFile()
 
+# Generate individualized e-mail for library maintainers
 for maintainer_name in report.maintainers:
     maintainer = report.maintainers[maintainer_name]
 
@@ -613,7 +789,27 @@ for maintainer_name in report.maintainers:
         if '--debug' in sys.argv:
             print ('Message text for ' + maintainer.name + ':\n')
             print email
-            
+
+# Generate individualized e-mail for platform maintainers
+for maintainer_name in report.platform_maintainers:
+    maintainer = report.platform_maintainers[maintainer_name]
+
+    email = maintainer.composeEmail(report)
+    if email:
+        if '--send' in sys.argv:
+            print ('Sending notification email to ' + maintainer.name + '...')
+            smtp = smtplib.SMTP('milliways.osl.iu.edu')
+            smtp.sendmail(from_addr = report_author, 
+                          to_addrs = maintainer.email,
+                          msg = email)
+            print 'done.\n'
+        else:
+            print 'Would send a notification e-mail to',maintainer.name
+
+        if '--debug' in sys.argv:
+            print ('Message text for ' + maintainer.name + ':\n')
+            print email
+
 email = report.composeSummaryEmail()
 if '--send' in sys.argv:
     print 'Sending summary email to Boost developer list...'
@@ -626,6 +822,19 @@ if '--debug' in sys.argv:
     print 'Message text for summary:\n'
     print email
 
+email = report.composeTestingSummaryEmail()
+if email:
+    if '--send' in sys.argv:
+        print 'Sending summary email to Boost testing list...'
+        smtp = smtplib.SMTP('milliways.osl.iu.edu')
+        smtp.sendmail(from_addr = report_author, 
+                      to_addrs = boost_testing_list,
+                      msg = email)
+        print 'done.\n'
+    if '--debug' in sys.argv:
+        print 'Message text for testing summary:\n'
+        print email
+
 if not ('--send' in sys.argv):
     print 'Chickening out and not sending any e-mail.'
     print 'Use --send to actually send e-mail, --debug to see e-mails.'

+ 1 - 1
tools/regression/xsl_reports/xsl/v2/issues_page.xsl

@@ -226,7 +226,7 @@ Report time: </xsl:text>
 This report lists all regression test failures on release platforms.
 
 Detailed report: 
-  http://boost.org/regression/</xsl:text>
+        http://beta.boost.org/development/tests/</xsl:text>
         <xsl:value-of select="$source"/>
         <xsl:text>/developer/issues.html
 

粤ICP备19079148号